2010-02-05 1 views
0

Я бы хотел, чтобы веб-приложение узнало о своей среде, чтобы описать различные детали при возникновении исключения.Glassfish - описание среды, в которой работает веб-приложение

Как получить IP-адрес (ы), в котором работает стеклянная рыба в веб-приложении?

Я хотел бы также сделать снимок конфигурации, JDBC-соединений, JMS, JNDI и т. Д. Это возможно?

Я предполагаю, что это будет больше связано с API-сетью стеклянной рыбы и впрыском бобов или бобов.

Walter

ответ

0

я сделать следующее:

  1. найти все сетевые интерфейсы на машине
  2. запись JVM информацию

Это дает мне достаточно информации, чтобы определить, где проблема возникла из.

Walter

0

Как бы я получить IP-адрес (а) что GlassFish запущен на в веб-приложения?

Вы можете получить такую ​​информацию в ServletRequest, например. port.

Я хотел бы также сделать снимок конфигурации, JDBC соединений, JMS, JNDI и т.д. Возможно ли это?

Вам нужно будет полагаться на метаданные соединения или фабрики соединений. Если вы опасаетесь, что это не совсем переносимо, но вы должны иметь возможность получить некоторую информацию, например. JDBC metadata.

Вы также можете подключить фасоль JMX Glassfish. Я сделал это один раз из веб-приложения, чтобы отслеживать соединение, которое было распределено с течением времени. Если вы знаете имя компонентов JMX для поиска (например, если вы знаете имя источника данных), вы можете получить там вагон. В основном все, что есть на дисплее консоли Glassfish.

Возможно, вы можете собрать всю информацию при запуске с ServletContextListener, а затем сохранить их где-нибудь, чтобы выплюнуть их в случае исключения.

Обратите внимание, что вы можете раскрыть потенциальную конфиденциальную информацию конечному пользователю, что не рекомендуется.

+0

Правда, но что, если сервер многопользовательский? Могу ли я получить то, на что он настроен для прослушивания? – 2010-02-05 17:16:09

+0

Вы имеете в виду, что не знаете, в каком домене Glassfish будет развернуто ваше приложение? – ewernli

+0

Правильно, я развертываю приложение в кластере и хочу, чтобы веб-приложение узнало, где оно находится. Как я могу сказать, где он находится, или понять это? – 2010-02-05 20:01:25

0

Как получить ip-адрес (-ы), в котором работает стеклянная рыба в веб-приложении?

Используйте ServletRequest#getLocalPort() для этого (не ServletRequest#getServerPort(), который фактически возвращает номер порта, к которому был отправлен запрос, наиболее часто 80, и может отличаться от порта контейнера прослушивания из-за маршрутизацию/балансировка нагрузки).

Я хотел бы также сделать снимок конфигурации, JDBC-соединений, JMS, JNDI и т. Д. Возможно ли это?

Возможно, вы можете просмотреть дерево JNDI, чтобы увидеть, что там находится, но ваше приложение не должно знать обо всех деталях (понимаете: я не думаю, что вы сможете получить доступ ко всем метаданные, по крайней мере, не так).

Другим вариантом является подключение к GlassFish's exposed administrative MBeans via JMX. Но для этого потребуются учетные данные администратора (и, возможно, это невозможно).

Возможно, вам нужно уточнить ваши потребности и ограничения, чтобы получить более точные ответы.

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