Jakarta ee JavaEE以编程方式停止应用程序

Jakarta ee JavaEE以编程方式停止应用程序,jakarta-ee,Jakarta Ee,我是在EE中重写SE应用程序项目的一部分。我们目前正在使用JBoss 7.1.3作为受支持的应用服务器,但为了便于移植,我们显然在尽量减少特定代码 关于我们的应用程序的一点背景知识…它接受来自系统(MDB/Webservice)的处理请求,并通过与许多其他系统接口来满足请求。系统处理审计是数据库驱动的 现有应用程序中的当前功能是,如果数据库连接丢失,应用程序会自动关闭,以防止未经审核的处理。所以,我一直在四处寻找,看看是否有任何标准的方法可以以可移植的方式重新创建此功能。我想我想知道是否有任何标

我是在EE中重写SE应用程序项目的一部分。我们目前正在使用JBoss 7.1.3作为受支持的应用服务器,但为了便于移植,我们显然在尽量减少特定代码

关于我们的应用程序的一点背景知识…它接受来自系统(MDB/Webservice)的处理请求,并通过与许多其他系统接口来满足请求。系统处理审计是数据库驱动的

现有应用程序中的当前功能是,如果数据库连接丢失,应用程序会自动关闭,以防止未经审核的处理。所以,我一直在四处寻找,看看是否有任何标准的方法可以以可移植的方式重新创建此功能。我想我想知道是否有任何标准的方法可以从应用程序本身中以编程方式停止应用程序,或者您是否考虑提供类似的功能


到目前为止,我已经看到可能有办法通过JMX连接到JBoss并取消部署应用程序,或者可能停止MDB交付……但我担心可移植性,因为这一切都是特定的。我不仅担心ASs之间的可移植性,甚至还担心AS的不同版本之间的可移植性……因为这些操作的过程似乎在不同的JBoss版本中发生了变化。

我相信如果存在这样的功能,它将真的是一个漏洞,因为AS设计用于运行多个应用程序。若在一个这样的共享服务器中,一个应用程序出现恶意,那个么将导致其余应用程序的中断


尽管如此,您仍然可以通过执行shell脚本、获取运行时来实现这一点,但这并不是一个可移植的代码。

当您说停止应用程序时,您指的是System.exit(0)?您也可以在Jboss/EE代码中这样做,只要运行的应用程序是您的(而不是共享Jboss)

如果是共享的(由您公司的其他应用程序或共享提供商共享)

  • 向您服务的客户端发送错误响应
  • 写入日志文件,如果成功,则继续维护(日志可以传输到数据库-如果数据库必须始终是最新的,则此项不起作用)
  • 使用连接池来维护数据库连接->只是一个更好的建议。如果无法访问主数据库,也可以使用备用数据库。同样,这取决于业务/您的特殊情况
  • 可移植且响应迅速-使用空/空集进行响应。还有一个状态屏幕->告诉客户/支持应用程序和/或事件状态的方式(如数据库或其他资源一直不可用)。实现:每个API函数可以首先有一个AOP相交,以一种通用的方式处理这个问题

  • 如果您想取消部署,可以对一个抽象类进行基本设计,然后为每个应用程序服务器/应用程序服务器变体提供一个版本。一旦你在应用服务器上运行,你几乎不会认为你会改变或添加更多,这是非常常见的。也许您可以将此建议推荐给oracle,用于将来web/ejb应用程序的JSR/功能

    感谢您的输入以及@Pradeep。本质上,我们对这种情况的遗留应用程序处理归结为系统退出。我个人的观点是,我们不应该停止应用程序,而是应该阻止关键处理,直到数据库再次可用。我感谢您的反馈,并将在我们的讨论中提出。又添加了一个,很想知道您最终做了什么以及为什么?决定不做任何事情来停止应用程序。由于数据库故障会在太晚之前终止事务,我们决定让它们适当地终止。@tkgprog您能帮我吗