Смекни!
smekni.com

Сервер приложений & JavaBeans (стр. 2 из 2)

package com.itspec.ejbexamp;

import javax.ejb.*; import java.util.*; import java.rmi.*;

public interface EJBExampleHome extends javax.ejb.EJBHome {

public EJBExampleHome createO throws CreateException, RemoteException;

Класс происходит от EJBObject и объявляет один единственный конструктор. Для простого компонента этого вполне достаточно. В более сложных компонентах вы можете реализовать несколько вариантов конструкторов с различным количеством передаваемых параметров.

И последний класс EJBObject для нашего примера будет выглядеть так:

package com.itspec.ejbexamp;

import javax.ejb.*; import java.util.*; import java.rmi.*;

public interface EJBExample extends javax.ejb. EJBObject {

public void SomeMethodlO throws RemoteException;

public void SomeMethod2() throws RemoteException;

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

Клиент

Компонент можно считать готовым. Теперь посмотрим, как клиент может использовать EJB. Полноценное приложение мы писать не будем, ибо изучение самого языка Java выходит за рамки статьи. Мы увидим только абстрактный код создания и вызова метода EJB-компонента Но для начала необходимо подключить следующий пакет: import javax. naming.*;

Этим мы подключили функции JNDI контекста именования. JNDI (Java Naming and Directory Service) — это Naming Service, который позволяет нам работать с объектами по дружественным именам. Тут ничего нового нет, этот сервис всего лишь надстройка над уже существующими (DNS, LDAP, CORBA, RMI), которая предоставляет универсальный набор API, позволяющий работать с любым из этим сервисов именования.

// инициализация контекста JNDI

Context initCtx = new

InitialContextO;

// получаем Home объект

EJBExampleHome ejbObj =

(E JBExampleHome) initCtx.

lookup ("EJBExample" ) ;

EJBExample ejbHome = ejbObj.Created;

e jbHome. SomeMethodl () ; ejbHome. SomeMethod2 () ;

В первой строке создаем класс контекста (Context), через который мы можем получить доступ к функциям JNDI. Во второй строке мы уже используем этот контекст, а точнее—его метод lookup для поиска необходимого нам EJB-компонента Результатом поиска будет объект EJBExampleHome, это у нас HomeObject, через который мы можем создать сам компонент. Это и делаем в третьей строке, вызовом метода Create. На этот раз, результатом будет объект EJBExample. Помните, мы говорили о том, что через него мы будем получать доступ к методам удаленного компонента? Значит, мы получили то, что нужно. Последние две строки кода показывают, как можно вызвать оба имеющихся у компонента метода Да, они в данном примере ничего не делают, но работу проверить уже можно.

Установка

Установка J2ЕE-пpилoжeний—занятие не для слабонервных. В основном это касается тех, кто привык работать с мышкой, Windows-приложениями и графическими программами установки. Для поставки приложений J2EE используются .ear-архивы, которые схожи с J2SE-apxивами.jar. Сама установка архива на сервер зависит от используемого сервера приложений. Современные среды разработки Java включают в себя мастера или утилиты, упрощающие подготовку архивов J2EE или вообще, автоматизирующих процесс создания подобного архива Вам не нужно вручную писать файл манифеста и собирать файлы с помощью утилит командной строки, все будет сделано автоматически.

Итого

Мы рассмотрели только небольшой шаблон сессионного компонента Enterprise JavaBeans. Этот шаблон еще ничего не умеет делать и только объявляет два метода. На первый взгляд создается впечатление, что код получился слишком сложным. А ведь это только верхушка айсберга Если посмотреть, что происходит на нижнем уровне (внутри сервера приложений), то можно ужаснуться. Но испуг возникает только на первых порах, ведь втом, что мы написали сегодня нет ничего лишнего.

Для безопасности, надежности и эффективности действительно нужны все три класса, но при использовании современных сред разработки вам не придется писать код вручную. Такие интеллектуальные Java IDE, как Borland JBuilder или NetBeans от Sun Microsystems, позволяют сделать все три класса, рассмотренные сегодня, двумя кликами мышки.

Код EJB-компонента

package corn.itspec.ejbexarnp;

import javax.ejb.*; import java.rmi.*;

public class EJBExampleBean implements SessionBean {

// поле для хранения контекста сессии

SessionContext sessionContext;

// реализация методов интерфейса SessionBean

publicvoidejbCreateOthrowsCreateException {

/* Метод создания компонента V } publicvoidejbRernoveO {

/* Уничтожение компонента V } publicvoidejbActivateO {

/* Активация компонента V } publicvoidejbPassivateO {

/* Деактивация компонента */ }

public void setSessionContext(Se ssionContext context) {

/* Контекст сессии */

this.sessionContext = context;

// реализация собственных методов компонента public void SomeMethodlO{

// Здесь реализуйте метод 1 }

public void SomeMethod2(){ // Здесь реализуйте метод 2

Список литературы

IT спец № 07 ИЮЛЬ 2007