一个简单的J2EE应用实例

零、概述

本示例中包括三个J2EE组件:

1)企业Bean

2)J2EE客户端

3)Web组件

 

一、企业Bean

它有三部分组成:

a)远程接口 - 声明客户可调用的业务方法

b)Home接口 - 声明客户端创建、查找或删除一个企业Bean的方法

c)企业Bean类 - 实现业务方法

 

1.1 远程接口

import javax.ejb.EJBObject;
import java.rmi.RemoteException;
import java.math.*;

 

public interface Converter extends EJBOjbect {
     public BigDecimal dollarToYen(BigDecimal dollars)
             throws RemoteException;
 
     public BigDecimal yenToEuro(BigDecimal yen)
             throws RemoteException;
}

 

1.2 Home接口

 

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;

}

 

1.3 企业Bean类

 

import java.rmi.RemoteException;

import javax.ejb.CreateException;

import javax.ejb.EJBHome;

import java.math.*;

 

public class ConverterBean implements SessionBean {

    BigDecimal yenRate = new BigDecimal ("121.6000");

    BigDecimal euroRate = new BigDecimal ("0.0077");

 

    public BigDecimal dollarToYen(BigDecimal dollars) {

         BigDecimal result = dollars.multiply (yenRate);

         return result.setScale (2, BigDecimal.ROUND_UP);
    }

   

    public BigDecimal yenToEuro(BigDecimal yen) {

         BigDecimal result = yen.multiply(euroRate);

         return result.setScale (2, BigDecimal.ROUND_UP);
    }

 

     public ConverterBean() {}

     public void ejbCreate() {}

     public void ejbRemove() {}

     public void ejbActivate() {}

     public void ejbPassivate() {}

     public void setSessionContext(SessionContext sc) {}

 

二、J2EE客户端

 

    J2EE客户端需要执行的基本任务是:

    1) 定位Home接口

    2) 创建企业Bean的实例(远程接口)

    3) 执行业务方法

 

<ConvertClient类的源代码>

 

import javax.naming.Context;

import javax.naming.InitialContext;

import javax.rmi.PortableRemoteObject;

import java.math.BigDecimal;

 

public class ConvertClient {

   

    public static void main (String[] args) {

        try {

              /*创建初始化的命名上下文空间,initialContext类的一个实例对象实现了Context接口,提供了名字处理的入口 */

              Context initial = new InitialContext();

 

              /* 取得上下文环境并绑定一个企业Bean的引用:其中

                  ejb/SimpleConverter绑定了一个企业Bean的引用,也就是企业Bean的Home接口的逻辑名,必须在部署时指定它和

                  ConverterHome的对应关系*/

              Object objref = initial.lookup ("java:comp/env/ejb/SimpleConverter");

 

              /*把绑定在ejb/SimpleConverter上的对象转型为ConverterHome对象 */

              ConverterHome home = 

                       (ConvertHome)PortableRemoteObject.narrow(objref, ConverterHome.class);

 

              /* 创建远程接口类型的对象*/

              Converter currencyConverter = home.create();

             

              /* 调用Converter中的业务方法

                  EJB容器会调用运行在J2EE服务器上的ConverterEJB实例中(部署时,指定ConverterBean对应的Enterprise

                  Bean Name为ConverterEJB)的相应的方法*/

              BigDecimal param = new BigDecimal("100.00");

             

              BigDecimal amount = currencyConverter.dollarToYen(param);

              System.out.println(amount);

 

              amount = currencyConverter.dollarToEuro(param);

              System.out.println(amount);              

        } catch (Exception ex) {

              System.err.println("Caught an unexpected exception!");

              ex.printStackTrace();

        }

    }

}

 

三、Web客户

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值