Добавление банок в приложение в application.xml?

У меня есть Java-приложение, которое необходимо развернуть на сервере weblogic. В настоящее время я делаю файл с ушами для этого приложения. В моем ухе есть банка с ejb. Я хочу добавить баночки log4j2 в это приложение. Итак, моя структура папок

> Project-Name-
>     --Ear-Content
>         --APP-INF
>             --lib -> log4j2 jars
>             --classes - > log4j2.xml
>         --META-INF->application.xml, MANIFEST.MF, weblogic-application.xml
>         --Project-Name.jar

В настоящее время я поместил jar-файлы в папку APP-INF /lib и в META-INF/application.xml я поместил jar-файлы в модули. Вот мое application.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE application PUBLIC '-//Sun Microsystems, Inc.//DTD J2EE Application 1.3//EN' 'http://java.sun.com/dtd/application_1_3.dtd'>
<application>
  <display-name>ProjectName</display-name>
  <description>ProjectName</description>

  <module>
        <ejb>ProjectName.jar</ejb>

  </module>
  <module>
        <java>lib/log4j-api-2.1.jar</java>

  </module>
  <module>
  <java>lib/log4j-core-2.1.jar</java>
  </module>


</application>

Но это не брать баночки log4j. Какие-то решения??

1 ответ

Решение

Если вы упаковываете только одно приложение, я настоятельно рекомендую использовать файл war вместо уха, поскольку он проще. В противном случае вам может понадобиться упаковать ваш текущий Project-Name.jar в файл войны, а затем упаковать его в ухо.

Смотрите учебник, как здесь

Тем не менее, вам не нужно явно ссылаться на библиотеки log4j в вашем файле application.xml с помощью module теги. Из документов Oracle:

Классы и библиотеки, хранящиеся в APP-INF/classes и APP-INF/lib, доступны для всех модулей в приложении Enterprise. Загрузчик классов приложения всегда пытается разрешить запросы классов, сначала просматривая APP-INF/classes, затем APP-INF/lib.

И последнее, но не менее важное: если кажется, что Weblogic не использует классы, которые вам нужны, а вместо этого использует значения по умолчанию, в вашем случае log4j 1.2 против log4j 2вам нужно будет установить следующее в вашем application.xml, чтобы сообщить Weblogic, какой из них использовать:

<prefer-application-packages>
    <package-name>org.apache.log4j.*</package-name>
</prefer-application-packages>
Другие вопросы по тегам