2012-10-28 52 views
2

我创建了一个简单的EJB3 WebService,它应该被SOAPHandler拦截。 我在构建过程中没有收到任何错误\警告(我曾经得到类路径错误,它们都是固定的),并且我能够部署和调用WS,但服务器完全忽略了HandlerChain部分,并且它永远不会获取击中。 我的代码是:
的处理程序:Weblogic 10.3.6忽略@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

你的处理程序的实现在哪里? – kolossus

+0

我假设它只是 返回true; (对于getHeaders()为null) SOAPHandler 接口方法。 – Stas

回答

1

我有类似的问题,发现如下:

  • 显然绝对或类路径中无法很好地工作,所以要么把XML在同一个文件夹中ExampleWS类或使用../,例如,在我来说,我有这样的:

    @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>

有了这个变化,它的工作原理!

相关问题