2

SOAPHandler によってインターセプトされる単純な EJB3 WebService を作成しました。ビルド中にエラー\警告は表示されず (以前はクラスパス エラーが発生していましたが、すべて修正されています)、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>

どんな助けでも感謝します。ありがとう

4

1 に答える 1

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>

この変更により、機能します!

于 2013-01-31T16:05:29.397 に答える