如何更改无状态EJB的Web服务端点的http会话超时?

时间:2013-04-29 07:06:45

标签: java ejb

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

1 个答案:

答案 0 :(得分:0)

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