我希望在部署应用程序(使用Business Logic,EJB和客户端,Web的企业应用程序)后立即执行某些操作。 例如,我想让一些实体处于持久状态,或者创建一个文件。 我怎么能这样做?
感谢。
答案 0 :(得分:14)
配置SerlvetContextListener
并覆盖contextInitilized()
在您的Web应用程序说明中,web.xml
<web-app ...>
<listener>
<listener-class>com.someCompany.AppNameServletContextListener</listener-class>
</listener>
</web-app
package com.someCompany;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class AppNameServletContextListener implements ServletContextListener{
@Override
public void contextDestroyed(ServletContextEvent arg0) {
System.out.println("ServletContextListener destroyed");
}
@Override
public void contextInitialized(ServletContextEvent arg0) {
System.out.println("ServletContextListener started");
// do the things here
}
}
答案 1 :(得分:0)
“默认”方式是使用带有init()方法的servlet。然后在servlet-descriptor中将此servlet标记为load-on-startup 1:
示例:
<servlet-name>Seam Resource Servlet</servlet-name>
<servlet-class>org.jboss.seam.servlet.SeamResourceServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
一旦部署了servlet(在部署EJB之后发生),就会调用init()方法,您可以执行所需的任务。
答案 2 :(得分:0)
使用现有的Web应用程序,最简单和最简单的方法是使用ServletContextListener,否则在EJB 3.1中您可以使用自动计时器或启动单例会话bean。