您的位置:jsp学习站首页 >> JAVA类 >> JAVA基础 >> 漫谈EJB (2)

漫谈EJB (2) (4)

[ 来源:互网络 | 更新日期:2007-09-16 12:11:23 | 浏览次数:3146]
简介:1中实现的,它大大增强了Java开发分布式应用的能力。Java作为一种风靡一时的网络开发语言,其巨大的威力就体现在它强大的开发分布式网络应用的能力上,而RMI就是开发百分之百纯Java的网络分布式应用系统的核心解决方案之一。其实它可以被看作是RPC的Java版本。但是传统RPC并不能很好地应用于分布式对象系统。而Java RMI 则支持存储于不同地址空间的程序级对象之间彼此进行通信,实现远程对象之间的无缝远程调用。    remote method invocation决不简单,需要考虑几个问题:    marshalling和unmarshalling
方法声明在其 throws 子句中除了要包含与应用程序有关的异常(注意与应用程序有关的异常无需扩展 java.rmi.RemoteException )之外,还必须包括 java.rmi.RemoteException 异常(或它的超类,例如java.io.IOException 或 java.lang.Exception )。 
    远程方法声明中,作为参数或返回值声明的(在参数表中直接声明或嵌入到参数的非远程对象中)远程对象必须声明为远程接口,而非该接口的实现类。

    java.rmi.Remote 接口是一个不定义方法的标记接口: 

public interface Remote 

    远程接口必须至少扩展 java.rmi.Remote 接口(或其它扩展java.rmi.Remote 的远程接口)。然而,远程接口在下列情况中可以扩展非远程接口: 

    远程接口也可扩展其它非远程接口,只要被扩展接口的所有方法(如果有)满足远程方法声明的要求。 
    例如,下面的接口 BankAccount 即为访问银行帐户定义了一个远程接口。它包含往帐户存款、使帐户收支平衡和从帐户取款的远程方法: 

public interface BankAccount extends java.rmi.Remote 

public void deposit(float amount) 
throws java.rmi.RemoteException; 
public void withdraw(float amount) 
throws OverdrawnException, java.rmi.RemoteException; 
public float getBalance() 
throws java.rmi.RemoteException; 


    下例说明了有效的远程接口 Beta。它扩展非远程接口 Alpha(有远程方法)和接口 java.rmi.Remote: 
public interface Alpha 

public final String okay = "constants are okay too"; 
public Object foo(Object obj) 
throws java.rmi.RemoteException; 
public void bar() throws java.io.IOException; 
public int baz() throws java.lang.Exception; 


public interface Beta extends Alpha, java.rmi.Remote { 
public void ping() throws java.rmi.RemoteException; 


RemoteException 类 

    java.rmi.RemoteException 类是在远程方法调用期间由 RMI 运行时所抛出的异常的超类。为确保使用 RMI 系统的应用程序的健壮性,远程接口中声明的远程方法在其 throws 子句中必须指定 java.rmi.RemoteException(或它的超类,例如 java.io.IOException 或 java.lang.Exception)。 

当远程方法调用由于某种原因失败时,将抛出 java.rmi.RemoteException 异常。远程方法调用失败的原因包括: 

    通讯失败(远程服务器不可达或拒绝连接;连接被服务器关闭等。) 
    参数或返回值传输或读取时失败 
    协议错误 

    Re
[1] [2] [3] [4] [5] [6] [7]
Tags:关键字:漫谈EJB (2)
责任编辑:glen