【问题标题】:Proper shutdown Java Web Application正确关闭 Java Web 应用程序
【发布时间】:2011-12-03 20:16:00
【问题描述】:

我正在寻找一种在应用程序本身内正确关闭(取消部署)Java Web 应用程序的方法。我已经尝试过 System.exit(),但这不仅会关闭 webApp,还会弄乱 Glassfish。

我知道上下文监听器,我只是想知道如何启动关闭程序。

【问题讨论】:

  • 应用程序由容器管理,而不是相反。您正在尝试完成容器本身的工作,并且几乎没有可移植(且安全)的解决方案。很可能,您需要使用特定于容器的类,只要容器允许您调用这样的类。
  • 您为什么要让应用自行取消部署?

标签: java web-applications glassfish war


【解决方案1】:

Web 应用程序的部署是应用程序服务器的职责。我确实知道 Glassfish 但其他应用程序中的情况如何。服务器(例如 JBoss、Tomcat 等)具有允许执行此操作的基于 Web 的管理应用程序。

如果您想以编程方式从应用程序本身取消部署应用程序,您可以使用 JMX。请参阅 glassfish JMX 实现以了解要调用哪个 bean。但恕我直言,我不认为你真的需要这个。

【讨论】:

    【解决方案2】:

    通常的方法是使用 asadmin undeploy 命令。

    命令的一般形式是:

    as-install/bin/asadmin undeploy war-name
    

    对于战争名称,使用文字 hello,而不是完整的 hello.war 名称。

    对于 hello.war 示例,命令为:

    as-install/bin/asadmin undeploy hello
    

    请参阅以下参考资料:

    http://docs.oracle.com/cd/E19798-01/821-1757/geyvr/index.html

    http://docs.oracle.com/docs/cd/E19798-01/821-1758/undeploy-1/index.html

    要以编程方式取消部署,您可以使用 JSR-88,尽管我真的看不出您想要这样做的原因。见

    http://blogs.oracle.com/japod/entry/using_jsr_88_for_web

    http://www.jcp.org/en/jsr/detail?id=88

    【讨论】:

    • Web 应用程序通过使用 RMI 与本地 Java 应用程序连接,如果由于某种异常 RMI 连接丢失,则 Web 应用程序没有任何原因,因此它必须关闭。跨度>
    • 使用流程构建器并调用它来解开自己的钩子
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-05
    • 2012-04-03
    • 1970-01-01
    • 2014-07-06
    • 1970-01-01
    • 2015-11-15
    相关资源
    最近更新 更多