我正在使用wsdl2java Gradle plugin和Spring Boot CXF JAX-WS Starter来实现RPC /文字SOAP服务,该消息中的多个部分都包含显式SOAP头。当我向包含显式SOAP标头的非空值的服务发送示例请求时,我希望Apache CXF能够解析该值并将其传递给我的服务实现。但是,我观察到null
被传递了。
我已经提供了一个sample Gradle project来说明问题。使用./gradlew bootrun
运行它,然后将以下SOAP请求发送到http://localhost:8080/services/port
:
<soapenv:Envelope
xmlns:nam="namespace 2"
xmlns:nam1="namespace 1"
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header>
<header>
<nam:element-1>element 1</nam:element-1>
</header>
</soapenv:Header>
<soapenv:Body>
<nam1:operation>
<element-2>element 2</element-2>
</nam1:operation>
</soapenv:Body>
</soapenv:Envelope>
预期的控制台输出应类似于:
Header: namespace._2.Header@12345678
Element 2: element 2
但是,它是这样的:
Header: null
Element 2: element 2