服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

j2ee编程起步(3)


  开发客户端
  
  客户端程序converterclient是一个独立运行的java应用,创建converterclient主要包括以下步骤:
  1. 客户端编码
  2. 客户端编译
  
  
  
  客户端编码
  converterclient.java 源码展示了ejb客户端最基本的任务实现,即:
  
  
  定位本地接口
  
  创建企业组件(ejb)
  
  调用商业方法
  
  
  定位本地接口
  
  converterhome接口定义了ejb声明周期方法如create,在中converterclient 可以调用create方法之前converterhome对象必须被实例化,包括三个步骤:
  
  
  1. 创建jndi命名上下文
  
  
  context initial = new initialcontext();
  
  2. 查找与jndi命名myconverter绑定的对象
  
  java.lang.object objref = initial.lookup("myconverter");
  
  3. 限定指向converterhome对象的参考
  
  converterhome home =
  (converterhome) portableremoteobject.narrow(objref,
  converterhome.class);
  
  创建企业组件(ejb)实例
  
  客户端通过调用本地接口converthome对象的create方法创建converterejb类对象, create 方法返回组件converter类型的对象。然后,远程方法定义的在converterejb实现的商业方法可以被客户端调用。当客户端调用create 方法时,ejb容器将实例化converterejb,然后调用converterejb.ejbcreate 方法。
  converter currencyconverter = home.create();
  
  
  调用商业方法
  
  完成上述任务后,调用商业方法就比较简单了。你调用converter对象的方法, ejb容器将相应的调用运行在j2ee服务器中的converterejb 例的方法。客户端调用商业方法dollartoyen的代码如下:
  
  
  double amount = currencyconverter.dollartoyen(100.00);
  converterclient源码
  
  
  
  下面是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("myconverter");
  
  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));
  
  currencyconverter.remove();
  
  } catch (exception ex) {
  system.err.println("caught an unexpected exception!");
  ex.printstacktrace();
  }
  }
  }
  编译客户端代码
  
  unix:
  1. 在下面脚本compileclient.sh, 对根据j2ee实际安装目录作相应改动。
  
  #!/bin/sh
  
  j2ee_home=
  cpath=.:$j2ee_home/lib/j2ee.jar
  
  javac -classpath "$cpath" converterclient.java
  
  2. 运行脚本文件compileclient.sh
  
  
  windows:
  1. 在下面批处理文件compileclient.bat中,对根据实际j2ee安装目录进行修改。
  
  set j2ee_home=
  set cpath=.;%j2ee_home%/lib/j2ee.jar
  
  javac -classpath %cpath% converterclient.java
  
  2. 运行批处理文件compileclient.bat
  
  
  运行客户端
  
  运行客户端你需要converterappclient.jar文件,该文件包含允许客户端与ejb容器中ejb实例通信所需的存根类,converterappclient.jar 文件在部署j2ee应用过程中创建。
  
  
  unix:
  1. 在下面脚本testclient.sh, 对根据j2ee实际安装目录作相应改动。
  
  #!/bin/sh
  
  j2ee_home=
  cpath=$j2ee_home/lib/j2ee.jar:converterappclient.jar:.
  
  java -classpath "$cpath" converterclient
  
  2. 运行脚本文件testclient.sh
  
  
  windows:
  1. 在下面批处理文件testclient.bat中,对根据实际j2ee安装目录进行修改。
  
  set j2ee_home=
  set cpath=.;%j2ee_home%/lib/j2ee.jar;converterappclient.jar
  
  java -classpath "%cpath%" converterclient
  
  2. 运行批处理文件 testclient.bat
  
  
  常见问题处理
  
  
  当运行converterclient 时发现下面错误:
  1. java.lang.classcastexception
  可能无法找到converterappclient.jar文件。
  2. java.lang.noclassdeffounderror: converterclient
  无法定位converterclient.class 文件。
  3. java.lang.noclassdeffounderror: javax/naming/context
  无法找到所需的j2ee.jar 文件,确认classpath设置。
  4. javax.naming.namenotfoundexception: lookup of name myconverter failed.
  j2ee服务器无法定位jndi名字myconverter所绑定的组件。
  5. javax.naming.namingexception: error accessing repository: cannot connect to orb at . . . .
  j2ee服务器没有运行。

扫描关注微信公众号