java – 使用CXF时缺少SoapAction标头

前端之家收集整理的这篇文章主要介绍了java – 使用CXF时缺少SoapAction标头前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个来自外部WS的WSDL文件,我正在连接到它.我正在尝试使用CXF(与JAX-WS一起使用).但我从其他系统得到错误.所以我决定看一下我们发送到该系统的数据,唯一不同的是CXF设置了空的SOAPAction http头.

我进行了一些阅读,看起来只有已知的解决方案直接指向WSDL.但我已经这样做了.

任何人都有这方面的线索?

<bean id="object" class="xxx.XxxObject" factory-bean="objectFActory"
      factory-method="create"/>

<bean id="objectFActory" class="org.apache.cxf.jaxws.JaxWsProxyfactorybean">
    <property name="serviceClass" value="xxx.XxxObject"/>
    <property name="wsdlLocation" value="http://blebleble"/>
    <property name="address" value="http://blebleble"/>
    <property name="username" value="user"/>
    <property name="password" value="password"/>
    <property name="properties">
        <map>
            <entry key="javax.xml.ws.session.maintain" value-type="java.lang.Boolean" value="true"/>
        </map>
    </property>
</bean>

头:

POST /somepath HTTP/1.1
Content-Type: text/xml; charset=UTF-8
Accept: */*
Authorization: Basic <randomhex>
SOAPAction: ""
User-Agent: Apache CXF 2.7.6
Cache-Control: no-cache
Pragma: no-cache
Host: somehost:8080
Connection: keep-alive
Content-Length: 2791

解决方法

这些都不是CXF特有的.它是所有标准的JAX-WS.

您可以使用@WebMethod批注的action属性来设置SOAP操作.例如

@WebMethod(operationName = "TestOperation",action="http://example.org/TestOperation")

如果您使用wsimport从WSDL生成工件,则应该已在@WebService带注释的界面中设置此设置.

猜你在找的Java相关文章