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

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

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

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

1 ответ

Решение

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

public interface ReadAccountBalance
{
    float getBalance ();
}

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

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

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

Другие вопросы по тегам