2009-12-03 1 views
2

Я использую сервер приложений JBoss 4.2.2.GA в среде разработки. У меня есть файл WAR, MyWar.war и файл JAR ExternalJar.jar. Эти файлы структурированы следующим образом:В JBoss я могу настроить местоположение «разделяемой библиотеки»?

Application WAR файл:

MyWar.war 
| 
|--- AppClass1.class 
| 
|--- AppClass2.class  

Внешний файл банку (предоставленный клиентом):

ExternalJar.jar 
| 
|--- ExternalClass.class 

ExternalClass необходимо использовать AppClass1 и AppClass2 необходимо использовать ExternalClass. Когда я развертываю WAR в JBoss и ставил JAR в путь класса JBoss, я получаю LinkageError при создании экземпляра ExternalClass при запуске приложения. Кажется, что WAR видит ExternalClass, но ExternalClass не может получить доступ к классам в WAR.

Если я вручную разместил ExternalJar в файле WAR (WEB-INF/lib), он отлично работает. Но мы не хотим изменять файлы архива, чтобы поддерживать согласованность с нашими производственными развертываниями.

Есть ли какая-либо конфигурация или настройка в JBoss, которая позволяет использовать папку общей библиотеки, которая будет включена в путь класса для приложения ?

+0

Есть ли какая-то особая причина, почему вы не можете иметь в себе банку, связанную с вами войной, как часть вашей логики построения войны? – Romain

+0

Эта банка придет от клиента, и у нас ее не будет во время создания войны. Мы можем дать нашу войну клиенту и попросить его создать его jar.Jboss должен быть в состоянии выбрать его во время выполнения. Как война, так и банка должны быть в состоянии видеть друг друга в соответствии с приведенной выше иллюстрацией. –

ответ

1

Вы можете отключить WAR файл изоляции загрузчика классов, выполнив следующие действия:

Открыть этот файл %JBOSS_HOME%\server\<serverName>\deploy\jboss-web.deployer\META-INF\jboss-service.xml

Установите этот атрибут верно: <attribute name="UseJBossWebLoader">true</attribute>

Вы должны быть в состоянии поставить расширение JAR в каталоге deploy/ с файлом WAR.

Этот параметр может вызвать проблемы, если вы загружаете несколько файлов WAR с теми же библиотеками, что и YMMV.

1

Вы можете развернуть файл jar так же, как развернуть войну. Поскольку JBoss использует общий загрузчик классов, ваша банка будет иметь доступ к классам, загруженным с войны.

Смежные вопросы