我有一个无状态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会话超时? 附:我不能使用有状态EJB,因为我将使用Web服务端点。
答案 0 :(得分:0)
我有点解决它!我找不到任何用于更改会话超时的全局参数,但可以通过HttpSession.setMaxInactiveInterval(int interval)为每个单独的会话更改它。虽然基于Java documentation这个方法获得了以秒为单位的间隔,但它明显地工作了几毫秒。