科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道用RMI和CORBA进行分布式Java编程

用RMI和CORBA进行分布式Java编程

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

Java远程方法调用(RMI)机制和公用对象请求代理体系(CORBA)是最重要和使用最广泛的两种分布式对象系统。它们在行业中被用于从电子交易到保健医疗的各个领域。

作者:大海 来源:CSDN 2008年2月29日

关键字: java CORBA RMI

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共7页)

代码范例 6: FileServant.java

import java.io.*; 

public class FileServant extends _FileInterfaceImplBase {
public byte[] downloadFile(String fileName){
File file = new File(fileName);
byte buffer[] = new byte[(int)file.length()];
try {
BufferedInputStream input = new
BufferedInputStream(new FileInputStream(fileName));
input.read(buffer,0,buffer.length);
input.close();
} catch(Exception e) {
System.out.println("FileServant Error: "+e.getMessage());
e.printStackTrace();
}
return(buffer); 
}
}
开发服务器 

下一步是开发CORBA服务器。代码范例7中的FileServer类实现 了一个CORBA服务器,它做了这么一些事情:

  1. 初始化ORB
  2. 创建一个FileServant对象
  3. 在CORBA命名服务(COS命名)中登记该对象
  4. 输出一条状态消息
  5. 等待客户机的请求到来

代码范例 7: FileServer.java

import java.io.*;
import org.omg.CosNaming.*;
import org.omg.CosNaming.NamingContextPackage.*;
import org.omg.CORBA.*;
public class FileServer {
public static void main(String args[]) {
try{
// create and initialize the ORB
ORB orb = ORB.init(args, null);
// create the servant and register it with the ORB
FileServant fileRef = new FileServant();
orb.connect(fileRef);
// get the root naming context
org.omg.CORBA.Object objRef =
orb.resolve_initial_references("NameService");
NamingContext ncRef = NamingContextHelper.narrow(objRef);
// Bind the object reference in naming
NameComponent nc = new NameComponent("FileTransfer", " ");
NameComponent path[] = {nc};
ncRef.rebind(path, fileRef);
System.out.println("Server started....");
// Wait for invocations from clients
java.lang.Object sync = new java.lang.Object();
synchronized(sync){
sync.wait();
}
} catch(Exception e) {
System.err.println("ERROR: " + e.getMessage());
e.printStackTrace(System.out);
}
}
}
FileServer有了一个ORB之后,就可以注册CORBA服务。它使用 COS命名服务进行注册,该服务由OMG制订,
用Java IDL实现。从获取指向命名服 务根的引用开始。这将返回一个普通CORBA对象。为了把这个对象用作一个 
NamingContext对象,必须把它缩短(也就是强制转换)为适当类 型,用下列语句实现:

NamingContext ncRef = NamingContextHelper.narrow(objRef);

ncRef对象现在变成了 org.omg.CosNaming.NamingContext。 你可以使用rebind 方法,用这个对象在命名服务中注册一项CORBA服务。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章