远程调用之RMI技术
---恢复内容开始---
RMI已经不是什么新的技术了,但是相对于webservice来说,rmi比较简单,比较适合一些小的应用,下面的helloword列子可以介绍rmi的相关技术
服务器端代码:
服务器接口实现Remote
package com.qcf.server; import java.rmi.Remote;
import java.rmi.RemoteException;
/**
* 服务类
* 定义行为集
* @author Administrator
*
*/
public interface IHello extends Remote { //在服务器端打印客户端传过来的字符串并返回该字符串
public String sayHello(String str) throws RemoteException;
}
接口的实现类
package com.qcf.server; import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject; /**
* 服务器端实现类
* 需要继承UnicastRemoteObject
* @author Administrator
*
*/
public class IHelloImpl extends UnicastRemoteObject implements IHello{ //必须的
protected IHelloImpl() throws RemoteException {
super();
} @Override
public String sayHello(String str) throws RemoteException {
System.out.println("客户端传过来的字符串是:" + str);
return str;
} }
服务类启动服务类
package com.qcf.server; import java.net.MalformedURLException;
import java.rmi.AlreadyBoundException;
import java.rmi.Naming;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry; /**
* RMI服务器
* 1、创建一个服务
* 2、启动服务器
* 3、注册服务
* @author Administrator
*
*/
public class HelloServer { public static void main(String[] args) throws RemoteException, MalformedURLException, AlreadyBoundException {
//1、创建一个服务
IHello iHello=new IHelloImpl();
//2、启动服务器 启动一个注册表并把注册表绑定到一个端口(默认端口1099)
LocateRegistry.createRegistry(8189); //3将服务注册到注册表 绑定的URL标准格式为:rmi://host:port/name(其中协议名可以省略,下面两种写法都是正确的)
Naming.bind("rmi://localhost:8189/ihello", iHello);
System.out.println("server start success!");
}
}
客户端类
创建接口类如上
客户端测试类
package com.qcf.client; import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RemoteException; /**
* 客户端测试类
* 服务器是谁 服务器
* 如何获取服务 查找
* 调用接口
* @author Administrator
*
*/
public class HelloClient {
public static void main(String[] args) throws Exception, Exception, Exception {
//查找服务
IHello hello=(IHello) Naming.lookup("rmi://localhost:8489/ihello");
//调用接口
String str=hello.sayHello("哈哈哈 。我测试成功了");
System.out.println("客户端"+str);
}
}

---恢复内容结束---
远程调用之RMI技术的更多相关文章
- Atitit.分布式远程调用 rpc rmi CORBA的关系
Atitit.分布式远程调用 rpc rmi CORBA的关系 1. 远程调用(包括rpc,rmi,rest)1 2. 分布式调用大体上就分为两类,RPC式的,REST式的1 3. RPC(远程 ...
- 远程调用之RMI、Hessian、Burlap、Httpinvoker、WebService的比较
一.综述 本文比较了RMI.Hessian.Burlap.Httpinvoker.WebService5这种通讯协议的在不同的数据结构和不同数据量时的传输性能. RMI是java语言本身提供的远程通讯 ...
- 架构设计:远程调用服务架构设计及zookeeper技术详解(下篇)
一.下篇开头的废话 终于开写下篇了,这也是我写远程调用框架的第三篇文章,前两篇都被博客园作为[编辑推荐]的文章,很兴奋哦,嘿嘿~~~~,本人是个很臭美的人,一定得要截图为证: 今天是2014年的第一天 ...
- 架构设计:一种远程调用服务的设计构思(zookeeper的一种应用实践)
在深入学习zookeeper我想先给大家介绍一个和zookeeper相关的应用实例,我把这个实例命名为远程调用服务.通过对这种应用实例的描述,我们会对zookeeper应用场景会有深入的了解. 远程调 ...
- alibaba远程调用框架dubbo原理
alibaba有好几个分布式框架,主要有:进行远程调用(类似于RMI的这种远程调用)的(dubbo.hsf),jms消息服务(napoli.notify),KV数据库(tair)等.这个框架/工具/产 ...
- 使用C#跨PC 远程调用程序并显示UI界面
在项目中有一个需求是需要在局域网内跨PC远程调用一个程序,并且要求有界面显示,调查了一些资料,能实现远程调用的.Net技术大概有PsExec.WMI.Schedule Task. 这三种方式都做了一个 ...
- Spring远程调用技术<1>-RMI
在java中,我们有多种可以使用的远程调用技术 1.远程方法调用(remote method invocation, RMI) 适用场景:不考虑网络限制时(例如防火墙),访问/发布基于java的服务 ...
- Spring远程调用技术<2>-Hessian和Burlap
上篇谈到RMI技术,加上Spring的封装,用起来很方便,但也有一些限制 这里的Hessian和Burlap解决了上篇提到的限制,因为他们是基于http的轻量级远程服务. Hessian,和RMI一样 ...
- Java[2] 分布式服务架构之java远程调用技术浅析(转http://www.uml.org.cn/zjjs/201208011.asp)
转自:http://www.uml.org.cn/zjjs/201208011.asp 在分布式服务框架中,一个最基础的问题就是远程服务是怎么通讯的,在Java领域中有很多可实现远程通讯的技术,例如: ...
随机推荐
- ORA-01791: not a SELECTed expression 一种是不 bug 的 bug!
[ora11@lixora ~]$ !sql sqlplus / as sysdba SQL*Plus: Release 11.2.0.1.0 Production on Wed Aug 27 09: ...
- 第七章——DMVs和DMFs(2)——用DMV和DMF监控索引性能
原文:第七章--DMVs和DMFs(2)--用DMV和DMF监控索引性能 本文继续介绍使用DMO来监控,这次讲述的是监控索引性能.索引是提高查询性能的关键性手段.即使你的表上有合适的索引,你也要时时刻 ...
- Nova创建虚拟机的底层代码分析
作为个人学习笔记分享.有不论什么问题欢迎交流! 在openstack中创建虚拟机的底层实现是nova使用了libvirt,代码在nova/virt/libvirt/driver.py. #image_ ...
- net开发过程中Bin目录net开发过程中Bin目录下面几种文件
.net开发过程中Bin目录下面几种文件格式的解释 在.NET开发中,我们经常会在bin目录下面看到这些类型的文件: .pdb..xsd..vshost.exe..exe..exe.config..v ...
- Maven+Spring
Maven+Spring 关于Maven Maven是一个用于项目构建的工具,通过它便捷的管理项目的生命周期.即项目的jar包依赖,开发,测试,发布打包. 做过.NET的人应该会联想到Nuget,是的 ...
- android adb 不同的方式使用特定的解释
本文介绍windows 在程序中使用adb 方法.没有引进adb 该命令. 1) 启动adb 流程.获得输出从管道. 这样的方式的弊端有多少,我也不知道.反正就是各种问题吧.可是眼下我问过非常多朋友. ...
- nRF905 - 系列示意图
一个.截图 备份文件:sch20110521.7z 版权声明:本文博客原创文章,博客,未经同意,不得转载.
- [git] fatal: This operation must be run in a work tree
正在使用git init --bare 它的成立裸仓库后,,正在使用git 其他命令将出现fatal:This operation must be run in a work tree 问题,途径: ...
- 安装Docker
安装Docker 1. 增加Repository配置文件 cat >/etc/yum.repos.d/docker.repo <<-EOF [dockerrepo]name=Dock ...
- linux Apache rotatelogs 故障原因及解决方案未生效
rotatelogs 截断日志.构造.但保存vhost.conf 之后.serverhttpd -k restart 还是无法成功重新启动. 日志文件: (2)No such file or dire ...