Имя приложения и модуля через JNDI в WebSphere 7

У меня есть приложение EAR в ячейке с двумя веб-модулями, каждый веб-модуль имеет сервлет.

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

Я пробовал:

String applicationName = (String) new InitialContext()
    .lookup("java:app/AppName");

String moduleName = (String) new InitialContext()
    .lookup("java:module/ModuleName");

Не сработало. app и module не найдены в java:.

Я нашел этот пример на веб-странице, возможно, это работает для WebSphere 8, но не для 7.

Я попытался найти запись с названием приложения или модуля в java: comp / env, но не нашел.

  • Как я могу получить имя приложения с сервера приложений?
  • А название модуля?
  • Есть способ лучше, чем хоть JNDI?

Заранее спасибо.


person Jonathan Barbero    schedule 08.08.2013    source источник


Ответы (1)


Один из способов, который я могу придумать для уровня приложения, - это указать <env-entry> в web.xml вашего приложения. Websphere попросит вас указать значение при развертывании, но по умолчанию будет использоваться то, что вы поместили в web.xml.

Например:

<env-entry>
    <env-entry-name>AppName</env-entry-name>
    <env-entry-type>java.lang.String</env-entry-type>
    <env-entry-value>MyApp</env-entry-value>
</env-entry>

Затем вы можете просмотреть это значение через JNDI, используя java:comp/env/AppName.

person FGreg    schedule 08.08.2013
comment
На данный момент я не могу придумать, как это сделать по модулю. - person FGreg; 09.08.2013
comment
Это могло бы стать поворотным моментом. Но если два экземпляра одного и того же приложения развернуты на одном сервере с одинаковым значением, у меня будет конфликт для моего варианта использования. Но если бы я мог получить имя приложения из WebSphere, конфликта не было бы. - person Jonathan Barbero; 09.08.2013
comment
Правильно, с помощью этого метода вам нужно будет указать уникальное имя для приложения. WebSphere попросит вас указать это значение во время развертывания, но по умолчанию будет использоваться то, что находится в web.xml. Я не знаю, регистрирует ли WS автоматически какие-либо имена в локальном и / или Java-контексте. - person FGreg; 12.08.2013
comment
Вот несколько ссылок, которые я нашел о сбросе контекста JNDI с помощью wsadmin ... не смог найти что-то похожее на то, что вы описали, но подумал, что вас может заинтересовать: pic.dhe.ibm.com/ infocenter / wasinfo / v7r0 / pic.dhe.ibm.com/infocenter/wasinfo/v7r0/ - person FGreg; 13.08.2013