Linux中国 Linux中国门户站!
设为主页 设为主页
收藏本站 收藏本站
 
当前位置 :首页 ->Linux技术 ->系统管理 ->正文

EJB和JSP, Servlet(一) EJB简介

来源:Linux-cn.com 作者:Webmaster 时间:2007-05-05 点击: [收藏] [投稿]

  EJB和JSP, Servlet

  EJB是J2EE规范的一部分,如果要完全的掌握EJB需要对J2EE规范有详细的了解.限于本书的题目,在这里我将只介绍EJB,以及EJB和JSP, SERVLET的关系和运用。关于J2EE的其他部分,可以在其他地方获取资料,或者访问JAVA.SUN.COM/J2EE。

  在这一部分,我将首先介绍EJB的概念,然后分别介绍SESSION BEAN, ENTITY BEAN, 接着介绍EJB和JSP, SERVLET如何共同使用,最后,给出一个完整的例子。

  一、两个简单的例子

  要编译、运行这两个例子,你需要安装J2SE, J2EE, 以及ANT.J2SE 可以到JAVA.SUN.COM/J2SE 下载。J2EE 可以到JAVA.SUN.COM/J2EE 下载。ANT 可以到JAKARTA.APACHE.ORG下载。安装并且按手册设置好环境以后,就可以开始了。

  看一个简单的例子, 先来看看代码:


Converter.java:
import javax.ejb.EJBObject;
import java.rmi.RemoteException;
public interface Converter extends EJBObject {
   public double dollarToYen(double dollars) 
   throws RemoteException;
   public double yenToEuro(double yen) 
   throws RemoteException;
}
ConverterClient.java
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.rmi.PortableRemoteObject;
import Converter;
import ConverterHome;
public class ConverterClient {
   public static void main(String[] args) {
       try {
           Context initial = new InitialContext();
           Object objref = initial.lookup
	   ("java:comp/env/ejb/SimpleConverter");

           ConverterHome home = 
               (ConverterHome)PortableRemoteObject.narrow(objref, 
                                            ConverterHome.class);
           Converter currencyConverter = home.create();
           double amount = currencyConverter.dollarToYen(100.00);
           System.out.println(String.valueOf(amount));
           amount = currencyConverter.yenToEuro(100.00);
           System.out.println(String.valueOf(amount));

       } catch (Exception ex) {
           System.err.println("Caught an unexpected exception!");
           ex.printStackTrace();
       }
   } 
} 
ConverterEJB.java:
import java.rmi.RemoteException; 
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;
public class ConverterEJB implements SessionBean { 
   public double dollarToYen(double dollars) {
      return dollars * 121.6000;
   }
   public double yenToEuro(double yen) {
      return yen * 0.0077;
   }
   public ConverterEJB() {}
   public void ejbCreate() {}
   public void ejbRemove() {}
   public void ejbActivate() {}
   public void ejbPassivate() {}
   public void setSessionContext(SessionContext sc) {}
} // ConverterEJB
ConverterHome.java:
import java.io.Serializable;
import java.rmi.RemoteException;
import javax.ejb.CreateException;
import javax.ejb.EJBHome;
public interface ConverterHome extends EJBHome {
    Converter create() throws RemoteException, CreateException;
}
定义Remote Interface:
Converter.java:
import javax.ejb.EJBObject;
import java.rmi.RemoteException;
public interface Converter extends EJBObject {
public double dollarToYen(double dollars) 
throws RemoteException;
public double yenToEuro(double yen) throws RemoteException;
} 

  Remote Interface定义的是客户端可以调用的方法。在这里,我们可以看到,Remote interface继承的是EJBObject, 所有的EBJ remote interface 必须继承EJBObject interface,并且定义该EJB的方法,remote interface提供了客户端能够调用的EJB 对象的方法。

  定义Home Interface:


ConverterHome.java:
import java.io.Serializable;
import java.rmi.RemoteException;
import javax.ejb.CreateException;
import javax.ejb.EJBHome;
public interface ConverterHome extends EJBHome {
    Converter create() throws RemoteException, CreateException;
} 

  EJBHome interface被所有的EJB home继承。一个EJB home interface定义了客户端可以create, find, remove EJB对象的方法。每个ejb都有一个home interface. 这个home interface必须继承EJBHome.在这个例子中,只继承了EJBHome, 并定义了create 方法。

  下面是EJB的核心部分,即EJB类的定义。在这个类里面,定义了ejb能完成的工作。这个bean实现了两个方法,分别是dollarToYen 和yenToEuro, 从名字上可以知道功能分别是把美元转换成人民币,和把人民币转换成为欧元。


ConverterEJB.java:
import java.rmi.RemoteException; 
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;
public class ConverterEJB implements SessionBean {
   public double dollarToYen(double dollars) {
      return dollars * 121.6000;
}
   public double yenToEuro(double yen) {
      return yen * 0.0077;
}
   public ConverterEJB() {}
   public void ejbCreate() {}
   public void ejbRemove() {}
   public void ejbActivate() {}
   public void ejbPassivate() {}
   public void setSessionContext(SessionContext sc) {}
} 

  这个ejb是一种session bean,关于session bean, 我将在后面详细介绍。SessionBean是以EnterpriseBean为基类的一种bean, 而每个bean都必须以EnterpriseBean为基类。需要注意的是,这个ConverterEJB implements了SessionBean, SessionBean是一个Interface,定义了很多方法,所以,在implements的时候,必须同时实现所有的SessionBean中定义的方法,比如上面,

 如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<



上一篇:EJB和JSP, Servlet(二)Session Bean   下一篇:Jboss下配置EJB

文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论
更多相关文章
Power by linux-cn.com 粤ICP备05006655号