扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:bluesky35(蓝天) 来源:论坛整理 2007年12月15日
关键字:
在本页阅读全文(共4页)
import java.rmi.Naming;
publicclass RMIImplProxy implements RMIImpl{
public RmiServiceDTO execute() throws java.rmi.RemoteException{
RmiServiceDTO message = null;
try{
RMIImpl obj = (RMIImpl)Naming.lookup("/HelloServer");
message = obj.execute();
}catch(Exception e){
System.out.println(e.toString());
}
// 戻る
return message;
}
} |
在这个代理中,我们通过Naming寻找网络上的名为HelloServer的服务,找到后我们调用该服务的execute方法取得发返回结果.
六. 代理的使用方法有很多种,其中最简单的方式是将它直接实例化使用,为了能在多个代理之间进行统一管理,我们选择工厂方式,接下来我们建立一个工厂,通过调用这个工厂,我们可以获得任何一个代理,代码如下:
publicclass ServiceFactory {
privatestaticfinal ServiceFactory instance = new ServiceFactory();
private ServiceFactory() {
super();
}
/**
*このクラスのインスタンスを取得します.
*@returnこのクラスのインスタンス
*/
publicstatic ServiceFactory getInstance() {
returninstance;
}
publicRMIImpl getGUSO() {
returnnew RMIImplProxy();
}
} |
七. 接下来我们调用工厂取得代理对象,通过代理对象可以访问远程服务,本地客户端执行代码如下所示:
import java.rmi.RemoteException;
publicclass Client {
publicstaticvoid main(String[] args) {
// Serviceを作成
ServiceFactory factory = ServiceFactory.getInstance();
try {
// Greenサービス実行
RmiServiceDTO rmiServiceDTO = factory.getGUSO().execute();
System.out.println(rmiServiceDTO.getName());
} catch (RemoteException e) {
e.printStackTrace();
}
}
} |
八. 至今为止,客户端的所有代码都已编写完成,接下来我们模拟一个服务器端服务供客户端调用,代码如下:
import java.rmi.*;
import java.rmi.server.*;
publicclass HelloServer extends UnicastRemoteObject implements RMIImpl{
/**
*
*/
privatestaticfinallongserialVersionUID = 1L;
public HelloServer() throws RemoteException{
super();
}
public RmiServiceDTO execute() throws java.rmi.RemoteException{
RmiServiceDTO rmiServiceDTO = new RmiServiceDTO();
rmiServiceDTO.setName("zhaolin");
return rmiServiceDTO;
}
} |
客户端调用服务,返回一个持有内容为zhaolin的DTO.
九. 由于服务需要启动才能被调用,所以我们再写一个注册程序注册这个服务以便客户端调用,注册程序代码如下:
import java.rmi.Naming;
publicclass RegistIt {
publicstaticvoid main(String[] args) {
try{
HelloServer obj = new HelloServer();
System.out.println("Object is" + obj);
Naming.rebind("/HelloServer",obj);
System.out.println("Already Start");
}catch(Exception e){
System.out.print(e);
}
} |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者