我可以在 Web 服务中使用 WebServiceContext 和方法 getMessageContext() 来获取 HttpSession 对象以进行保存并获取会话值吗?我试图在这样的网络服务中使用 HttpSession:
@WebService
@SOAPBinding(style = SOAPBinding.Style.RPC, use = SOAPBinding.Use.LITERAL, parameterStyle = SOAPBinding.ParameterStyle.WRAPPED)
public class DummyWs {
@Resource
private WebServiceContext wsContext;
@WebMethod(operationName = "sayHello")
public String sayHello(@WebParam(name = "name") String name) {
return "hello " + name;
}
@WebMethod(operationName="setValue")
public void setValue(@WebParam(name = "value") String newValue) {
MessageContext mc = wsContext.getMessageContext();
HttpSession session = ((javax.servlet.http.HttpServletRequest)mc.get(MessageContext.SERVLET_REQUEST)).getSession();
session.setAttribute("value", newValue);
}
@WebMethod(operationName="getValue")
public String getValue() {
MessageContext mc = wsContext.getMessageContext();
HttpSession session = ((javax.servlet.http.HttpServletRequest)mc.get(MessageContext.SERVLET_REQUEST)).getSession();
return (String)session.getValue("value");
}
}
我看到了使用 @Stateful 注释的其他示例,但我不使用它。有必要使用@Stateful 注解吗?如果我不使用此注释会发生什么?