Позвоните Glassfish EJB из автономного приложения - PullRequest
2 голосов
/ 07 марта 2012

Итак, у меня есть простой ejb (@stateless), развернутый на сервере Glassfish 3.1.

Я хочу вызвать его из отдельного приложения.

Это прекрасно работает, если я добавлю gf-client.jar в мою конфигурацию запуска.

Но как я могу это сделать, если у меня нет этого файла (сервер находится на другом компьютере)?

Я пытался использовать

<dependency>
  <groupId>org.glassfish.common</groupId>
  <artifactId>glassfish-naming</artifactId>
  <version>LATEST</version>
</dependency>

Но у меня есть

Exception in thread "main" javax.naming.NameNotFoundException: java:global
at com.sun.enterprise.naming.impl.TransientContext.resolveContext(TransientContext.java:252)
at com.sun.enterprise.naming.impl.TransientContext.lookup(TransientContext.java:171)
at com.sun.enterprise.naming.impl.SerialContextProviderImpl.lookup(SerialContextProviderImpl.java:58)
at com.sun.enterprise.naming.impl.LocalSerialContextProviderImpl.lookup(LocalSerialContextProviderImpl.java:95)
at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:233)
at javax.naming.InitialContext.lookup(Unknown Source)
at be.java.tuto.Application.main(Application.java:17)

Спасибо.

1 Ответ

0 голосов
/ 10 марта 2012

РЕДАКТИРОВАНИЕ:

Мне просто нужно было вызвать EJB, развернутый в GF, с моего сервера Tomcat и воскресить мои зависимости.И потому что я не хочу, чтобы они оставались для себя:) ... minimal dependencies for gf bean invokation

Моя IDE Eclipse , поэтому я создал Пользовательскую библиотеку , содержащую всефайлы, показанные выше.

Надеюсь, что это решит вашу проблему!


Я столкнулся с той же проблемой.Для того, чтобы просто вызвать метод GF session-Bean, мне нужно было добавить полный gf-client.jar в мой путь к классу клиентов.

Моя проблема заключалась в том, что эта библиотека ссылается почти на всюGF-libray-folder, и даже после очистки осталось> 15 ссылочных jar-файлов, которые мне пришлось добавить в classpath моих клиентов.

Для меня я не хотел этих накладных расходов, поэтому я решил вызватьудаленный метод через веб-сервис JAX-WS.

Преимущество использования веб-сервисов состоит в том, что очень просто добавить возможность веб-сервиса в уже существующий сессионный компонент, пометив класс компонента с помощью @ WebService .

После публикации компонента на сервере приложений вы можете просмотреть развернутую конечную точку и получить WSDL.При этом вы можете автоматически генерировать заглушки веб-сервисов с помощью wsimport -инструмента, поставляемого с JDK, и использовать эти сгенерированные файлы в вашем клиенте для вызова удаленного метода.

См. Пример здесь .

После создания эти файлы являются переносимыми и могут использоваться в любом клиенте.

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

PS Вы не теряете возможность вызова вашего метода через EJB-вызов.

Надеюсь, это помогло, получайте удовольствие!

...