Куда упаковать файл Class, чтобы и клиентские приложения, и EJB на сервере имели доступ? - PullRequest
0 голосов
/ 07 июня 2011

Я новичок в платформе Java EE и создаю простое приложение JMS.Я создал класс, который отправляется в ObjectMessage.Моя проблема возникла, когда и клиентское приложение, создающее сообщение, и MDB на сервере требовали доступа к одному и тому же файлу класса (класс, составленный в ObjectMessage).В настоящее время у меня есть файл классов в клиентской и EJB-библиотеках, и это работает.Однако я хотел бы иметь только одно место для файла класса, где и клиент, и MDB могут получить к нему доступ.Я считаю, что мне нужно каким-то образом упаковать все приложение, но мне было трудно разобраться.

Любая помощь будет принята с благодарностью.

Спасибо.

1 Ответ

0 голосов
/ 07 июня 2011

Обычно большинство, если не все кодовые источники (места, откуда загружаются классы), используемые загрузчиками классов сервера приложений, находятся внутри установки сервера приложений.В случае MDB (или EJB) по этому вопросу источники кодов содержатся в модуле EJB (файл JAR EJB) или в архиве приложения (файл EAR).Во время выполнения контейнер управляет, где и как этот источник кода управляется (включая его местоположение), и может не быть простого способа определить это местоположение.Другими словами, было бы крайне сложно использовать развернутые JAR-файлы в контейнере, в classpath вашего клиентского приложения (при условии, что они находятся на одной машине).использование одних и тех же JAR-файлов как в клиентском приложении, так и в приложении на сервере означает наличие на сервере пользовательского загрузчика классов, который настроен для чтения определенных классов из общего общего JAR-файла.Рекомендуется, чтобы загрузчик классов всегда откладывал загрузку классов до родительских загрузчиков классов, прежде чем пытаться разрешить какой-либо класс.

Ваш клиент может затем использовать тот же общий JAR-файл, задав соответствующий путь к классу (или используятот же пользовательский загрузчик классов).

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

...