Моя цель довольно проста: использовать ant для создания EAR, который содержит 1 EJB и 1 jar, содержащий все зависимости. Этот jar, называемый common.jar, для примера содержит файлы jar производителя, а также другие xml-файлы, от которых зависит EJB и которые он должен будет видеть во время выполнения ....
Пока у меня все правильно упаковано как EAR вот так:
EARFILE.ear
-EJBFILE.jar
/META-INF
-MANIFEST.MF
-common.jar
/META-INF
-MANIFEST.MF
/lib
-(all vendor jars inside here)
-(All the xml config files are inside the root of the common.jar)
Внутри MANIFEST.MF для EJBFILE.jar есть ...
Class-path: ../../common.jar
Внутри MANIFEST.MF для common.jar есть ...
Class-path: ../lib/some_common.jar
Когда я развертываю это, appserver (websphere) не может найти файл JAR, когда я пытаюсь запустить сервер. Я получаю ClassDefNotFoundError
, потому что классы внутри EJB не могут найти JAR-файлы поставщика, когда я пытаюсь запустить экземпляр. Тем не менее, я знаю, что common.jar настроен правильно, хотя EJB-компонент не скомпилировался бы, так как ему нужно было, чтобы эти jar-файлы вендора были в пути к классам для javac.
Итак, что я хочу знать, это:
- Как мне заставить среду выполнения правильно просматривать файлы jar поставщика.
- Будет ли EJB видеть файлы XML во время выполнения? Я обеспокоен этим, потому что эти xml-файлы расположены вне EJB внутри фляги, которая находится только в EAR, это даже не модуль, это просто фляга внутри EAR.
- Имеет ли это значение при использовании веб-сферы? Из того, что я собираю, некоторые контейнеры даже не заботятся о том, что находится в Class-path MANIFEST.MF.