存在@Singleton OpenEJB bean的几个实例

ale*_*440 5 java testng singleton openejb

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

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

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

}
Run Code Online (Sandbox Code Playgroud)

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();
     }
}
Run Code Online (Sandbox Code Playgroud)

我在测试运行时观察到的问题是,该方法调用object idMySingletonImpl类实例与test()调用该方法的实例不同init().

这种行为似乎很奇怪.

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

第二,为什么容器会实例化多个@Singletons?