我有一个看起来像这样的课程:
@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?
答案 0 :(得分:1)
您的界面是@Remote还是本地?如果它的@Local将其更改为@Remote:
" EJB规范不保证何时出现任何行为 您可以使用本地业务接口来实现模块间的连接 通信,即使这些模块是其中的一部分 相同的Application Server / JVM。"
https://coderanch.com/mobile/t/608212/java/instances-Singleton-EJB