【问题标题】:Application restarts mysteriously on Websphere Liberty Profile应用程序在 Websphere Liberty Profile 上神秘地重新启动
【发布时间】:2020-02-15 00:59:53
【问题描述】:

我们的应用程序在 WLP 16.0.0.2 上运行。最近,我们看到应用程序在使用 Apache FOP 2.1 的代码完成执行后立即重新启动。该代码预计会生成一个成功的 PDF。我们在日志中看不到任何内存转储或任何其他类型的错误、异常。当应用程序过去在 Tomcat 8 上运行时,同样的代码可以正常工作。尝试常规的堆大小和 PermGen 调整没有帮助。

【问题讨论】:

  • 您的应用程序中是否有某些内容将输出写入扩展的应用程序目录?尝试设置<applicationMonitor updateTrigger="disabled"/> 以查看重启是否仍然发生。请注意,禁用 updateTrigger 将阻止任何 dropin 应用程序启动,并将阻止 WDT 在开发应用程序时进行自动更新
  • 你是天使,安迪!这个设置就像一个魅力。我现在意识到,在上述代码执行期间,扩展的应用程序目录中的一个文件被修改了。禁用应用程序监视器正是我需要的。
  • 安迪,请把你的建议作为答案,以便我接受。

标签: java websphere-liberty apache-fop


【解决方案1】:

Liberty 中的两件事可以触发应用程序重启:

  1. 在触发应用重启的 server.xml 中进行的配置更改
  2. <applicationMonitor/> 元素在轮询更新或应用程序监视器 MBean 收到更新请求时发现应用程序更改。

在您的情况下可能发生的是场景 #2。您的应用程序中可能有一些东西正在将输出写入扩展的应用程序目录,并且默认的应用程序监视器设置(每 500 毫秒轮询一次更新)正在将此输出作为应用程序更改并因此触发重新启动。

所以你有两个选择来解决这个问题:

  1. (推荐)将您的应用程序更改为在扩展的应用程序目录之外的某个位置写入输出
  2. 通过将其放入 server.xml 禁用应用程序监控:
    <applicationMonitor updateTrigger="mbean"/>
    注意:将应用程序监控设置为 mbean 将导致删除的应用程序无法启动,除非您在 WDT 中运行。

【讨论】:

  • 我想updateTrigger="mbean" 仍然允许 WDT 工作?
  • 好点 Brett,mbean 会比完全禁用监控更灵活。我会更新我的答案
  • 我在 Websphere Application Server 9 中看到了类似的行为。知道那里的属性是什么吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-15
  • 1970-01-01
  • 2012-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多