精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● Java>>J2EE>>J2EE入门>>J2EE入门(4)[转载]

主题:J2EE入门(4)[转载]
发信人: zjxyz(xyz)
整理人: zjxyz(2002-01-06 13:59:25), 站内信件
创建J2EETM应用程序客户端  
J2EE应用程序客户端由JavaTM语言编写,在运行的时候,客户端程序和J2EE SERVER执行在不同的虚拟机(VM)中  

在这个例子中,J2EE应用程序客户端需要两个不同的JAR文件.第一个JAR文件是客户端的J2EE组件.这个JAR文件包含客户端的deployment descriptor和它的类文件.当你运行New Application Client wizard,deploytool自动创建JAR文件然后把它存到应用程序的EAR文件中. 由J2EE规范定义的JAR文件可以方便的跨越所有兼容J2EE的服务器.  

第二个JAR文件包含客户端程序运行时必需的stub类.这些stub类使客户端可以访问运行在J2EE server上的enterprise beans. Because this second JAR file is not covered by the J2EE Specifications, it is implementation-specific, intended only for the J2EE SDK.  

J2EE应用程序客户端源代码在examples/src/ejb/converter/ConverterClient.java中.在这个章节中,你已经把它随同enterprise bean代码一起编译, 编译源码文件.  

编写J2EE应用程序客户端  
ConverterClient.java源代码说明了enterprise bean的客户端执行的基本任务:  

定位home interface  
创建enterprise bean实例  
调用商务方法  
定位Home Interface  
ConverterHome接口定义象create一样具有生命周期的方法.在ConverterClient能调用create方法之前,它必须例示(instantiate)ConverterHome类型的对象. 它分为3步处理:  

创建JNDI naming context.  
 Context initial = new InitialContext();  

取得绑定到ejb/SimpleConverter的对象.  
Object objref = initial.lookup 
   ("java:comp/env/ejb/SimpleConverter");  

Narrow the reference to a ConverterHome object.  
 ConverterHome home = 
    (ConverterHome) PortableRemoteObject.narrow(objref, 
    ConverterHome.class);  

创建一个Enterprise Bean实例  
要创建bean实例,客户端调用ConverterHome中的create方法并且返回一个Converter类型的对象.远程Converter接口定义客户端可以调用的在bean中的商务方法.当客户端调用create方法时,EJB容器例示(instantiates)bean然后调用ConverterBean.ejbCreate方法. 客户端调用create方法如下所示:  

Converter currencyConverter = home.create();  

调用商务方法  
调用一个商务方法非常容易--你只是调用Converter对象上的方法。EJB容器将在运行于服务端的ConverterEJB实例上调用相应的方法. 下面一行代码是客户端调用dollarToYen上的商务方法.  

double amount = currencyConverter.dollarToYen(100.00);  

ConverterClient源代码  
完整的ConverterClient源码如下.  

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

           currencyConverter.remove(); 

       } catch (Exception ex) { 
           System.err.println("Caught an unexpected exception!"); 
           ex.printStackTrace(); 
       } 
   }  
}   

编译应用程序客户端  
应用程序客户端文件和enterprise bean文件同时被编译,可参考编译源文件中所述.  

打包J2EE应用程序客户端  
打包应用程序客户端组件, 你需要运行deploytool的New Application Client Wizard. 在这个过程中, 向导把客户端文件编译成一个JAR文件然后把这个JAR文件加到应用程序的ConverterApp.ear文件中.  

启动New Application Client Wizard,选择File->New Application Client. 向导显示下面的对话框.  

Introduction对话框:  
阅读关于向导特性概览的说明.  
单击 Next.  
JAR File Contents对话框  
在这个组合框中,选择 ConverterApp.  
单击 Edit.  
在Available Files目录树中, 定位到examples/build/ejb/converter目录.  
选择ConverterClient.class file文件然后单击Add.  
单击 OK.  
单击 Next.  
常规对话框:  
在Main Class组合框,选择 ConverterClient.  
检验Display Name栏的内容是ConverterClient.  
在Callback Handler Class组合框,选择 container-managed authentication.  
单击 Next.  
单击 Finish.  
指定应用程序客户端的Enterprise Bean Reference  
当调用lookup方法时,ConverterClient引用一个enterprise bean:  

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

如下指定reference:  

在树目录中,选择ConverterClient.  
选择EJB Ref's tab.  
单击 Add.  
在Coded Name列输入ejb/SimpleConverter.  
在Type列,选择 Session.  
在Interfaces列,选择Remote.  
在Home列输入ConverterHome.  
在Remote列输入Converter.  

翻译者:TINA 
出处: http://sun.java.com 
转载自CSDN


----
今天你Java了没有? 

[关闭][返回]