posts - 30,  comments - 85,  trackbacks - 0

         本文是为想在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 安文豪 阅读(1546) 评论(1)  编辑  收藏

FeedBack:
# re: EJB完整示例
2007-06-04 16:05 | 坏男孩
写的好啊,顶  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航:
博客园   IT新闻   Chat2DB   C++博客   博问  
 

<2007年6月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

常用链接

留言簿(6)

随笔档案(28)

文章分类(3)

文章档案(4)

最新随笔

搜索

  •  

积分与排名

  • 积分 - 86236
  • 排名 - 665

最新评论

阅读排行榜

评论排行榜