扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:中国IT实验室 来源:中国IT实验室 2007年9月22日
关键字:
在本页阅读全文(共3页)
系统要求有Smart device对远程的JVM2里的程序控制,所以我们引入了WebService,通过WebService间接调用JVM2里的东西,WebSerivce本身运行在JVM1,JVM1和JVM2可以在不同机器上,这里demo程序是在一台机器上运行的。
WebService在这里既是SmartDevice的Server端,又是RMI的Client端。RMI的Server端在JVM2的App里作为一部分服务存在。
三、代码分解,下面我们开始demo这个协作的代码
3.1 首先我们抽象一个RMI的Interface
package cn.heapstack.rmi.interfaces;
import java.rmi.Remote;
import java.rmi.RemoteException;
import java.util.Date;
public interface IBridge extends Remote
{
public Date getDate() throws RemoteException;
public String getOtherInfo() throws RemoteException;
}
简单的接口,一个是获得时间的,一个是获取随便什么消息的接口
3.2实现RMI的Server端
package cn.heapstack.rmi.server;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.util.Date;
import cn.heapstack.rmi.interfaces.IBridge;
public class BriderImpl extends UnicastRemoteObject implements IBridge
{
protected BriderImpl() throws RemoteException
{
super ();
}
private static final long serialVersionUID = - 2194578051853930272L ;
public Date getDate() throws RemoteException
{
return new Date( 2008 , 5 , 10 );
}
public String getOtherInfo() throws RemoteException
{
return " This is the message from the jvm, path info: " + BriderImpl. class .getResource( " / " ).getPath();
}
}
package cn.heapstack.rmi.server;

import java.rmi.Naming;
import java.rmi.registry.LocateRegistry;
import cn.heapstack.rmi.interfaces.IBridge;
public class RmiServer 
{
public static void main(String[] args)
{
try 
{
LocateRegistry.createRegistry( 1099 );
IBridge bridge = new BriderImpl();
Naming.rebind( " bridge " , bridge);
System.out.println( " RMI Server is ready. " );
}
catch (Exception e) 
{
System.out.println( " RMI Server failed: " + e);
} 
}
}
package cn.heapstack.rmi.client;
import java.rmi.Naming;
import cn.heapstack.rmi.interfaces.IBridge;
public class RmiClient
{

/** */ /**
* @param args
*/
public static void main(String[] args)
{
IBridge bridge;
try
{
bridge = (IBridge) Naming.lookup( " bridge " );
System.out.println( bridge.getDate() );
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
由于在本机上,省略了ip什么的,如果对这段代码不是很懂,建议看后面的参考资料
测试方法,先运行Server,再运行Client,不出以外,你能看到2008年5月10号。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。