EJB с main () - что это такое? - PullRequest
       54

EJB с main () - что это такое?

4 голосов
/ 02 ноября 2010

Во время первоначального обучения для EJB от Sun я натолкнулся на довольно странную концепцию клиента корпоративного приложения, в котором есть понятие внедрения зависимости и основного класса:

@javax.ejb.EJB
private static auctionsystem.ejb.AuctionManagerRemote auctionManager;

public static void main (String[] args)
   {
   TestClient.logger.entering (TestClient.TAG, "main");

   final String message = "hello";
   TestClient.logger.log (Level.INFO, "Sending {0}", message);
   final String reply = auctionManager.communicationTest (message);
   TestClient.logger.log (Level.INFO, "Received {0}", reply);

   TestClient.logger.exiting (TestClient.TAG, "main");
   return;
   }

Я просто не могу найти дополнительную информацию по этому вопросу. Как:

  1. Как это должно работать.
  2. Как запустить такое приложение без NetBeans.
  3. Как построить эту конструкцию без NetBeans (т.е. с Maven).

Да, я использую NetBeans - но я не удовлетворен, если не могу выполнить ту же операцию в командной строке и / или в Maven.

Ответы [ 2 ]

6 голосов
/ 02 ноября 2010

Как это должно работать.

Это должен быть Java EE Application Client (другой тип модуля Java EE, который позволяет обернуть приложение Java SE, развернуть его на сервере приложений и использовать развернутые EJB, сервисы и ресурсы платформы ) и Java EE Клиент приложения Main-Class поддерживает внедрение ресурсов в static аннотированных полях или методах.

Как запустить такое приложение без NetBeans.

Предполагая, что Application Client упакован и развернут на сервере приложений, вам необходимо запустить Application Client Container (ACC). Команда зависит от сервера приложений.

Например, для GlassFish вам придется использовать команду appclient. С JBoss, смотрите эту вики-страницу для (огромной) команды. Для других серверов приложений обратитесь к соответствующей документации:)

Как построить эту конструкцию без NetBeans (т.е. с Maven).

клиент приложения - это обычный JAR-файл, содержащий:

  • Java-класс для доступа к bean-компоненту.
  • A META-INF/application-client.xml - (необязательно) Дескриптор развертывания клиента приложения Java EE.
  • Файл META-INF/MANIFEST.MF, ссылающийся на основной класс, в котором указывается полный префикс пакета и имя класса клиента Java.
  • Дескриптор развертывания для сервера приложений - (необязательно)

Ресурсы

2 голосов
/ 03 ноября 2010

Отвечая на мой собственный вопрос (снова)

  1. Как это должно работать?

    Класс main () развернут на сервере приложений, который внедряет зависимостии вызывает main ().Развертывание Glassfish осуществляется с помощью специальной команды (appclient).

  2. Как запустить такое приложение без NetBeans?

    Как сказано в Glassfish, запуститеклиент с использованием appclient.Например:

    appclient -enableassertions -mainclass auctionapp.TestClient -jar target / AuctionApp-ejb.jar

  3. Как построить эту конструкцию без NetBeans (т.е. с Maven)?

    Вы создаете обычный исполняемый файл jar.Он будет работать только в том случае, если ваши удаленные интерфейсы также находятся внутри библиотеки (что в любом случае является хорошим правилом), и эта библиотека включена в вашу исполняемую библиотеку.Вы можете использовать maven-assembly-plugin для создания исполняемого файла.Точно так же, как вы создаете обычный исполняемый файл jar.

Спасибо за помощь.Без ТАК я бы не узнал подробностей.

...