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サービスであり、これは私の混乱の一部でした(フレームワークはこの点で同様の方法で両方を処理すると想定しましたが、そうではないことが判明しました)。