【问题标题】:Determine Which Application Server our application is deployed to?确定我们的应用程序部署到哪个应用程序服务器?
【发布时间】:2010-12-17 06:42:51
【问题描述】:

我们的 J2EE 应用程序部署到 JBoss,有时部署到 OC4J。 我可以知道使用的是哪一个吗? 我希望有一种方法可以在运行时返回容器信息。

【问题讨论】:

  • 你需要解决什么问题?

标签: java web-applications jakarta-ee jboss oc4j


【解决方案1】:

我能想到的最简单的事情是在运行时查看系统属性,因为几乎可以肯定两台服务器都会定义自己的。例如,JBoss 4 定义了jboss.server.dir 系统属性。检查该属性是否存在,如果存在,那么您可以假设您正在该服务器下运行。 OC4J 也会有类似的东西。

或者,尝试以反射方式加载属于服务器基础架构的类(例如 JBoss 4 中的 org.jboss.Version)。如果存在,您就知道您在哪个服务器上。

【讨论】:

    【解决方案2】:

    你可以通过ServletContext#getServerInfo()找到这个。

    【讨论】:

    • 很好奇...我怀疑这将返回 servlet 容器的名称,而不是应用服务器的名称,但这可能就足够了。
    • 取决于应用服务器。例如,JBoss 4.2.x 和更新版本确实返回“JBoss”,但旧版本用于返回“Apache Tomcat”。
    【解决方案3】:

    很可能JMX 是您需要使用的。两个容器都可能将有关它们自己的详细信息公开为 MBean。这是一些Oracle documentation on JMXJBoss documentation

    【讨论】:

      【解决方案4】:

      更改为System.getProperty("jboss.home.dir")

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-17
        • 2016-04-02
        • 1970-01-01
        • 1970-01-01
        • 2023-03-27
        • 2016-04-09
        相关资源
        最近更新 更多