2010-11-20 5 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:.

попытка {
Класс сл = Thread.getContextClassLoader() loadClass ("com.ibm.websphere.runtime.ServerName");

// найдено

}
// не найден
улов (Throwable) {

}

// Для Tomcat: "org.apache.catalina.xxx"

И т.д.

Дайте мне знать, что вы чернила

1

JBoss AS задает много diffrent свойств системы:

jboss.home.dir 
jboss.server.name 

Вы можете проверить другие свойства, используя, например, VisualVM или других инструментов.

Я не знаю других серверов, но я думаю, вы можете найти какие-то свойства для каждого из них.

Смежные вопросы