Как вызвать EJB из автономной Java-программы в другой JVM - PullRequest
2 голосов
/ 30 января 2012

Я разработал EJB, используя NETbeans IDE с сервером Glassfish. Я могу вызвать его из автономной java, только если этот java-проект разработан под NETbeans и запущен под той же JRE. Но мне нужно выяснить, как запустить его в разных jre. Я не мог найти большую помощь в этом. Какие-либо предложения? (или связанные ссылки будут делать) Спасибо,

Ответы [ 2 ]

1 голос
/ 30 января 2012

ШАГ 1:

Context context = new InitialContext(): 
  1. Исходный контекст является ссылкой на службу поиска JNDI.
  2. Это похоже на запись в дереве виртуальных каталогов JNDI.

ШАГ 2:

Object o = context.lookup("mejb"): 
  1. Здесь, в поиске, нам нужно дать имя бина независимо от того, что развернуто на сервере, чтобы получить ссылку на домашнюю страницуинтерфейс этого bean-компонента.
  2. Затем мы получаем объект типа java.lang. Объект, который нам нужен для приведения этого объекта к интерфейсу Home того бина, на котором мы выполняли поиск.

ШАГ 3:

Home home = (Home) PortableRemoteObject.narrow(o,Home.class):
  1. Нам на самом деле нужно привести объект к типу, который, на наш взгляд, является типом.Однако, поскольку это RMI поверх IIOP, нам нужно использовать метод PortableRemoteObject.narrow, поэтому он, похоже, фильтрует тип объекта по фактическому типу объекта и проверяет наличие ошибок.
1 голос
/ 30 января 2012

Чтобы вызвать EJB из удаленной JVM, вам необходимо

  • Использовать аннотацию @Remote для вашего EJB

  • Предоставить банку с интерфейсамии поместите его в classpath вашего client-vm

  • Используйте JNDI для получения ссылки на заглушку EJB с сервера.

  • Для JNDI вам понадобится реализация, которая зависит от контейнера (например, если его JBoss jboss-client-all.jar должно быть достаточно (я не помню точное имя, но я думаю, что вы поняли)

Как только вы освоитесь с общими понятиями и определениями, прочитайте этот пример, я думаю, он достаточно удобен Пример

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...