扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
在本页阅读全文(共7页)
开发客户机
下一步是开发客户机。代码范例8中演示了一个实现。获得指向命名服务的引 用之后,就可以用它来访问命名服务和查找其他服务(例如FileTransfer
FileTransfer服务时,将调用downloadFile
方法。
代码范例 8: FileClient
import java.io.*;
import java.util.*;
import org.omg.CosNaming.*;
import org.omg.CORBA.*;
public class FileClient {
public static void main(String argv[]) {
try {
// create and initialize the ORB
ORB orb = ORB.init(argv, null);
// get the root naming context
org.omg.CORBA.Object objRef =
orb.resolve_initial_references("NameService");
NamingContext ncRef = NamingContextHelper.narrow(objRef);
NameComponent nc = new NameComponent("FileTransfer", " ");
// Resolve the object reference in naming
NameComponent path[] = {nc};
FileInterfaceOperations fileRef =
FileInterfaceHelper.narrow(ncRef.resolve(path));
if(argv.length < 1) {
System.out.println("Usage: java FileClient filename");
}
// save the file
File file = new File(argv[0]);
byte data[] = fileRef.downloadFile(argv[0]);
BufferedOutputStream output = new
BufferedOutputStream(new FileOutputStream(argv[0]));
output.write(data, 0, data.length);
output.flush();
output.close();
} catch(Exception e) {
System.out.println("FileClient Error: " + e.getMessage());
e.printStackTrace();
}
}
}
运行应用程序
最后一步是运行应用程序。这其中包括几个子步骤:
tnameserv
。 缺省情况下,该服务在端口900上运行。如果不能在这个端口运行命名服务, 你可以在其他端口上启动它。例如,要在端口2500上启动命名服务,请使用以 下命令:prompt> tnameserv -ORBinitialPort 2500
prompt> java FileServer
如果命名服务运行于其他端口之上,比如2500,则需要使用 ORBInitialPort
选项来指定端口,如下所示:
prompt> java FileServer -ORBInitialPort 2500
FileInterface.idl
文件,并使用idlj编 译器来编译它,在编译前指定希望生成的结果是客户机端存根,如下所示:prompt> idlj -fclient FileInterface.idl
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者