включить библиотеки моделей в jar-файл appclient - PullRequest
0 голосов
/ 11 июля 2011

Я размещаю ухо с EJB на glassfish 3.1, которое я хочу вызвать с помощью сценария appclient. В EJB есть метод с параметром объекта модели, который определен в отдельной библиотеке.

Если я хочу использовать скрипт appclient, у меня есть класс Main с методом main, который вызывает EJB. Это также помещается в отдельную банку, которая также размещается на стеклянной рыбе.

Поскольку объект модели находится в отдельной библиотеке, он мне нужен как в клиентском фляге, так и в EJB. Поэтому мне нужно как-то ссылаться на него в клиентской фляге.

Клиентская банка - это банка, поэтому я не могу добавить другие банки. Документы Java EE 6 говорят, что я должен создать ухо с помощью libs, но если я сделаю это, он не развернется, потому что для уха требуется как минимум ejb или веб-модуль, а у моей клиентской библиотеки нет ни того, ни другого.

Решение, которое я нашел, использует плагин сборки / jar-with-dependencies. Этот плагин создает новый jar, который содержит все классы всех зависимостей.

Это решение работает, но мне интересно, так ли это, или я упускаю что-то очевидное, потому что не могу себе представить, что это необходимо. EJB обычно имеют объекты модели в качестве параметров, поэтому такая ситуация будет происходить много раз.

Итак, мой вопрос: есть ли способ указать Glassfish ссылаться на общие библиотеки между JAR-файлом клиента приложения и EJB-файлом.

1 Ответ

0 голосов
/ 21 июля 2011

То, как я это делаю, выглядит следующим образом:

  • Отдельный проект Maven с моделью.В моем случае это набор простых POJO с аннотациями JPA и JAX-B, некоторыми константами и т. Д. В Maven я определяю это как OSGi-комплект , указав <packaging>bundle</packaging>.Я называю этот проект MyAppInterface.
  • Отдельные проекты Maven для других элементов, которые должны иметь дело с моделью.В моем случае у меня есть одно приложение Java EE с EJB, фасадом базы данных, сервлетом REST;У меня есть проект Integration-Test, который выполняет только тесты;приложение GWT;и т.д ... В этих проектах я определяю зависимость от модели:

    <dependency>
        <groupId>com.skalio</groupId>
        <artifactId>MyAppInterface</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
    
  • При развертывании MyAppInterface в Glassfish я использую следующий синтаксис:

asadmin deploy --type osgi --name MyAppInterface /path/to/MyAppInterface-1.0-SNAPSHOT.jar

  • Я так понимаю, что это размещение модели на пути к классу Glassfish, аналогично соединителю mysql, только в стиле OSGi.

Я позволил построить все эти проекты центральным CI-сервером jenkins, который развертывает артефакты в нашем внутреннем репозитории maven.Затем мы добавляем внутренний репозиторий в pom.xml каждого проекта.В результате все автоматически работают с последней стабильной версией MyAppInterface, даже если у них нет проверенного кода в NetBeans / Eclipse.

Дайте мне знать, если вам нужно больше примеров.

...