RMI几种公布和引用服务的方式
RMI是Java原生的分布式服务机制。支持Java对Java的分布式訪问。採用Java的序列化协议进行CodeC操作。
这里简单说下RMI公布服务和client引用服务的方式。
RMI公布服务时支持两种方式。一种是RMI本身的公布协议,第二种是採用通用的JNDI的方式来公布服务。
採用JMI本身的公布协议。能够使用Registry接口,也能够使用Naming工具类。
使用Registry接口时,bind的服务名称仅仅须要直接写服务名称即可。RMI内部会把它变成rmi://ip:port/servicename的方式
public class Server {
public static void main(String[] args){
try {
DemoService service = new DemoServiceImpl("ITer_ZC");
//指定port
Registry registry = LocateRegistry.createRegistry(8888);
// 注冊服务
registry.bind("demoservice",service);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("DemoService is running at Server");
}
}
採用Naming工具类时,须要指定完整的URI方式时的服务名称。
值得注意的是。也须要先绑定port号。否则会报ConnectionRefuse的异常
public class Server {
public static void main(String[] args){
try {
DemoService service = new DemoServiceImpl("ITer_ZC");
// 指定port
LocateRegistry.createRegistry(8888);
//完整的URI方式的服务名称
Naming.bind("rmi://10.2.43.50:8888/demoservice",service);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("DemoService is running at Server");
}
}
採用JNDI的方式来公布RMI服务。须要指定完整的URI方式的服务名称
public class Server {
public static void main(String[] args){
try {
DemoService service = new DemoServiceImpl("ITer_ZC");
Registry registry = LocateRegistry.createRegistry(8888);
Context nameContext = new InitialContext();
nameContext.rebind("rmi://10.2.43.50:8888/demoservice", service);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("DemoService is running at Server");
}
}
client引用RMI服务时,也能够採用两种方式来寻找服务,一种是RMI本身的类,一种是JNDI接口的类。
採用RMI本身的类来引用RMI服务
public class Client {
public static void main(String[] args){
String url = "rmi://10.2.43.50:8888/demoservice";
try {
DemoService service = (DemoService)Naming.lookup(url);
System.out.println(service.sayHi());
} catch (Exception e) {
e.printStackTrace();
}
}
}
採用JNDI接口来引用RMI服务
public class Client {
public static void main(String[] args){
String url = "rmi://10.2.43.50:8888/demoservice";
Context nameContext;
try {
nameContext = new InitialContext();
DemoService service = (DemoService)nameContext.lookup(url);
System.out.println(service.sayHi());
} catch (Exception e) {
e.printStackTrace();
}
}
}
转载请注明来源: http://blog.csdn.net/iter_zc
RMI几种公布和引用服务的方式的更多相关文章
- Dubbo实践(十五)消费者引用服务
Refer取得invoker的过程 <!-- 指定了哪种的注册中心,是基于zookeeper协议的,指定了注册中心的地址以及端口号 --> <dubbo:registry proto ...
- VS2010 添加服务引用以后点不出引用服务的命名空间
声明:本次我遇到的仅是这类情况中的其中一个个例,不要拘泥于些噢! 问题描述: 1.我建了一个新项目,不引用服务前是好的,可以打点点出任何已有有命名空间,但是引用服务以后就是点不出服务的命名空间. 2. ...
- 怎样基于谷歌地图的Server缓存公布Image Service服务
怎样基于谷歌地图的Server缓存公布Image Service服务 第一步:下载地图数据 下载安装水经注万能地图下载器,启动时仅仅选择电子.谷歌(这里能够依据自己的须要选择).例如以下图所看到的. ...
- Spring Cloud Alibaba基础教程:支持的几种服务消费方式(RestTemplate、WebClient、Feign)
通过<Spring Cloud Alibaba基础教程:使用Nacos实现服务注册与发现>一文的学习,我们已经学会如何使用Nacos来实现服务的注册与发现,同时也介绍如何通过LoadBal ...
- dubbo发布和引用服务
1.首先添加相关的jar包到工程中 2.在spring(mvc)的配置文件中添加约束 xmlns:dubbo=http://code.alibabatech.com/schema/dubbo http ...
- 几种常见的微服务架构方案简述——ZeroC IceGrid、Spring Cloud、基于消息队列
微服务架构是当前很热门的一个概念,它不是凭空产生的,是技术发展的必然结果.虽然微服务架构没有公认的技术标准和规范草案,但业界已经有一些很有影响力的开源微服务架构平台,架构师可以根据公司的技术实力并结合 ...
- 几种常见的微服务架构方案——ZeroC IceGrid、Spring Cloud、基于消息队列、Docker Swarm
微服务架构是当前很热门的一个概念,它不是凭空产生的,是技术发展的必然结果.虽然微服务架构没有公认的技术标准和规范草案,但业界已经有一些很有影响力的开源微服务架构平台,架构师可以根据公司的技术实力并结合 ...
- 三种主流的Web服务实现方案(REST+SOAP+XML-RPC)简述及比较
目前知道的三种主流的Web服务实现方案为:REST:表象化状态转变 (软件架构风格)SOAP:简单对象访问协议 XML-RPC:远程过程调用协议 下面分别作简单介绍: REST:表征状态转移(Repr ...
- ArcGIS教程:公布地理处理服务
要公布地理处理服务.您须要两个元素:结果 窗体中的结果和到 ArcGIS Server 的管理员或公布者连接. 要公布服务,请右键单击结果并选择共享为 > 地理处理服务.例如以下图所看到的.此操 ...
随机推荐
- python ichat使用学习记录
1.OSError: [WinError -2147221003] 找不到应用程序: 'D:\\python\\ichat\\qrcode.jpg' 原因是该库中没有windows系统如何打开二维码图 ...
- mosquitto ---mosquitto-auth-plug
https://github.com/jpmens/mosquitto-auth-plug This is a plugin to authenticate and authorize Mosquit ...
- unity, GUI.Button texture is black
GUI.Button(rect,tex),结果显示出来tex是黑的,原来是因为我以前在别处调用了GUI.contentColor =Color.black. 参考:http://answers.uni ...
- Android Bitmap和Canvas学习笔记
位图是我们开发中最常用的资源,毕竟一个漂亮的界面对用户是最有吸引力的. 1. 从资源中获取位图 可以使用BitmapDrawable或者BitmapFactory来获取资源中的位图. 当然,首先需要获 ...
- 1、Reactive Extensions for .NET(译)
注:本文的工程是基于 vs2010 的,在 vs2012 中区别不大. 本文的意图是让读者熟悉 Reactive Extension for .net(Rx) 的使用.通过一系列的例子,让读者感受 基 ...
- ERROR 1130 (HY000): Host '192.168.0.190' is not allowed to connect to this MySQL serv
环境: CentOS6.2.MySQL5.1 问题描述: 在配置文件中将需要连接的MySQL的host设置为192.168.0.190(其实就是我自己的IP地址),然后运行自己的程序,结果返回MySQ ...
- activiti链接
工作流学习——重要概念扫盲篇一步曲 http://blog.csdn.NET/zwk626542417/article/details/46592471
- C#和sqlserver中生成新的32位GUID
C#中用Guid.NewGuid().ToString() Sql中用NEWID() 以上方法生成的是36位的GUID,如果需要转换成32位,则需要替换掉其中的'-'字符. Sql中的方法:repla ...
- xadmin 问题总结
pip install django-import-export
- 一款基于jQuery的联动Select下拉框
今天我们要来分享一款很实用的jQuery插件,它是一个基于jQuery多级联动的省市地区Select下拉框,并且值得一提的是,这款联动下拉框是经过自定义美化过的,外观比浏览器自带的要漂亮许多.另外,这 ...