我创建了一个简单的EJB3 WebService,它应该被SOAPHandler拦截。
我在构建期间没有出现错误\警告(我曾经得到类路径错误,它们都已修复),而且我能够部署和调用WS,但是服务器完全忽略了HandlerChain部分,它永远不会受到影响。
我的代码是:
处理程序:
public class SecuritySOAPHandler implements SOAPHandler<SOAPMessageContext> { ... }
豆豆:
@Stateless
@WebService(
portName = "ExampleWSPort",
serviceName="ExampleWS"
)
@HandlerChain( file="handlerchain.xml")
public class ExampleWS {
public ExampleWS()
{
}
@WebMethod
public String first(String input)
{
return input + " Got";
}
handlerchain.xml:
<?xml version="1.0" encoding="UTF-8"?>
<jws:handler-chains xmlns:jws="http://java.sun.com/xml/ns/javaee">
<!-- Note: The '*" denotes a wildcard. -->
<jws:handler-chain name="MyHandlerChain">
<jws:protocol-bindings>##SOAP11_HTTP ##ANOTHER_BINDING</jws:protocol-bindings>
<jws:port-name-pattern
xmlns:ns1="http://handlersample.samples.ibm.com/">ns1:MySampl*</jws:port-name-pattern>
<jws:service-name-pattern
xmlns:ns1="http://handlersample.samples.ibm.com/">ns1:*</jws:service-name-pattern>
<jws:handler>
<jws:handler-class>com.soaphandlers.SecuritySOAPHandler</jws:handler-class>
</jws:handler>
</jws:handler-chain>
</jws:handler-chains>
任何帮助表示赞赏。 感谢
答案 0 :(得分:1)
我遇到了类似的问题并发现了以下内容:
显然绝对或类路径不能很好地工作,所以要么将xml放在与ExampleWS类相同的文件夹中,要么使用../,例如,在我的情况下,我有这样的:< / p>
@HandlerChain(file="../../../../../../../META-INF/ws-handler-config.xml")
来自示例的jws:名称空间也给出了问题所以我只是简单地说:
<handler-chains xmlns="http://java.sun.com/xml/ns/javaee">
<handler-chain>
<handler>
<handler-class>util.interceptors.SOAPLoggingHandler</handler-class>
</handler>
</handler-chain>
</handler-chains>
通过这些更改,它可以正常工作!