Определить, на каком сервере приложений развернуто наше приложение? - PullRequest
4 голосов
/ 17 ноября 2009

Наше J2EE-приложение развернуто на JBoss, а иногда и на OC4J. Могу ли я узнать, какой из них используется? Я надеюсь, что есть метод, возвращающий информацию о контейнере во время выполнения.

Ответы [ 4 ]

3 голосов
/ 17 ноября 2009

Самая простая вещь, о которой я могу подумать, это просматривать свойства системы во время выполнения, поскольку оба сервера почти наверняка определят свои собственные. Например, JBoss 4 определяет системное свойство jboss.server.dir. Проверьте, существует ли это свойство, и если оно существует, вы можете предположить, что работаете на этом сервере. У OC4J будет что-то похожее.

В качестве альтернативы, попробуйте рефлексивно загрузить класс, который является частью инфраструктуры сервера (например, org.jboss.Version в JBoss 4). Если он существует, вы знаете, на каком сервере находитесь.

2 голосов
/ 17 ноября 2009

Вы можете узнать это по ServletContext#getServerInfo().

0 голосов
/ 29 июля 2017

Изменить на System.getProperty("jboss.home.dir")

0 голосов
/ 17 ноября 2009

Скорее всего JMX - это то, что вам нужно будет использовать. Оба контейнера, вероятно, предоставляют подробности о себе как MBeans. Вот некоторая документация Oracle по JMX и документация JBoss .

...