您的位置:首页 > 编程语言 > Java开发

java中使用rmi进行远程方法调用

2013-04-07 13:46 344 查看
java中进行远程方法调用,能支持分布式计算。并且可以实现在server的修改,能反应到各个client。

假如server的ip是:192.168.11.2,

server端的代码如下:

/**
*
*/
package com.vs.rmi;

import java.rmi.Remote;
import java.rmi.RemoteException;

public interface Product extends Remote {

public String getDescription() throws RemoteException;
}


package com.vs.rmi;

import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;

public class ProductImpl extends UnicastRemoteObject implements Product {

private String name;

public ProductImpl() throws RemoteException
{
super();
name = "my rmi";
}

@Override
public String getDescription() throws RemoteException {
return "hello world, " + name;
}
}


/**
*
*/
package com.vs.rmi;

import java.rmi.Naming;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;

/**
* @author hadoop
*
*/
public class ProductServer {

/**
* @param args
*/
public static void main(String[] args) {
/*
* 创建和安装一个安全管理器,令其支持 RMI. 作为 Java 开发包的一部分
*
* 适用于 RMI 唯一一个是 RMISecurityManager.
*
*
*
* if(System.getSecurityManager() == null) {
*
* System.setSecurityManager(new RMISecurityManager());
*
* }
*/

try {
LocateRegistry.createRegistry(8808);
ProductImpl server = new ProductImpl();
Naming.rebind("//192.168.11.2:8808/SAMPLE-SERVER", server);
System.out.println("远程对象注册成功, RMI 服务已经启动,等待客户端调用 ....");
} catch (java.net.MalformedURLException me) {
System.out.println("Malformed URL:" + me.toString());
} catch (RemoteException re) {
System.out.println("Remote exception:" + re.toString());
}
}

}


Project接口必须打成jar包,在client的包中进行引入。

client端的代码如下:

package com.vs.myrmi;

import java.rmi.*;

import com.vs.rmi.Product;

public class RmiSampleClient {

public static void main(String[] args)
{
try {
String url = "//192.168.11.2:8808/SAMPLE-SERVER";
Product product = (Product)Naming.lookup(url);
System.out.println(product.getDescription());
} catch (RemoteException exc) {
System.out.println("Error in lookup: " + exc.toString());
} catch (java.net.MalformedURLException exc) {
System.out.println("Malformed URL: " + exc.toString());
} catch (java.rmi.NotBoundException exc) {
System.out.println("NotBound: " + exc.toString());
}
}
}


先执行server端进行监听,然后执行client端,client执行的结果如下:

hello world, my rmi


java1.6中,已经不需要手动使用rmic命令生成骨架。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: