WS客户端,它在我调用WS时起作用 当我创建我的存根时,我得到一个 SEIStub impl。
然后,这是Apache CXF中另一个WS的新客户端。我们将依赖放在我们的pom中,然后发生了不好的事情:
当我用我的JAX-WS存根调用我的第一个WS时,我现在得到JaxWSClientProxy
,Apache CXF似乎成为默认的实现。我不能使用我为WSBindingProvider而不是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。
答案 0 :(得分:1)
Sun的jaxws使用com.sun.xml.ws.developer.WSBindingProvider
,但CXF不使用它。 org.apache.cxf.jaxws.JaxWsClientProxy
实施javax.xml.ws.BindingProvider
因此,您无法将xGetPort.get()
投射到WSBindingProvider
。为了使用CXF添加soap标头,方式与WSBindingProvider.setOutboundHeaders
检查documentation或使用CXF WS-Security支持生成SOAP消息的标准身份验证标头类似
如果您想使用Sun的jaxws,请确保之前的jar文件位于类路径中,或删除cxfjaxws依赖项。