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

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命令生成骨架。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值