我有一个现有的SOAP服务,工作正常。所以,我必须进行更改才能阅读specialHeader
。我为SOAPHandler<SOAPMessageContext>
创建了自己的处理程序实现,然后必须在端点中注册。正如您在下面看到的,我添加了jaxws:handlers
部分,但我的Web服务现在抛出错误。
<jaxws:endpoint id="serviceWS"
implementor="#beanWS" address="/service">
<jaxws:inInterceptors>
<bean class="customInterceptor">
<constructor-arg index="0">
<map>
<entry key="action" value="UsernameToken" />
<entry key="passwordType" value="PasswordText" />
</map>
</constructor-arg>
<constructor-arg index="1" type="String" value="${username}" />
<constructor-arg index="2" type="String" value="${password}" />
</bean>
</jaxws:inInterceptors>
<jaxws:handlers>
<ref bean="customHandler" />
</jaxws:handlers>
</jaxws:endpoint>
服务给我这个错误:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"/>
<soap:Body>
<soap:Fault>
<faultcode>soap:Server</faultcode>
<faultstring>No binding operation info while invoking unknown method with params unknown.</faultstring>
</soap:Fault>
</soap:Body>
</soap:Envelope>
我可以看到拦截器和处理程序可以执行。之后服务抛出错误。另外,我一直在测试处理程序,我的服务运行正常。 inInterceptors
和handlers
可以一起工作吗?或者有什么特别的技巧吗?