Почему одному сессионному EJB-компоненту разрешено иметь несколько интерфейсов?

1

Я изучаю EJB 3.0 из книги EJB 3 в действии. В разделе под анатомией сессионного компонента упоминается, что:

Интерфейс, через который клиент вызывает компонент, называется бизнес-интерфейсом. Этот интерфейс существенно определяет методы компонента, подходящие для доступа через определенный механизм доступа. Интересно отметить сейчас тот факт, что один EJB может иметь несколько интерфейсов. Другими словами, классы реализации EJB могут быть полиморфными, что означает, что разные клиенты, использующие разные интерфейсы, могут использовать их совершенно по-разному.

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

Теги:
ejb
ejb-3.0
design-decisions

1 ответ

2
Лучший ответ

Причина проста. Каждый интерфейс должен быть доступен конкретному типу клиента. Например, скажем, вы внедряете банковскую систему и создаете компонент для доступа к балансу. В этом случае вы можете использовать два интерфейса. Один для чтения баланса и один для его изменения

public interface ReadAccountBalance
{
    float getBalance ();
}

public interface WriteAccountBalance
{
    void setBalance (float balance);
}

public class AccountBalanceBean implements ReadAccountBalance, WriteAccountBalance
{
    ...
}

Теперь вы можете распространять ReadAccountBalance с клиентскими пакетами, для которых требуется только доступ к содержимому с балансом счета, в то время как WriteAccountBalance будет распространяться только с клиентами, нуждающимися в фактическом изменении баланса

  • 0
    Должен ли EJB-компонент (в вашем случае AccountBalanceBean) реализовать все интерфейсы или это необязательно?
  • 0
    @Geek Как и во всех интерфейсах, ваш компонент может реализовывать столько, сколько вам нужно. Очевидно, что если бы вы не реализовали интерфейс WriteAccountBalance, ни один клиент не смог бы установить баланс

Ещё вопросы

Сообщество Overcoder
Наверх
Меню