本文是为想在JBOSS环境下进行EJB开发的读者而写的,在阅读本文之前,你最好对EJB有一个基本了解。
JBOSS是一个开放源码的免费EJB服务器,它实现了其它J2EE所规定的大多数功能,现在sun公司已经把JBOSS作为J2EE1.4的标准实现服务器了。
以下是我从源代码中摘出来的部分注释,请结合工程文件查看。
/Files/anwenhao/EJBDemo.part1.rar
/Files/anwenhao/EJBDemo.part2.rar
/Files/anwenhao/EJBDemo.part3.rar
/Files/anwenhao/EJBDemo.part4.rar
/**
* 远程接口
*
* 远程接口支持EJB组件暴露的所有业务方法.
* 远程接口集成于EjbObject 容器生成的EJB对象继承了远程接口EjbObject
*
* 远程接口中实现的方法即为业务方法.
*
*
*/
/**
* EJB组件的home接口
* 在该home接口中存在create()方法. 对应于HelloBean中的ejbCreate()方法
*
* 为获取对EJB对象的引用客户需要使用create方法.其中create方法还可以帮助组件完成初始化工作.
* create方法需要抛出以下异常:RemoteException CreateException
*
* 所有的Home接口必须继承于他.
*
* 同时EJBHome接口已经定义了组件销毁remove()的方法,因此具体的Home不需要再次定义.
*
*
*/
/**
* 本地接口
*
* 当本地用户client同EJB本地对象交互时,需要使用这一接口.容器厂商会实现这一接口而对应的实现对象就是EJB本地对象
*
* 本地接口需要继承EJBLocalObject 与远程接口的差别是本地接口并不抛出RemoteException
*
*
*/
/**
* 本地home接口.
*
* 本地home接口是home接口的高性能版本.本地home接口继承于EJBLocalHome而不是EJBHome.EJBLocalHome并不继承于Remote其意味着本地home对象并不是远程对象.
*
*
*
*
*/
/**
* 无状态的SessionBean.
*
* 无状态的Bean实现了SessionBean接口.供实现会话的bean试用.其中SessionBean定义了企业Bean类必须实现的若干方法.
* 存在ejbCreate()方法.同Home对象的create()方法一致.
* 并且必须存在相关的业务方法.
* 无状态的SessionBean并不会试用到ejbActive()和ejbPassivate()方法.
*
*
* @author 安文豪 anwenhao@risesoft.net Jun 3, 2007 2:31:08 AM
*/
package com.ibm.ejb.test;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;
import javax.ejb.CreateException;
import javax.ejb.RemoveException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.rmi.PortableRemoteObject;
/**
* 客户端代码示例.用于调用简单,无状态SessionBean中的方法.
*/
public class HelloClient {
public static void main(String[] args) throws NamingException, CreateException, RemoveException, IOException{
Properties prop = new Properties();
File file = new File("ejbconfig.properties");
FileInputStream input = new FileInputStream(file);
prop.load(input);
/**
* 获得JNDI初始上下文
* 初始上下文是链接JNDI树的入口.借助环境属性能够完成JNDI驱动,服务器的网络地址等的设置.
*/
Context ctx = new InitialContext(prop);
Object obj = ctx.lookup("Hello");
/**
* 获得Home对象的引用.
*/
HelloHome helloHome = (HelloHome)PortableRemoteObject.narrow(obj,HelloHome.class);
/**
* 使用工厂来创建Hello Ejb对象
*/
Hello hello = helloHome.create();
/**
* 调用EJB对象的Hello方法.他将委派给EJB Bean类实例
* 一旦接受到响应结果他便会返回.
*/
System.out.println(hello.hello());
hello.remove();
}
}
posted on 2007-06-03 03:05
安文豪 阅读(1545)
评论(1) 编辑 收藏