我有一个无状态的 EJB,并通过注释 @WebService 为它定义了一个 Web 服务端点(如下所示)。我使用 HTTP 会话和 WebServiceContext 管理身份验证和会话。代码工作正常。
@Stateless
@WebService
public class UserManager implements UserManagerRemote{
@Resource
private WebServiceContext webServiceContext;
@Override @WebMethod
public boolean login(String username, String password){
if(!checkUser(username, password))
return false;
HttpSession session = HttpServletRequest)webServiceContext.getMessageContext().
get(MessageContext.SERVLET_REQUEST)).getSession();
session.setAttribute("username", username);
return true;
}
@Override @WebMethod
public int doSomthing(){
HttpSession session = ((HttpServletRequest)webServiceContext.getMessageContext().
get(MessageContext.SERVLET_REQUEST)).getSession();
if(session == null)
return -1;
//do the thing and return the result
return 1;
}
}
我需要做的是更改 EJB Web 服务端点的 http 会话超时。我已经尝试了所有方法,但是由于程序在 glassfish 上部署为 ejb-jar,因此没有 web.xml。如何更改 EJB Web 服务端点的 http 会话超时?PS 我不能使用有状态 EJB,因为我将使用 Web 服务端点。