【问题标题】:InitialContext.lookup(ejbMappedName) return a new instance or an old same instanceInitialContext.lookup(ejbMappedName) 返回一个新实例或一个旧的相同实例
【发布时间】:2013-02-18 16:59:47
【问题描述】:

对于一个有状态的 EJB,如果我使用 InitialContext.lookup(itsMappedName) 获取它的引用,对于 (InitialContext.lookup(itsMappedName)) 的每次调用,它将返回一个新的有状态 EJB 还是相同的有状态 EJB?

【问题讨论】:

    标签: ejb stateful initial-context


    【解决方案1】:
    public class SFEJB implements EJBRemote{
      //.....
    }
    
    public class Class1{
      void method1{
        InitialContext ctx = new InitialContext(env);            
        EJBRemote testEJB= (EJBRemote)ctx.lookup(mappedName#fullclassname);
        //.....
      }
    }
    

    我发现它将为每个 initialcontext.lookup(mappedName#fullclassname) 返回一个新的有状态 EJB (SFEJB)。
    起初,我认为“有状态 EJB”中的“有状态”意味着对于同一个 Web 客户端,每次调用 initialContext.lookup(mappedName#fullclassname) 都会得到相同的有状态 EJB,但现在我知道“有状态”只是意味着对于 testEJB,每个方法调用都会调用同一个 SFEJB 实例(因此处于一个状态)。
    那么 testEJB 是 SFEJB 的 EJB Client 吗? (SFEJB 记得 testEJB)

    【讨论】:

    • 哦,我发现更复杂,如果 ejb 是无状态的,那么每次 ctx.lookup(mappedName#fullclassname) 返回相同的代理!有什么错误吗??
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-09
    • 1970-01-01
    相关资源
    最近更新 更多