这个问题已经在这里有一个答案:
- 采用特殊自动启动的servlet来初始化启动和共享应用数据 1个回答
我想,只要我的应用程序(业务逻辑,EJB企业应用程序和客户端,网络)部署执行某些操作。 例如,我想作出一些实体处于持续状态,或者以其他方式创建一个文件。 我怎样才能做到这一点?
谢谢。
这个问题已经在这里有一个答案:
我想,只要我的应用程序(业务逻辑,EJB企业应用程序和客户端,网络)部署执行某些操作。 例如,我想作出一些实体处于持续状态,或者以其他方式创建一个文件。 我怎样才能做到这一点?
谢谢。
配置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
}
}
“默认”的方法是有用init()方法的servlet。 然后在servlet的描述你标记这个servlet作为负载上启动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()方法被调用,您可以执行你想要的任务。
随着你的耳朵现在的Web应用程序,最简单,最简单的办法是使用的ServletContextListener,否则在EJB 3.1,你可以使用自动定时器或启动单会话bean。