0

Glassfish 3.1.2.2 を使用していますが、Web サービス要求のクライアント IP を取得できません。

次のメンバー宣言があります。

@Resource
WebServiceContext mWebserviceCtx;

ただし、すでにこれを呼び出しています:

MessageContext msgCtx = mWebserviceCtx.getMessageContext();

NullPointerException を取得します。

java.lang.NullPointerException: 
    at org.glassfish.webservices.WebServiceContextImpl.getMessageContext(WebServiceContextImpl.java:86)

このトピックについて質問するほとんどの人は、メッセージ コンテキストから読み取るときに、次のステップで NullPointerException を訴えますが、ここでは 1 つも取得していません...何が間違っていますか?

編集: 要求されたように、コードを小さな例に減らしました。このチュートリアルから構築され、わずかに変更された非常に小さなサンプル プロジェクトです 。 .html

このサンプル コードを使用しても、このエラーを正確に再現できます。

package helloWorld;

import javax.annotation.Resource;
import javax.ejb.Stateless;
import javax.ws.rs.Path;
import javax.ws.rs.GET;
import javax.ws.rs.Produces;
import javax.xml.ws.WebServiceContext;
import javax.xml.ws.handler.MessageContext;

@Stateless
@Path("helloworld")
public class HelloWorld {

    @Resource
    WebServiceContext mWebserviceCtx;

    public HelloWorld() {
    }

    @GET
    @Produces("text/html")
    public String getHtml() {
        try {
            MessageContext msgCtx = mWebserviceCtx.getMessageContext();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        return "<html><body><h1>Hello, World!!</body></h1></html>";
    }
}

EDIT2:私の回答で指摘したように、これはWebサービスではなくRESTサービスであり、これは私の混乱の一部でした(フレームワークはこの点で同様の方法で両方を処理すると想定しましたが、そうではないことが判明しました)。

4

1 に答える 1