ジャージーを使用してRESTWebサービスを開発していますが、ユーザーを認証するためにWebサービスメソッドからサーブレットを呼び出す必要があります。以下のコードを実行すると例外が発生します。
@Path("/server")
public class WebServer {
@Resource
private WebServiceContext context;
@POST
@Path("/post")
@Consumes(MediaType.APPLICATION_JSON)
public Response createTrackInJSON(Track track) throws IOException, ServletException {
ServletContext servletContext = (ServletContext) context.getMessageContext()
.get(MessageContext.SERVLET_CONTEXT); // Here I am getting NPE
HttpServletRequest request = (HttpServletRequest) context.getMessageContext()
.get(MessageContext.SERVLET_REQUEST);
HttpServletResponse response = (HttpServletResponse) context.getMessageContext()
.get(MessageContext.SERVLET_RESPONSE);
request.setAttribute("username", track.getUsername());
request.setAttribute("password", track.getPassword());
servletContext.getRequestDispatcher("/LoginAction").include(request, response);
String loginStatus = request.getParameter("loginStatus");
String Token = request.getParameter("Token");
String result = ""+track;
return Response.status(200).entity(result).build();
}
}
例外は次のとおりです。
com.webservices.server.WebServer.createTrackInJSON(WebServer.java:36)のjava.lang.NullPointerException...servletContextがnullです
Webサービスでサーブレットコンテキストを取得する方法を決定するのを手伝ってください。