@ Локальная аннотация в EJB 3 - PullRequest
1 голос
/ 19 мая 2010

У меня есть сессионный компонент без сохранения состояния и отдельная java-программа, выступающая в роли клиента. Метод bean-компонента выполняется очень хорошо, когда интерфейс помечен как @Remote. Однако, когда я отмечаю этот интерфейс @Local вместо @Remote, я получаю следующее исключение.

 [java] javax.naming.NamingException: Could not dereference object [Root exception is java.lang.RuntimeException: Could not find InvokerLocator URL at JNDIaddress "chapter1/HelloUserBean/local"; looking up local Proxy from Remote JVM?]

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

Видя такое поведение, я предполагаю, что Application-Server и Standalone-Java-Program используют разные экземпляры JVM, а не один экземпляр JVM, поэтому этот клиент может получить доступ только через удаленный интерфейс.

Это предположение верно?

Спасибо!

1 Ответ

4 голосов
/ 19 мая 2010

Да, это правильно.

@Local интерфейсы должны использоваться только внутри одного сервера приложений. Сервер приложений запускает один экземпляр JVM, а ваш автономный клиент запускает другой.

...