当前位置: 首页 > 知识库问答 >
问题:

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

齐飞星
2023-03-14

我有一个无状态EJB,并通过注释@webservice为它定义了一个web服务endpoint(如下所示)。我使用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 webserviceendpoint的http会话的超时。我尝试了所有的方法,但是由于该程序在glassfish上部署为ejb-jar,所以没有web.xml。如何更改EJB web服务endpoint的http会话超时?附注。我不能使用有状态EJB,因为我要使用web服务endpoint。

共有1个答案

微生景胜
2023-03-14

我算是解决了!我找不到任何用于更改会话超时的全局参数,但可以通过httpsession.setMaxInActiveInterval(int interval)为每个会话更改它。虽然基于Java文档,该方法得到的时间间隔是秒,但它的工作时间显然是毫秒。

 类似资料:
  • 本文向大家介绍ASP.NET如何使用web服务的会话状态,包括了ASP.NET如何使用web服务的会话状态的使用技巧和注意事项,需要的朋友参考一下 在web服务中要用到ASP.NET中的会话对象,有2件事情需要做。   1.WebService 类需要继承System.Web.Services.WebService类   2.WebMethod中的EnableSession属性值应该设置为true

  • 对于有状态会话bean(SFSB)和无状态会话bean(SLSB)的用法,我有点困惑。 我知道SFSB与客户保持状态。这很有帮助:什么时候使用有状态会话bean而不是无状态会话bean? 这里和许多其他地方提供的示例是SFSB的购物车。 “如果一个任务需要一系列方法调用(不止一次),并且您需要保留以前的结果以在下一次调用中使用它们,那么就可以使用SFSB”--Source。这将更像是签出(页面之间

  • 本文向大家介绍由于HTTP是无状态的,那么如何维护Web浏览器和Web服务器之间的会话?,包括了由于HTTP是无状态的,那么如何维护Web浏览器和Web服务器之间的会话?的使用技巧和注意事项,需要的朋友参考一下 HTTP是一种“无状态”协议,这意味着每次客户端检索网页时,客户端都会打开与Web服务器的单独连接,并且服务器不会自动保留先前客户端请求的任何记录。 维护Web客户端和服务器之间的会话 现

  • 假设我有一个名为db utils的简单库,它有一个CrudService CDIBean(RequestScope),我的web应用程序使用它来执行CRUD操作。 我还有一个名为graddb的EJB项目,它从数据库映射实体。Grad db还具有用于在db utils的CrudService中设置entityManager的生产者。 我已经试过了,显然效果不错。我的问题是:这是一种糟糕的做法吗?在无

  • Drools中无状态会话和有状态会话的区别是什么。我浏览了不同的文件,发现下面 无状态会话执行规则时事实的任何更改都不会被规则引擎察觉,因此如果任何规则被修改,则不会发生其他规则的重新激活。 我试图执行下面的规则,发现了相同的结果

  • 在我以前做编码的时候,我主要使用无状态的会话bean,所有跨页遍历所需的信息都放在HTTP Session对象中。当时(甚至现在),我从来没有理解过EJB的“USP”对于“业务层”实现是“透明的”和“安全的”,它处理骨架和存根以及其他行话的各种方法,这些行话是以易用性/安全性为名的矫枉过正的伪装。我只是想知道,如果可以通过SLSB+HttpSession实现同样的功能,那么为什么要使用有状态会话E