0
我們有一個servlet如下:在Servlet生成的線程中使用EJB - 不好的做法?
public class CacheRefresher extends HttpServlet {
private static final long START_TIMEOUT = 120*1000;
public void init(ServletConfig servletConfig) throws ServletException {
super.init(servletConfig);
new Thread(new Worker()).start();
}
private class Worker implements Runnable {
public Worker() { }
public void run() {
try {
Thread.sleep(START_TIMEOUT);
} catch (InterruptedException e) {
}
while(true) {
MyService myService = null;
try {
myService = ServiceFactory.getInstance().getMyService();
myService.doSomething();
} catch (Exception ex){
ex.printStackTrace();
}finally {
ServiceFactory.getInstance().releaseMyService(myService);
}
try {
Thread.sleep(timeout);
} catch (InterruptedException e) {
}
}
}
}
}
其目的是定期調用的服務。這個Servlet只有一個實例,它將在服務器啓動時創建。 MyService是一個EJB。
這有多糟糕?我知道從EJB產生線程是不允許的,但其他方式呢?服務器關閉會發生什麼?
我知道的EJB 3.1的定時器,在其他項目中使用它們,儘管如此,這是令人遺憾的ejb 3.1。謝謝你的答案。 –