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

Java 如何更改无状态EJB的web服务端点的http会话超时?,java,ejb,Java,Ejb,我有一个无状态EJB,并且通过注解@WebService(如下所示)为它定义了一个web服务端点。我使用HTTP会话和WebServiceContext管理身份验证和会话。代码工作正常 @Stateless @WebService public class UserManager implements UserManagerRemote{ @Resource private WebServiceContext webServiceContext; @Override @

我有一个无状态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;
    }

}
我需要做的是更改EJBWebService端点的http会话超时。我已经尝试了所有的方法,但是由于该程序在glassfish上部署为ejb jar,因此没有web.xml。如何更改EJB web服务端点的http会话超时?
另外,我不能使用有状态EJB,因为我要使用web服务端点。

我解决了它!我找不到任何用于更改会话超时的全局参数,但可以通过HttpSession.setMaxInactiveInterval(int interval)为每个会话更改该参数。虽然基于此方法获取的时间间隔以秒为单位,但显然是以毫秒为单位。

将其打包为WAR如何?打包结构为EAR,它包含一个WAR文件用于其他用途。我在WAR中更改了会话超时,但对EJBIs不起作用—真的创建了会话吗?是的,当您访问HttpSession时,会自动为web服务客户端创建会话。(web服务客户端应该启用cookies)不过,为什么不把它打包成一个WAR呢?一只耳朵可以容纳多场战争。