Как получить доступ к файлу application.xml EAR, развернутого в IBM WebSphere 6.1 - PullRequest
3 голосов
/ 11 января 2010

Я развертываю файл EAR на сервере IBM WebSpehre 6.1 - я хочу иметь возможность доступа к имени приложения EAR, которое хранится в файле развертывания в «display-name». Просматривая сообщения о переполнении стека по смежным темам, я смог понять, что это возможно с помощью API Java MBean - или API WAS IBM - Проблема в том, что я не могу найти место, где эти списки API суммируются, т.е. не может выяснить, какие один, чтобы начать смотреть на. Я мог бы жестко закодировать место установки WAS и найти файл, посмотрев в каталог «линие установленные приложения », но это не динамично.

У кого-нибудь есть опыт работы с этими API? Есть ли другой способ динамически найти отображаемое имя EAR?

РЕДАКТИРОВАТЬ - я должен добавить, что причина, по которой я хотел бы получить эту информацию, заключается в том, чтобы динамически загружать наши файлы свойств - которые называются в соответствии со следующим соглашением "EARAppName.properties" - так что вы видите, что есть разумное "обоснование" для желающих этого информация в моем приложении

РЕДАКТИРОВАТЬ 2 - Я также должен отметить, что это приложение всегда будет развертываться в WAS - но в случае его отсутствия предпочтительным будет универсальное непатентованное решение, но в данный момент оно не обязательно.

РЕДАКТИРОВАТЬ 3 - Чего я хочу добиться: Есть ли способ динамического поиска отображаемого имени развернутого EAR из кода приложения?

Ответы [ 4 ]

2 голосов
/ 15 февраля 2010

Не прямой ответ, но не проще ли использовать жестко закодированное имя для файла свойств? В конце концов, кажется, что конкретное приложение имеет смысл знать, какой файл загружать. Написание кода для чтения отображаемого имени в дескрипторе развертывания звучит странно (тем более, что вы, * * * * * * *, поставщик компонентов приложения * , не должны полагаться на то, что принадлежит Application Assembler ).

2 голосов
/ 17 февраля 2010

Если вся причина этой цели - чтение файлов свойств, то я бы порекомендовал другой подход.

Использовать общую библиотеку WebSphere.

http://publib.boulder.ibm.com/infocenter/wasinfo/v6r0/index.jsp?topic=/com.ibm.websphere.nd.doc/info/ae/ae/tcws_sharedlib.html

Для каждого развернутого EAR есть отдельный каталог, содержащий файлы свойств, к которым должен обращаться этот EAR.

Создать запись общей библиотеки для каждого каталога, содержащего файл свойств.

Из EAR создайте ссылку на общую библиотеку для необходимой общей библиотеки.

.

Однако приведенные ниже ссылки могут помочь вам в вашем подходе:

Управление приложениями с помощью программирования

Управление интерфейсом приложений

1 голос
/ 14 марта 2010

Я пытаюсь сделать то же самое здесь. Я пытаюсь найти во время выполнения имя приложения, найденное в META-INF / application.xml.

Мы используем это имя приложения в приложении File4 для приложения Log4J, чтобы создать правильную базу имен файлов журнала в приложении, которое в данный момент регистрируется. У нас много программистов и много приложений, и нам нужно обеспечить соблюдение некоторых соглашений в рамках.

Я хотел бы просто позвонить:

InputStream in = new MyObject().getClass().getResourceAsStream(“META-INF/application.xml”);

Я также попытался изменить загрузчик классов на «PARENT_LAST / FIRST» и «Single ClassLoader», но он не работает.

Я мог бы найти файл application.xml в файловой системе относительно моего файла war, но я не уверен, что он будет работать постоянно.

Действительно ли JMX Api - единственный путь?

0 голосов
/ 12 января 2010

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

...