0

WSDL から生成された JAX-WS 2.0 Web サービス実装があります。

論理ハンドラー実装で Web サービス操作名にアクセスする必要があります。

これを取得するために以下を使用しましたが、常に null を返します。

context.get(MessageContext.WSDL_OPERATION);

この問題を解決するためにあなたの誰かが私を助けることができれば、それは素晴らしいことです.

私のサーバーは WAS 7.0 で、開発 IDE は RAD 8 です。

前もって感謝します。

4

3 に答える 3

2

SOAPAction ヘッダーが必要で、(私のように) Web サービス名が含まれている場合は、これを使用して印刷できます。

private void inLogger(SOAPMessageContext context){
    HttpServletRequest req = (HttpServletRequest)context.get(MessageContext.SERVLET_REQUEST);
    System.out.println(req.getHeader("SOAPAction"));
}
于 2013-02-18T08:09:14.420 に答える
0

あなたはこの方法を試すことができます:

1)requestContextを介してパラメータを設定します。

 Map<String, Object> requestCtx = dispatcher.getRequestContext();
 requestCtx.put("operationName", "anyOperation");

2)WSLogicalHandlerのhandleMessage内のこのパラメーターを確認します。

 public boolean handleMessage(LogicalMessageContext messageContext) {
    boolean isCustomOperation = messageContext.containsKey("operationName");
    if (isCustomOperation) {
    // do smth..
    }
    return true;
 }
于 2013-03-17T10:47:16.327 に答える
0

ハンドラーが実装している場合は、次のLogicalHandler<LogicalMessageContext>ように実行できます。

((QName)context.get( LogicalMessageContext.WSDL_OPERATION )).getLocalPart();

これは、呼び出されている操作の名前を返します。

于 2015-01-03T18:16:33.550 に答える