一: 服务端 暴露服务
import java.rmi.Remote;
import java.rmi.RemoteException;
/**
* 1.定义远程接口,必须继承Remote接口,
* 2.远程调用的方法必须抛出RemoteException异常
*/
public interface ISayHello extends Remote {
/**
* @param name
* @return
* @throws RemoteException 远程调用方法必须抛出RemoteException
*/
public String doSayHello(String name) throws RemoteException;
}
import java.rmi.RemoteException;
import com.xx.service.ISayHello;
/**
* 远程接口实现
*/
public class ChinaSayHello implements ISayHello {
public String doSayHello(String name) throws RemoteException {
return "您好," + name;
}
}
import java.net.MalformedURLException;
import java.rmi.AlreadyBoundException;
import java.rmi.Naming;
import java.rmi.Remote;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.server.UnicastRemoteObject;
import com.xx.service.ISayHello;
import com.xx.service.impl.ChinaSayHello;
/**
*
* 暴露远程服务
*/
public class ServerMain {
public static void main(String[] args) {
//创建远程对象
ISayHello sayHello = new ChinaSayHello();
//url
String serviceUrl = "//localhost:9999/sayhello";
//java 默认对口是1099
final int registryPort = 9999;
//暴露服务
exporter(sayHello, registryPort, serviceUrl);
}
/**
* 暴露服务
* @param object
* @param registryPort
* @param serviceUrl
*/
public static void exporter(Remote object,int registryPort, String serviceUrl) {
int servicePort = 0;
try {
UnicastRemoteObject.exportObject(object, servicePort);
LocateRegistry.createRegistry(registryPort);
Naming.bind(serviceUrl, object);
System.out.println("绑定成功.");
} catch (RemoteException e) {
e.printStackTrace();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (AlreadyBoundException e) {
e.printStackTrace();
}
}
}
二:客户端 远程方法调用
import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import com.xx.service.ISayHello;
/**
* 客户端
*/
public class ClientMain {
public static void main(String[] args) throws RemoteException {
// 查找远程对象
ISayHello sayHello= getObject(ISayHello.class, "rmi://localhost:9999/sayhello");
// 远程方法调用
System.out.println(sayHello.doSayHello("张三"));
}
public static <T> T getObject(Class<T> clazs, String serviceUrl) {
try {
Object object = Naming.lookup(serviceUrl);
return clazs.cast(object);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (RemoteException e) {
e.printStackTrace();
} catch (NotBoundException e) {
e.printStackTrace();
}
throw new RuntimeException();
}
}
分享到:
相关推荐
rmi 远程方法调用 客户端
Java RMI远程方法调用详解-例子代码,例子详解在:http://blog.csdn.net/guyuealian/article/details/51992182
Java RMI远程方法调用,简单明了,欢迎大家下载
java rmi 远程方法调用 服务端
NULL 博文链接:https://xiongjiajia.iteye.com/blog/1292142
JAVARMI远程方法调用简单实例.docx
Java RMI远程方法调用的小Demo。详细:http://blog.csdn.net/u014375869/article/details/39344963
JAVA RMI远程调用方法代码 RMI 远程 java
最近在学习代理模式,用到了java rmi远程调用,包含服务端和客户端,之前一直没有接触过,学习了java rmi远程调用,一方面可以了解代理模式,一方面熟悉java低层的远程
JavaRMI远程方法调用的服务端与客户端实现
Java RMI 远程方法调用的一个小例子
RMI是Java的一组拥护开发分布式应用程序的API。RMI使用Java语言接口定义了远程对象,它集合了Java... RMI(Remote Method Invocation,远程方法调用)是用Java在JDK1.1中实现的,它大大增强了Java开发分布式应用的能
主要介绍了Java rmi远程方法调用基本用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
三种方式实现java远程调用(rmi) 方式一:原始方式 方式二:spring 方式三:jndi 解压,放到myeclipse上可用
本文档主要讲述的是Java 远程方法调用RMI参数详解;根据RMI参数意义,可以归结为以下几点,我们可以根据这几点通过优化GC, 网络等待,流传输协议(http/rmi special socket)等方面来优化RMI。
java rmi 远程方法调用的例子,讲解的很详细!
实现java RMI 远程调用,包括 RMIServer RMIClient源码,测试用例。
rmi java 远程方法调用
java jdk1.8; eclipse 开发环境;实现A机器的程序,可以管理(增加、删除、改等)B机器上的某个文件夹或者目录;掌握远程过程调用原理,基于...客户端利用RMI实现远程调用服务。同时,在在两台机器之间验证结果正确。