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

发布于 2024-11-09 10:46:37 字数 113 浏览 0 评论 0原文

我想在部署我的应用程序(具有业务逻辑、EJB 和客户端、Web 的企业应用程序)后立即执行某些操作。 例如,我想让某个实体处于持久状态,或者以其他方式创建一个文件。 我怎样才能做到这一点?

谢谢。

I would like to perform some action as soon as my application (Enterprise Application with Business Logic, EJB, and a Client, Web) is deployed.
For example I would like to make some entity in a persistent state, or otherwise create a file.
How can I do that?

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

魔法少女 2024-11-16 10:46:37

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

Configure SerlvetContextListener and override contextInitilized()

in your web application description , 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 
    }
}
爱,才寂寞 2024-11-16 10:46:37

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

The "default" way is to have a servlet with an init() method. Then in the servlet-descriptor you mark this servlet as load-on-startup 1:

Example:

<servlet-name>Seam Resource Servlet</servlet-name>
   <servlet-class>org.jboss.seam.servlet.SeamResourceServlet</servlet-class>
   <load-on-startup>1</load-on-startup>
</servlet>

As soon as the servlet is deployed (which happens after the EJBs are deployed), that init() method is called and you can execute the task you want.

中二柚 2024-11-16 10:46:37

对于当前的 Web 应用程序,最简单的方法是使用 ServletContextListener,否则在 EJB 3.1 中,您可以使用自动计时器或启动单例会话 bean。

With present web application in your ear, the easiest and simplest would be to use ServletContextListener, otherwise in EJB 3.1 you could use automatic timers or startup singleton session beans.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文