2013-12-10 5 views
0

Давайте предположим, что мы используем EJB3 и наша сессионный компонент использует/реализует локальный интерфейс L и удаленный интерфейс R.EJB Local включает Remote

@Local 
public interface L { 
abstract void localMethod(); 
} 

@Remote 
public interface R { 
    abstract void remoteMethod(); 
} 

Мой вопрос 1:

может локальный клиент также использовать remoteMethod?

Мой вопрос 2:

это хорошая практика, чтобы расширить локальный интерфейс с удаленным интерфейсом?

@Local 
public interface L extends R { 
... 
} 

ответ

2
  1. Это не ясно, что вы имеете в виду "локальный клиент". Если у вас есть клиент в том же процессе, он может использовать как L, так и R, но вы должны искать/вводить их отдельно: вы не можете искать L, отбрасывать в R и вызывать remoteMethod.

  2. Я бы прекратил называть это «хорошей» практикой. Параметры и возвращаемые значения методов на удаленном интерфейсе будут проходить по значению, но параметры и возвращаемые значения методов на локальном интерфейсе будут передаваться по ссылке. Тем не менее, если ваш EJB и его клиенты знают об этом предостережении, вы можете получить гораздо лучшую производительность, используя локальный интерфейс, когда это возможно.

Смежные вопросы