You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Quarkus CXF Extension实现HTTPS/SOAP服务客户端求助

在Quarkus 2.16中使用quarkus-cxf构建带PKCS12证书的HTTPS SOAP客户端

1. 添加必要依赖

在pom.xml中引入quarkus-cxf核心依赖、HTTP传输依赖,以及用于生成客户端代码的插件:

<dependencies>
    <dependency>
        <groupId>io.quarkiverse.cxf</groupId>
        <artifactId>quarkus-cxf</artifactId>
        <version>2.16.0.Final</version>
    </dependency>
    <dependency>
        <groupId>io.quarkiverse.cxf</groupId>
        <artifactId>quarkus-cxf-rt-transports-http-hc</artifactId>
        <version>2.16.0.Final</version>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>io.quarkiverse.cxf</groupId>
            <artifactId>quarkus-cxf-codegen-plugin</artifactId>
            <version>2.16.0.Final</version>
            <executions>
                <execution>
                    <id>generate-soap-client</id>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>wsdl2java</goal>
                    </goals>
                    <configuration>
                        <wsdlOptions>
                            <wsdlOption>
                                <wsdl>${project.basedir}/src/main/resources/your-service.wsdl</wsdl>
                                <extraargs>
                                    <extraarg>-client</extraarg>
                                    <extraarg>-p</extraarg>
                                    <extraarg>com.your.package.soap.client</extraarg>
                                </extraargs>
                            </wsdlOption>
                        </wsdlOptions>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

2. 配置PKCS12证书与客户端参数

在src/main/resources/application.properties中配置密钥库、信任库及客户端基础信息:

# PKCS12密钥库配置
quarkus.cxf.client.your-custom-client.ssl.key-store=classpath:your-cert.p12
quarkus.cxf.client.your-custom-client.ssl.key-store-type=PKCS12
quarkus.cxf.client.your-custom-client.ssl.key-store-password=your-cert-passwd

# 信任库可复用同一份PKCS12文件(若包含服务端信任链)
quarkus.cxf.client.your-custom-client.ssl.trust-store=classpath:your-cert.p12
quarkus.cxf.client.your-custom-client.ssl.trust-store-type=PKCS12
quarkus.cxf.client.your-custom-client.ssl.trust-store-password=your-cert-passwd

# 客户端核心配置
quarkus.cxf.client.your-custom-client.wsdl=classpath:your-service.wsdl
quarkus.cxf.client.your-custom-client.address=https://remote-soap-service.com/endpoint

3. 注入并调用SOAP客户端

直接通过CDI注入生成的客户端接口,即可发起远程调用:

import com.your.package.soap.client.YourServicePortType;
import jakarta.inject.Inject;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;

@Path("/soap-demo")
public class SoapClientResource {

    @Inject
    YourServicePortType serviceClient;

    @GET
    @Path("invoke")
    public String callRemoteService() {
        // 调用生成的SOAP服务方法
        return serviceClient.yourServiceOperation("test-param");
    }
}

注意事项

  • 替换所有your-*占位符为实际项目的证书文件名、密码、WSDL路径、包名等信息
  • 若服务端证书不在你的PKCS12信任链中,需单独准备信任库文件并更新配置
  • 确保PKCS12文件放置在src/main/resources目录下,或使用绝对路径指定文件位置

内容的提问来源于stack exchange,提问作者Claudio Zamboni

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 08:40:18