Философия Java


Разработка EJB - часть 4


Поскольку EJB компоненты являются распределенными компонентами, процесс установки должен также создавать некотые клиентские якоря для вызова EJB компонент. Эти классы должны помещаться в classpath клиентского приложения. Поскольку EJB компоненты могут реализовываться поверх RMI-IIOP (CORBA) или RMI-JRMP, генерируемые якоря могут различаться в зависимости от EJB Контейнера, тем не менее, они являются генерируемыми классами.

Когда клиентмкая программа хочет вызвать EJB, она должна найти EJB компонент внутри JNDI и получить ссылку на домашний интерфейс EJB компонента. Домашний интерфейс используется для создания экземпляра EJB.

В этом примере клиентская программа - это простая Java программа, но вы должны помнить, что она так же легко может быть сервлетом, JSP или даже распределенным объектом CORBA или RMI.

//: c15:ejb:PerfectTimeClient.java

// Клиентская программа для PerfectTimeBean

public class PerfectTimeClient { public static void main(String[] args) throws Exception { // Получение контекста JNDI с помощью

// JNDI службы Указания Имен:

javax.naming.Context context = new javax.naming.InitialContext(); // Поиск Домашнего интерфейса в

// службе JNDI Naming:

Object ref = context.lookup("perfectTime"); // Приведение удаленного объекта к домашнему итерфейсу:

PerfectTimeHome home = (PerfectTimeHome) javax.rmi.PortableRemoteObject.narrow( ref, PerfectTimeHome.class); // Создание удаленного объекта из домашнего интерфейса:

PerfectTime pt = home.create(); // Вызов getPerfectTime()

System.out.println( "Perfect Time EJB invoked, time is: " + pt.getPerfectTime() ); } } ///:~

Последовательность выполняемых действий поясняется комментариями. Обратите внимание на использование метода narrow( ) для совершения приведения объекта перед выполнением Java приведения. Это очень похоже на то, что происходит в CORBA. Также обратите внимание, что Домашний объект становится фабрикой для объекта PerfectTime.




Начало  Назад  Вперед