存在@Singleton OpenEJB bean的几个实例

时间:2017-07-05 13:28:17

标签: java singleton testng openejb

我有一个看起来像这样的课程:

@Singleton
public class MySingletonImpl implements MySingleton{
    @Override
    public void init(){
        ...
    }

    @Override
    public void test(){
        ...
    }

}

ApplicationComposer testng测试中调用它,如下所示:

@Listeners(ApplicationComposerListener.class)
public class MyTest{
     @EJB
     MySingleton mySingleton;

     @Module
     @Classes(cdi=true, value={MySingletonImpl.class})
     public EjbModule ejbModule() throws Exception{
          return new EjbModule(new EjbJar());
     }

     @BeforeClass
     public void setup(){
          mySingleton.init();
     }

     @Test
     public void test(){
          mySigleton.test();
     }
}

测试运行时我观察到的问题是object id类实例的MySingletonImpl调用的test()方法与实例的init()类不同调用@Singleton方法。

这种行为似乎很奇怪。

首先,如何解决我的问题?我想初始化然后在同一个对象上调用方法,而不是同一个类的不同实例。

其次,为什么容器会实例化多个g = sns.factorplot(x="time", y="pulse", hue="kind", col="diet", data=exercise, legend_out=False) s?

1 个答案:

答案 0 :(得分:1)

您的界面是@Remote还是本地?如果它的@Local将其更改为@Remote:

  

" EJB规范不保证何时出现任何行为     您可以使用本地业务接口来实现模块间的连接     通信,即使这些模块是其中的一部分     相同的Application Server / JVM。"

https://coderanch.com/mobile/t/608212/java/instances-Singleton-EJB