Java EE企业应用程序:在部署/启动时执行一些操作

时间:2011-05-25 07:17:07

标签: java deployment java-ee entity startup

我希望在部署应用程序(使用Business Logic,EJB和客户端,Web的企业应用程序)后立即执行某些操作。 例如,我想让一些实体处于持久状态,或者创建一个文件。 我怎么能这样做?

感谢。

3 个答案:

答案 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。