当我的应用程序(具有业务逻辑、EJB和客户端Web的企业应用程序)部署时,我想立即执行某些操作。例如,我想使一些实体处于持久状态,或者创建一个文件。如何做到这一点?
谢谢。
当我的应用程序(具有业务逻辑、EJB和客户端Web的企业应用程序)部署时,我想立即执行某些操作。例如,我想使一些实体处于持久状态,或者创建一个文件。如何做到这一点?
谢谢。
在你的web应用程序描述文件web.xml中配置ServletContextListener
并重写contextInitialized()
方法。
<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标记为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>
如果您正在使用现有的Web应用程序,最简单和最简单的方法是使用ServletContextListener,否则在EJB 3.1中,您可以使用自动计时器或启动单例会话bean。