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

Имам EAR приложение в клетка с два уеб модула, всеки уеб модул има сървлет.

Искам да получа чрез JNDI името на приложението и модула, когато поискам всеки сървлет.

Опитах с:

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

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

Не проработи. приложение и модул не са намерени в 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