2010-11-20 70 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的或其他工具的其他屬性。

我不知道其他服務器,但我認爲你可以找到他們每個人的某種屬性。

相關問題