Общая библиотека Weblogic 10 не отображается в ссылочных приложениях - PullRequest
3 голосов
/ 26 января 2010

В WebLogic 10.0 я использую функцию «Shared J2EE Libraries» (http://download.oracle.com/docs/cd/E11035_01/wls100/programming/libraries.html) в WLS, чтобы сгруппировать некоторые банки, которые должны быть доступны для нескольких ушей. Эти файлы находятся в системном classpath, и я пытаюсь переместить их в общую библиотеку оттуда.

Моя проблема:

  • в консоли веб-администратора WLS я щелкаю общую библиотеку (называемую «theSharedLib») в разделе «Развертывания»
  • список «Приложения, ссылающиеся на эту библиотеку» пуст
  • Я также могу отменить развертывание библиотеки с помощью weblogic.Deployer, но при следующем перезапуске сервера он жалуется на отсутствие библиотеки, на которую ссылаются, при загрузке приложения, на которое ссылаются

Похоже, что при запуске ссылки вступают в силу, но во время выполнения WLS как-то об этом забывает (нужен ли здесь какой-то фокус?).

Я также мог бы достичь этого:

  • отменить использование SharedLib (без жалоб)
  • отменить развертывание someReferencingApp (ok)
  • развернуть someReferencingApp (ошибка! Отсутствует библиотека)
  • развернуть SharedLib (нормально)
  • deploy someReferencingApp (хорошо; приложение отображается в веб-консоли; однако при следующем перезапуске или после других случайных развертываний список снова становится пустым)

Структура разделяемой библиотеки в разобранном формате каталогов:

  • META-INF
    • MANIFEST.MF
    • application.xml
  • Lib
    • (вещи, которые я хочу поделиться как баночки)
  • dummyejb.jar (потому что он должен что-то содержать)

MANIFEST.MF содержит:
..
Внутренний номер: theSharedLib
Спецификация-версия: 1.0
Реализация-версия: 1.0.0
..

application.xml содержит базовые элементы (один модуль dummyejb ejb).

Структура ссылочного приложения:

Среди прочего, имеется META-INF / weblogic-application.xml, содержащий:

<? Xml version = "1.0"?>

<Библиотека-исх>
<Имя-библиотеки> theSharedLib </ имя-библиотеки>
<Спецификация-версия> 1,0 </ спецификация-версия>
<Реализация-версия> 1.0.0 </ реализация-версия>
<Точного соответствие> True </ точный матч>
</ Библиотека-исх>
</ weblogic-application>

В чем может быть проблема? Должен ли я делать что-либо еще в разделяемой библиотеке или в ссылочных приложениях, чтобы (1) иметь список ссылок правильно и, что наиболее важно (2) делить банки между приложениями?

Я предполагаю, что совместно используемые jar-файлы внутри библиотеки загружаются с использованием одного и того же загрузчика классов в разделяемой библиотеке lib для каждого приложения, что ведет себя почти как поведение sys classpath. Не могли бы вы также подтвердить это?

Спасибо!

Ответы [ 2 ]

1 голос
/ 27 января 2010

Спасибо за информацию. На самом деле это то, что я узнал:

1) Списки ссылочных приложений исчезают с веб-консоли, если при развертывании ссылочного приложения происходит сбой (странно - возможно, у этого есть более глубокие причины, но сейчас это вполне соответствует).

2) К сожалению, классы внутри разделяемой библиотеки загружаются загрузчиками классов различных ссылочных приложений, поэтому таким образом невозможно совместно использовать, например, классы интерфейса для целей взаимодействия между приложениями.

0 голосов
/ 27 января 2010

Я думаю, что MANIFEST.MF разделяемой библиотеки (которая является EAR) должна содержать запись Class-Path, ссылающуюся на JAR в lib (это говорит загрузчику классов, где искать классы). Как то так:

Class-Path: lib/foo.jar lib/bar.jar lib/foobar.jar
...