как разоблачить WEB-INF / lib в войне, используя maven - PullRequest
1 голос
/ 17 ноября 2011

Мы используем стороннюю войну в нашем веб-приложении (война).Чтобы общаться с войной, мы создали мостовой модуль (банку).Намерение состоит в том, чтобы не дать нашему веб-приложению напрямую взаимодействовать с внешней войной, а вместо этого связываться через модуль моста.

Все 3 модуля (2 войны и 1 банка) находятся внутри файла ear, который развернут вJBoss.

ear
    - war1 (our web app)
    - war2 (external web app)
    - bridge jar

Обратите внимание: в мостовом фляге используется некоторый API (представленный в виде jar-файлов), который присутствует в каталоге WEB-INF / lib внешней войны.

Во время запуска JBoss мы получаем ошибки java.lang.NoClassDefFoundError, потому что jar-мост не может найти API, присутствующий в WEB-INF / lib внешней войны.

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

Есть ли способ получить доступ к банкам, присутствующим в WEB-INF / lib внешней войны, из банки-мостика?Можем ли мы достичь этого, используя процесс сборки maven, или есть лучший подход к этому?

1 Ответ

1 голос
/ 17 ноября 2011

У нас недавно была похожая проблема с нашими банками, которые не могли видеть другие банки. Решил его, создав manifest.mf с использованием maven-ejb-plugin, определенным в pom.xml «моста jar»

2 способа сделать это:

a) если в файле pom.xml для jar-моста уже определены war1 и war2 как зависимости - используйте maven-ejb-plugin с

<configuration>
            <ejbVersion>3.0</ejbVersion>
            <archive>
            <manifest>
              <addClasspath>true</addClasspath>
            </manifest>
         </archive>

        </configuration>

Это должно автоматически сгенерировать manifest.mf с Classpath, соответствующим всем зависимостям, определенным в pom

b) еще, определите свой собственный manifest.mf с нужными вам записями и укажите на него следующим образом:

<configuration>
            <ejbVersion>3.0</ejbVersion>
            <archive>
            <manifestFile>src/main/resources/META-INF/MANIFEST.MF</manifestFile>
         </archive>

        </configuration>

Поскольку ваши банки находятся в WEB-INF / lib of war1, я думаю, вам следует перейти к варианту 2 с манифестом, содержащим прямые записи, такие как

Class-Path: WEB-INF/lib/some-external.jar

...