1

我有一个无状态的 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 服务端点。

4

1 回答 1

0

我有点解决它!我找不到任何用于更改会话超时的全局参数,但可以通过 HttpSession.setMaxInactiveInterval(int interval) 为每个单独的会话更改它。尽管基于Java 文档,此方法以秒为单位获得间隔,但显然它以毫秒为单位工作。

于 2013-04-29T11:15:10.503 回答