Java EE的企业级应用:在部署/启动时执行某些操作[复制]Java EE的企业级应用:在部署/启

2019-05-12 03:09发布

这个问题已经在这里有一个答案:

  • 采用特殊自动启动的servlet来初始化启动和共享应用数据 1个回答

我想,只要我的应用程序(业务逻辑,EJB企业应用程序和客户端,网络)部署执行某些操作。 例如,我想作出一些实体处于持续状态,或者以其他方式创建一个文件。 我怎样才能做到这一点?

谢谢。

Answer 1:

配置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 
    }
}


Answer 2:

“默认”的方法是有用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()方法被调用,您可以执行你想要的任务。



Answer 3:

随着你的耳朵现在的Web应用程序,最简单,最简单的办法是使用的ServletContextListener,否则在EJB 3.1,你可以使用自动定时器或启动单会话bean。



文章来源: Java EE Enterprise Application: perform some action on deploy/startup [duplicate]