2010-11-20 100 views
0

某些代码可能会在各种环境(包括Java EE应用程序服务器)中重用。有时候很高兴知道代码是否在应用程序服务器上运行,以及它是哪个应用程序服务器。确定应用程序在应用程序服务器下运行

我更喜欢通过检查应用程序服务器的典型系统属性来执行此操作。 例如,它可能是

  • jboss.server.name JBoss的
  • catalina.base为Tomcat

是否有人知道其他服务器的相应属性的名称? Weblogic,Websphere,Oracle IAS,其他?

检查是否安装了特定的应用程序服务器非常容易。只需将行 System.getProperties()添加到任何JSP,Servlet,EJB并打印结果。

我可以自己做,但它会花费很多时间来安装服务器,并使其工作。

我已阅读讨论:How to determine type of Application Server an application is running on?

但我更喜欢使用系统属性。这是更简单,绝对便携的解决方案。代码不依赖于任何其他API,如Servlet,EJBContext或JMX。

回答

1

这不是一个'标准'的方式,但我所做的就是尝试加载一个AppServer类。

对于WAS:

尝试{
类CL = Thread.getContextClassLoader()的loadClass( “com.ibm.websphere.runtime.ServerName”);

//发现

}
//未找到
赶上(Throwable的) {

}

//对于Tomcat: “org.apache.catalina.xxx”

等等

让我知道你在说什么墨

1

JBoss AS中设置了很多不同势系统属性:

jboss.home.dir 
jboss.server.name 

您可以检查使用例如VisualVM的或其他工具的其他属性。

我不知道其他服务器,但我认为你可以找到他们每个人的某种属性。

相关问题