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

2024-04-15

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

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


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

创建 javax.servlet.ServletContextListener 实现

如果您的 .ear 文件中有一个 Web 组件(嵌入的 .war)或者您的部署本身就是一个 .war,您可以添加ServletContextListener http://docs.oracle.com/javaee/6/api/javax/servlet/ServletContextListener.html给你的web.xml并在服务器启动或关闭时获取回调。

Example:

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 */
  }

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

部署Java EE应用程序后执行任务 的相关文章

  • 获取jdbc中表依赖顺序

    我在 MySQL 数据库中有一组表 A B C D 依赖关系如下 B gt C gt A 和 D gt A 也就是说 A 有一个 PrimaryKey C 有一个外键指向 A 的主键 B 有一个外键指向 C 的主键 类似地 D 有一个外键指
  • 如何降低圈复杂度?

    我正在开发一个将 RequestDTO 发送到 Web 服务的类 我需要在发送请求之前验证该请求 请求可以从 3 个不同的地方发送 并且每个 请求类型 有不同的验证规则 例如请求1必须有姓名和电话号码 请求2必须有地址等 我有一个 DTO
  • 如何使用 Java 创建多个模式连接?

    我必须使用两个数据库 DB2 Oracle 我在 DB2 数据库中有一个名为NAVID 我想使用 Java 为 Oracle 中的所有表创建相同的架构 public class automateExport static String va
  • JBoss AS 5 中的共享库应该放在哪里?

    我是 Jboss 新手 但我有多个 Web 应用程序 每个应用程序都使用 spring hibernate 和其他开源库和 portlet 所以基本上现在每个 war 文件都包含这些 jar 文件 如何将这些 jar 移动到一个公共位置 以
  • WebLogic 10 中的临时目录

    每当 WL 停止时 它都不会删除其临时目录 即 domains mydomain servers myserver tmp WL TEMP APP DOWNLOADS domains mydomain servers myserver tm
  • 使用 JAXB 编组 LocalDate

    我正在构建一系列链接类 我希望能够将其实例编组到 XML 以便我可以将它们保存到文件中并稍后再次读取它们 目前我使用以下代码作为测试用例 import javax xml bind annotation import javax xml b
  • 从剪贴板获取图像 Awt 与 FX

    最近 我们的 Java FX 应用程序无法再从剪贴板读取图像 例如 用户在 Microsofts Paint 中选择图像的一部分并按复制 我不是在谈论复制的图像文件 它们工作得很好 我很确定它过去已经有效 但我仍然需要验证这一点 尽管如此
  • BigDecimal 的 JPA @Size 注释

    我该如何使用 SizeMySQL 的注释DECIMAL x y 列 我在用着BigDecimal 但是当我尝试包括 Size max它不起作用 这是我的代码 Size max 7 2 Column name weight private B
  • 更改 JTextPane 的大小

    我是Java新手 刚刚在StackOverflow中找到了这段代码 ResizeTextArea https stackoverflow com questions 9370561 enabling scroll bars when jte
  • Hystrix是否可以订阅CircuitBreaker开启事件?

    对于单元测试 我希望能够订阅 Hystrix 事件 特别是在断路器打开或关闭时发生事件 我四处寻找示例 似乎解决方法是利用指标流并监视断路器标志 由于 Hystrix 是基于 RxJava 构建的 我认为应该在某个地方有一个事件订阅接口 在
  • 用于防止滥用的 Servlet 过滤器? (DoS、垃圾邮件等)

    我正在寻找一个 Servlet 过滤器库 它可以帮助我保护我们的 Web 服务免受未经授权的使用和 DDoS 攻击 我们的网络服务有 授权客户 因此理想情况下 过滤器将帮助检测未经授权或行为不当的客户 或检测使用同一帐户的多个人 此外 我们
  • Java 中 static 关键字如何工作?

    我正在阅读Java教程 http docs oracle com javase tutorial index html从一开始我就有一个问题static字段或变量上的关键字 作为Java said here http docs oracle
  • Java 类:匿名类、嵌套类、私有类

    有人能解释一下Java中匿名类 嵌套类和私有类之间的区别吗 我想知道与每个相关的运行时成本以及每个编译器的方法 这样我就可以掌握哪个最适合用于例如性能 编译器优化的潜力 内存使用以及其他 Java 编码人员的普遍可接受性 我所说的匿名类是指
  • setKeyListener 将覆盖 setInputType 并更改键盘

    大家好 我在两个设备之间遇到问题 在实践中使用InputType和KeyListener我正在操纵一个EditText让它从数字键盘接收逗号和数字 有关更多背景信息 请检查我之前的question https stackoverflow c
  • Jenkins 管道和 java.nio.file.* 方法的问题

    我正在尝试使用 java nio file 中的方法在 Jenkins 管道中执行一些基本文件操作 无论代码存在于哪个节点块中 代码都在主节点上执行 在管道中 我已经验证了各个节点块都是正确的 它们唯一地标识了特定的节点 但是 pathEx
  • 如何使用 SAX Java 解析器读取注释文本

    我只想使用 Java 中的 SAX 解析器读取 XML 文件中对象标记的注释 这是我的文件的摘要
  • SWT - 与操作系统无关的获取等宽字体的方法

    SWT 有没有一种方法可以简单地获得跨各种操作系统的等宽字体 例如 这适用于 Linux 但不适用于 Windows Font mono new Font parent getDisplay Mono 10 SWT NONE 或者我是否需要
  • 条件查询:按计数排序

    我正在尝试执行一个标准查询 该查询返回 stackoverflow 中回答最多的问题 例如常见问题解答 一个问题包含多个答案 我正在尝试使用标准查询返回按每个问题的答案数排序的回答最多的问题 任何人都知道我应该在 hibernate cri
  • C/C++ 通过 Android NDK 在 JNI 中看不到 Java 方法

    我正在尝试从使用 NDK 构建的 C 类文件调用 Java 方法 它不断抛出常见的 未找到非静态方法 错误并导致整个 Android 应用程序崩溃 下面的代码片段 有些东西可能不需要 但我按原样保留它们 因为焦点 问题在于refreshJN
  • RecyclerView 不调用 onCreateViewHolder 或 onBindView

    没有收到任何错误 所有数据似乎都有效 由于某种原因 没有调用与视图相关的方法 我已确定以下事项 getItemCount 是唯一被调用的适配器方法 并且返回一个正整数值 我知道这将是你们将要查看的区域 构造函数正在被调用 成员变量有效 Pa

随机推荐

  • Powershell在导入txt文件时跳过前2行

    我有一个 powershell 脚本 旨在读取远程服务器上的 txt 文件并将其导入 SQL 中 我希望能够跳过 txt 文件的前两行 我目前正在使用下面的代码来导入文件 txt 文件已分隔 datatable new object Sys
  • 不使用 Obfuscator 的 DLL 加密

    事实上 我被分配了一项任务来保护我的 DLL 这样 如果我将我的软件部署到任何系统 就没有人可以修改或读取我的 DLL 你能帮我如何在不使用混淆器的情况下对其进行加密吗 您将需要软件来执行此操作 以下是您可能需要考虑的一些软件 Eazfus
  • 在另一个 AppDomain 中调用 Await 时没有 SynchronizationContext

    我已经成功构建了一个插件机制 可以在单独的 AppDomain 中创建 UI 控件 并将它们显示为主 AppDomain 中表单的一部分 这些 UI 控件会加载自己的数据 因此当我打开表单时 会创建大约 10 个不同的插件 每个插件都需要加
  • 在ExoPlayer中,到底如何使用SimpleExoPlayer.setVideoScalingMode就像在ImageView center-crop中一样?

    背景 我正在尝试以中心裁剪方式显示视频 就像在 ImageView 上一样 我也希望我能找到如何以其他方式扩展规模 就像上所做的那样这个图书馆 https github com yqritc Android ScalableVideoVie
  • 使用 NancyFX 时出现 Razor 编译错误

    我正在使用 Nancyfx 和 Visual Studio 2012 中的 Razor 视图引擎在 C 中创建一个黑杰克程序 Visual studios Intelisense 可以工作 但我收到这些 Razor 编译错误 我尝试在 ap
  • 重载Python中的所有算术运算符

    假设我构建一个类 它基本上代表一个数字加上一些奇特的东西 该类的实例的行为应该类似于任何算术 数学运算中的数字 我可以重载该类中的所有数字运算符 但是没有更短的解决方案吗 该类基本上如下所示 class MyFancyNumber def
  • Python 正则表达式错误字符范围。

    我使用以下正则表达式来匹配不同的日期模式 它在 regex101 com 中工作正常 但是当我导入到 python 时 我收到 错误字符范围 异常 pattern ur b january jan february feb march ma
  • Kivy AttributeError:“超级”对象没有 ScreenManager 的属性“__getattr__”[重复]

    这个问题在这里已经有答案了 我正在尝试将方法绑定到微调器的文本值 最迟需要在显示 TestScreen 时进行绑定 如果我不使用 ScreenManager 这将有效 例如 如果 TestApp build 返回 TestScreen 而不
  • 在持续集成下删除和创建数据库的防弹方法

    我正在尝试从 CI 设置中删除并重新创建数据库 但我发现很难自动删除和创建数据库 考虑到正在使用的数据库的复杂性 这是可以预料的 有时 进程会挂起 错误提示 数据库当前正在使用 或者只是花费太长时间 我不在乎数据库是否正在使用 我想杀死它并
  • 使用 phimagemanager 将图像保存到自定义相册?

    我正在制作一个使用 AVFoundation 拍照的应用程序 我想将它们保存到一个自定义相册中 然后我可以查询并在我的应用程序中显示 我不想把它们放在一般的照片卷中 除非用户想要 我真的找不到任何东西来展示如何在 Swift 中做到这一点
  • R: is.na() 没有获取 NA 值

    所以我有一个数据集 只需查看它 数据集中就有明显的 NA gt dput bmi cig structure list MSI subset BMI structure c 4L 4L 4L 4L 4L 4L 4L 4L 4L 4L 4L
  • 在类库中添加 System.Web.Script 引用

    我目前正在将代码从 app code 文件夹移动到类库 我已经标记了几种方法 System Web Script Serialization ScriptIgnore 属性 我的类库看不到这个命名空间 我的添加引用对话框看不到此命名空间 如
  • 如何使用 jQuery 验证检查确切的长度?

    使用jQuery 验证插件 http docs jquery com Plugins Validation要验证表单 您如何确认字符串的长度恰好是 X 个字符 由于 当前 没有内置方法 因此您需要添加自己的方法 这会起作用 jQuery v
  • 将nodejs添加到文件前面

    对于 Node js 以类似于以下方式添加到文件的最佳方法是什么 fs appendFile path join dirname app log appendme utf8 就个人而言 最好的方法实际上是围绕异步解决方案来创建日志 我基本上
  • axios默认超时是多少

    我在文档中找到了设置超时值的步骤 const instance axios create baseURL https some domain com api timeout 1000 headers X Custom Header foob
  • 如何使用 sbt 将 Scala 库发布到 Maven Central?

    我有一个使用 SBT 的开源 Scala 项目 我想将我的库发布到 Maven 我该怎么做 我总是忘记如何做到这一点 所以这是我的笔记 一生中一次 Create Sonatype账户 https issues sonatype org se
  • 无法使用 Beautiful Soup 解析 html 表

    我对使用 Beautiful Soup 很陌生 我正在尝试从下面的 url 导入数据作为 pandas 数据框 但是 最终结果具有正确的列名称 但没有行号 我应该做什么呢 这是我的代码 from bs4 import BeautifulSo
  • NorthPolarStereo 的中心经度

    我想绘制北半球的极地立体图 底部为 180 这样我就可以强调太平洋地区 我正在使用 git 的最新 cartopy 并且可以使极地立体图没有问题 但我不知道如何更改图底部的经度 我尝试将经度范围设置为 180 180 但这没有帮助 并且 N
  • 已超出“max_user_connections”资源

    我有一个 MySQL Express Angular NodeJS 应用程序 有时当我登录时 我的节点控制台中会出现以下错误 类型错误 无法读取未定义的属性 查询 错误发生在我的passport local js文件 这是行 connect
  • 部署Java EE应用程序后执行任务

    我有一个 Java EE 应用程序 它应该在部署后启动与外部系统的同步过程 我怎样才能实现这个要求呢 下面列出了在 JavaEE 应用程序中获取生命周期回调的几种流行方法 创建 javax servlet ServletContextLis