[英]Problems when calling Servlet from Restful webservice
我正在使用Jersey開發REST Web服務,我需要從Web服務方法調用servlet來驗證用戶。 運行以下代碼時出現異常:
@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服務中獲取servlet上下文。
使用@Context注釋,並注入正確的類。 您還可以直接注入servlet請求和響應對象。
import jax.ws.rs.core.Context;
@Path("/server")
public class WebServer {
@Context
private ServletContext context;
@Context
private HttpServletRequest request;
@Context
private HttpServletResponse response;
// ...
}
@Context
public void setServletContext(ServletContext context) {
// ...
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.