我有个单例模式(程序运行时永远存在),里面有一个线程任务间隔的执行任务,在单例初始化时,lookup唯一个无状态EJB实例(本地),然后在线程任务间隔调用此EJB实例接口,也就是说一直使用单例初始化时产生无状态EJB实例的引用(而不是每次线程任务来临时马上lookup临时无状态EJB实例,在调用此EJB实例接口),这样做有没有问题,会不会出现一段时间后无状态EJB实例失效的问题,或者其他服务也调用(lookup)此无状态EJB会和这个一直存在的无状态EJB实例产生冲突?代码:
public class TestImpl {private static TestImpl TestImplInstatnce = null;
private Thread senderThread;
private TestImpl testbean= null;public synchronized static final TestImpl getInstance() {
if (TestImplInstatnce == null) {
TestImplInstatnce = new TestImpl();
} return TestImplInstatnce;
}
protected SmsSendImpl() {
testbean= (TestImpl ) BoClient.getClient("TestBean");//初始化无状态EJB(look up)
init();
this.startup();
}protected void init() {
done = false;
senderThread = new Thread() {
public void run() {
sendMessages(this);
}
};
senderThread.setName("sender ");
senderThread.setDaemon(true);
}public void startup() {
senderThread.start();
}private void sendMessages(Thread thisThread) {
while (!done && (senderThread == thisThread)) {testbean.testDoIt()//调用EJB接口}
}}