gpt4 book ai didi

java - 即使 Apache CXF 存在依赖性,也使用 JAX-WS stub

转载 作者:行者123 更新时间:2023-12-01 09:51:29 25 4
gpt4 key购买 nike

WS 客户端,当我调用我的 WS 时它可以工作当我创建 stub 时,我得到一个 SEIStub impl。

然后这是 Apache CXF 中另一个 WS 的新客户端。我们将依赖项放入 pom 中,然后就会发生不好的事情:当我使用 JAX-WS stub 调用第一个 WS 时,我现在得到一个 JaxWSClientProxy,Apache CXF 似乎成为默认实现。我无法使用为 WSBindingProvider 完成的特殊 header 函数而不是 JaxWsClientProxy

使用 jaxws 生成客户端:

            <plugin>
<groupId>org.jvnet.jax-ws-commons</groupId>
<artifactId>jaxws-maven-plugin</artifactId>
<version>${jaxws.plugin.version}</version>
<executions>
<execution>
<goals>
<goal>wsimport</goal>
</goals>
<configuration>
<packageName>fr.xxxx.commons.client.stub.y</packageName>
<sourceDestDir>${ws.java.target}</sourceDestDir>
<extension>true</extension>
<wsdlDirectory>${project.parent.basedir}/src/main/wsdl/v2.1/</wsdlDirectory>
<wsdlFiles>
<wsdlFile>XXXXWebServices_v2.1.wsdl</wsdlFile>
</wsdlFiles>
<xnocompile>false</xnocompile>
<vmArgs>
<vmArg>-Djavax.xml.accessExternalDTD=all</vmArg>
<vmArg>-Djavax.xml.accessExternalSchema=all</vmArg>
</vmArgs>
</configuration>
</execution>
</executions>
</plugin>

错误所在的 JAX-WS 实例(在类型转换上)

xStub = new XWebServicesV21(url, qnameXWebServices);

xGetPort.set(xStub.getAutogenerate());

generateHeader(aApplicationID, aUserId, (WSBindingProvider) xGetPort.get(), xUrl);

如何强制 JAXWS impl?我使用 JDK8 和 Apache CXF 2.3.11 。

最佳答案

Sun的jaxws使用com.sun.xml.ws.developer.WSBindingProvider,但CXF不使用它。 org.apache.cxf.jaxws.JaxWsClientProxy 实现 javax.xml.ws.BindingProvider

因此您无法将 xGetPort.get() 强制转换为 WSBindingProvider。为了以与 WSBidingProvider.setOutboundHeaders 类似的方式使用 CXF 添加肥皂 header ,请检查 documentation或使用 CXF WS-Security 支持生成 SOAP 消息的标准身份验证 header

如果您想使用 Sun 的 jaxws,请确保 jar 之前位于类路径中,或者删除 cxfjaxws 依赖项。

关于java - 即使 Apache CXF 存在依赖性,也使用 JAX-WS stub ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37572411/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com