确定我们的应用程序部署到哪个Application Server?
我们的J2EE应用程序部署到JBoss,有时部署到OC4J。 我可以知道正在使用哪一个吗? 我希望有一个方法在运行时返回容器信息。
我能想到的最简单的事情是在运行时查看系统属性,因为两个服务器几乎肯定会定义自己的。 例如,JBoss 4定义了jboss.server.dir
系统属性。 检查该属性是否存在,如果存在,那么您可以假设您在该服务器下运行。 OC4J会有类似的东西。
或者,尝试reflection性地加载属于服务器基础结构的类(例如JBoss 4中的org.jboss.Version
)。 如果它存在,您就知道您所在的服务器。
您可以通过ServletContext#getServerInfo()
找到它。
最有可能的是JMX是您需要使用的。 两个容器都可能将自己的详细信息公开为MBean。 以下是有关JMX和JBoss文档的一些Oracle 文档 。
更改为System.getProperty("jboss.home.dir")