我有一个EJB应用程序。它基本上必须在关闭时执行SQL查询。关闭钩子可能会起作用,但这样我就不能使用注入的entitymanager / datasource等。
有没有办法提供可以在EJB bean上调用方法的关闭钩子?
我们的EJB容器是JBoss5.1。
谢谢!
答案 0 :(得分:0)
看起来这样有用: (编辑:由于某种原因,之前发布的答案不适用于JBoss5.1。这有效。)
public class SomeServlet extends GenericServlet {
public void destroy(){
InitialContext ctx = null;
try{
ctx = new InitialContext();
DataSource ds = (DataSource)ctx.lookup("java:/someDataSource");
doStuff();
}catch(Exception e){
log.error("Bad things happened",e);
}
finally{
try {
ctx.close();
} catch (NamingException e) {
e.printStackTrace();
}
}
}//destroy()
}//class
答案 1 :(得分:0)
对于ejbs,该方法与zwei提到的方法相同,但是使用具有注释的方法 PreDestroy
添加初始化或清理ejb