Java RMI学习入门小案例
来源:互联网 发布:激战2一折商城网络延迟 编辑:程序博客网 时间:2024/06/07 22:33
RMI远程方法调用,服务器端客户端得用Java。
在服务器端建一个远程接口并写个实现类,最后写个主类发布出去。
接口类:
package com.gg.rmi.Interface;import java.rmi.Remote;import java.rmi.RemoteException;//定义一个远程接口,必须继承Remote接口,其中需要远程调用的方法必须抛出RemoteException异常 public interface Hello extends Remote { /** * 简单的返回“Hello World!"字样 * @return 返回“Hello World!"字样 * @throws java.rmi.RemoteException */public String helloWorld()throws RemoteException;/** * 一个简单的业务方法,根据传入的人名返回相应的问候语 * @param someBodyName 人名 * @return 返回相应的问候语 * @throws java.rmi.RemoteException */ public String sayHelloToSomeBody(String someBodyName) throws RemoteException;}
实现类:
package com.gg.rmi.server;import java.rmi.RemoteException;import java.rmi.server.UnicastRemoteObject;import com.gg.rmi.Interface.Hello;public class HelloImpl extends UnicastRemoteObject implements Hello {protected HelloImpl() throws RemoteException {super();System.out.println("HelloIml初始化。。。");}@Overridepublic String helloWorld() throws RemoteException {System.out.println("调用HelloWorld方法");return "Hello world";}@Overridepublic String sayHelloToSomeBody(String someBodyName)throws RemoteException {System.out.println("调用sayHelloWorldToSomeBody方法");return "你好," + someBodyName + "!";}}
主类;
package com.gg.rmi.server;import java.net.MalformedURLException;import java.rmi.AlreadyBoundException;import java.rmi.Naming;import java.rmi.RemoteException;import java.rmi.registry.LocateRegistry;import com.gg.rmi.Interface.Hello;public class HelloServer {public static void main(String args[]) { try { //创建一个远程对象 Hello rhello = new HelloImpl(); //本地主机上的远程对象注册表Registry的实例,并指定端口为8888,这一步必不可少(Java默认端口是1099),必不可缺的一步,缺少注册表创建,则无法绑定对象到远程注册表上 LocateRegistry.createRegistry(8888); //把远程对象注册到RMI注册服务器上,并命名为RHello //绑定的URL标准格式为:rmi://host:port/name(其中协议名可以省略,下面两种写法都是正确的) Naming.bind("rmi://localhost:8888/RHello",rhello); // Naming.bind("//localhost:8888/RHello",rhello); System.out.println(">>>>>INFO:远程IHello对象绑定成功!"); } catch (RemoteException e) { System.out.println("创建远程对象发生异常!"); e.printStackTrace(); } catch (AlreadyBoundException e) { System.out.println("发生重复绑定对象异常!"); e.printStackTrace(); } catch (MalformedURLException e) { System.out.println("发生URL畸形异常!"); e.printStackTrace(); } } }在客户端上:
package com.gg.rmi.client;import java.net.MalformedURLException;import java.rmi.Naming;import java.rmi.NotBoundException;import java.rmi.RemoteException;import com.gg.rmi.Interface.Hello;public class HelloClient {public static void main(String args[]){ try { //在RMI服务注册表中查找名称为RHello的对象,并调用其上的方法 Hello rhello =(Hello) Naming.lookup("rmi://localhost:8080/RHello"); //填主机的ip System.out.println(rhello.helloWorld()); System.out.println(rhello.sayHelloToSomeBody("red-dragon")); } catch (NotBoundException e) { e.printStackTrace(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (RemoteException e) { e.printStackTrace(); } } }
遇到的问题:
解决方法:把接口类的包名内容一摸一样的放到客户端上.
0 0
- Java RMI学习入门小案例
- Java RMI 入门学习
- RMI学习案例
- Java学习笔记--入门案例
- java RMI 小例子
- Java RMI简单使用案例
- Java RMI-IIOP 入门
- Java RMI入门
- Java RMI-IIOP 入门
- Java RMI 入门
- Java RMI 入门
- Java RMI-IIOP 入门
- Java RMI入门
- java rmi入门
- Eclipse Java RMI 入门
- Eclipse Java RMI 入门
- JAVA RMI 简单入门
- Java RMI入门
- EditorLineEnds.ttr
- Android解决使用findViewById时需要对返回值进行类型转换问题的辅助类
- cocosbuilder中scrollview的使用
- hdu4734 F(x) 数位dp
- 文件处理工具(上传和下载)
- Java RMI学习入门小案例
- js日期时间格式化函数
- linux下 定时 以时间命名 备份数据库
- Activity在设置横屏时候会调两次onCreate
- Flex入门
- 设计模式1——Singleton设计模式
- iOS常用类目
- 内连接、左外连接、右外连接、交叉连接区别
- MVC学习随笔----如何在页面中添加JS和CSS文件