代码人生学习品之EJB入门篇(三)


在上一讲,我们将EJB通过Application Deployment Tool发布进了J2EE服务器中去。我想大家十分想使用一个客户端的程序来调用它。好,我们这一讲就来讲讲客户端程序的编 写。

  首先,我们先理一下思路。如果要使用服务器上的EJB哪么首先我们要得到一个Home接口,而这个接口需要你通过JNDI来得到,哪么JNDI是通过什么来找Home接口呢?哪就是我们在上一讲中所提到的在Application Deploying Tools里最后一步定义的JNDI name。再来理一下,首先,我们通过JNDI name利用JNDI来得到一个Home接口。再通过这个Home接口中的creat方法来得到一个Bean的实例化对象。以下为这段程序的代码:

  我们新建一EJBClient的工程,在这个工程中我们加入一ConverterClient.java文件,同时在工程中加入J2EE的lib引用,并且更增加一个lib,这个lib指向我们在上一讲中使用Application Deployment Tool生成的ConverterAppClient.jar文件。这里包括了EJB在客户端所使用的库文件。以下是ConverterClient.java文件代码:

ConverterClient.java

/**

  * Title: EJB Client Test Project$#@60;p$#@62;

  * Description: $#@60;p$#@62;

  * Copyright: Copyright (c) HD$#@60;p$#@62;

  * Company: China Code$#@60;p$#@62;

  * @author HD

  * @version 1.0

*/

package ejbclient;



import javax.naming.Context;

import javax.naming.InitialContext;

import javax.rmi.PortableRemoteObject;

//引用了EJB及EJB在Home的接口

import ejbtest.Converter;

import ejbtest.ConverterHome;



public class ConverterClient {



public static void main(String[] args) {

  try {

   //创建一个JNDI naming contest

   Context initial = new InitialContext();

   //从JNDI中以MyConverter名子来定位到对象(我们在发布时指定了这里能定位的JNDI的名称)

   Object objref = initial.lookup("MyConverter");

   //通过objref得到ConverterHome本地接口

   ConverterHome home =

     (ConverterHome)PortableRemoteObject.narrow(objref,

  ConverterHome.class);

   //再由Home接口的create方法来创建一个服务器上的EJB实例

   Converter currencyConverter = home.create();

   //调用EJB中的方法

   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();

   }

  }

}

  把这个java文件加入到在第一讲中我们建立的工程文件中去,让Jbuilder make工程一次。这样就会得到ConverterClient.class文件。在运行前我们要设置一下Jbuilder的工程,在Project-Project Properties…的Project Properties对话框中的Run Tab中设置Application的Main Class为ConverterClient。

  如果你得到java.lang.ClassCastException的意外。哪么你需要确定是否在Project的lib中加入了对ConverterAppClient.jar包的引用。另外你一定要确认你在工程中使用的JNDI name是否与你在程序中使用的名称一样。通常出现问题就在这点了。

  好,这里让你运行起来了第一个EJB的程序。实际上很简单,不是吗?我们会在下一讲中来讲讲EJB实施的原理。我在大多数的教程中都看到的是将理论放在最开始的地方,而我觉得先运行起一个实例更有利于大家的学习,更能有效的对EJB有一个深入的认识。我们在下一讲中来依照我们刚完成的实例理解一下EJB的部属和使用。
本文作者:
« 
» 
快速导航

Copyright © 2016 phpStudy | 豫ICP备2021030365号-3