6

AxisHandlerの「handleMessage」メソッドで「HttpServletRequest」を取得しようとしています。私のAxisHandlerは、以下のコードに示すように「SOAPHandler」を実装しています。

「InBoundDirection」で「HttpServletRequest」を取得する必要がありますが、「null」が返されます。

SOAPHandlerの「InBoundDirection」で「HttpServletRequest」を取得するにはどうすればよいですか?

ありがとうございました..

@Override
public boolean handleMessage(SOAPMessageContext soapMessageContext) {
    boolean direction = ((Boolean) soapMessageContext.get(SOAPMessageContext.MESSAGE_OUTBOUND_PROPERTY)).booleanValue();        
    if (direction) {
        System.out.println("direction = outbound");
    } else {
        System.out.println("direction = inbound");
        HttpServletRequest servletReq=(HttpServletRequest) soapMessageContext.get(MessageContext.SERVLET_REQUEST);
        // BECAUSE servletReq is null the following line returns a "nullPointerException"
        System.out.println(servletReq.getRemoteHost()); 
    }
    return true;
}
4

1 に答える 1

0

非常に良い説明については、この投稿jax ws gets client ipを参照してください。一般的なハンドラー (私の場合はクライアント証明書を抽出するため) が必要な場合は、EE コンテナーでホストされる Web サービスと SE でホストされるコンテナーの両方に同じロジックを実装する必要があるようです。

于 2016-07-22T13:47:52.867 に答える