gpt4 book ai didi

java - 部署 Java EE 应用程序后执行任务

转载 作者:太空狗 更新时间:2023-10-29 22:38:06 28 4
gpt4 key购买 nike

我有一个 Java EE 应用程序,它应该在部署后启动一次与外部系统的同步过程。

我怎样才能实现这个要求?

最佳答案

下面列出了几种在 JavaEE 应用程序中获取生命周期回调的流行方法。

创建一个 javax.servlet.ServletContextListener 实现

如果您的 .ear 文件中有一个 Web 组件(嵌入的 .war)或者您的部署本身就是一个 .war,您可以添加 ServletContextListener到您的 web.xml 并在服务器启动或关闭时获得回调。

例子:

package com.stackoverflow.question

import javax.servlet.ServletContextListener;
import javax.servlet.ServletContextEvent;

public class MyServletContextListener implements ServletContextListener{

@Override
public void contextInitialized(ServletContextEvent contextEvent) {
/* Do Startup stuff. */
}

@Override
public void contextDestroyed(ServletContextEvent contextEvent) {
/* Do Shutdown stuff. */
}

}

然后将此配置添加到您的 web.xml 部署描述符中。
$WAR_ROOT/WEB-INF/web.xml

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee">

<listener>
<listener-class>com.stackoverflow.question.MyServletContextListener</listener-class>
</listener>

</web-app>

创建 EJB 3.1 @Startup Bean

此方法使用 EJB 3.1 单例从服务器获取启动和关闭回调。

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.ejb.Startup;
import javax.ejb.Singleton;

@Singleton
@Startup
public class LifecycleBean {

@PostConstruct
public void init() {
/* Startup stuff here. */
}

@PreDestroy
public void destroy() {
/* Shutdown stuff here */
}

}

关于java - 部署 Java EE 应用程序后执行任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18274534/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com