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 的管理员或公布者连接. 要公布服务,请右键单击结果并选择共享为 > 地理处理服务.例如以下图所看到的.此操 ...
随机推荐
- 深度介绍Linux内核是如何工作的
本文发表于Linux Format magazine杂志,作者从技术深度上解释了Linux Kernel是如何工作的.相信对Linux开发者来说有不小的帮助. 牛津字典中对"kernel&q ...
- PHP-数据库长连接mysql_pconnect的细节
PHP的MySQL持久化连接,美好的目标,却拥有糟糕的口碑,往往令人敬而远之.这到底是为啥么.近距离观察后发现,这家伙也不容易啊,要看Apache的脸色,还得听MySQL指挥. 对于作为Apache模 ...
- MySQL学习记录一
1.MySQL join操作 left join以左表为基础,其记录会全部表示出来,而右表只显示满足搜索条件的记录.right join以右表为基础,其记录会全部显示出来,而左表只显示满足搜索条件的记 ...
- 【LeetCode】33. Search in Rotated Sorted Array (4 solutions)
Search in Rotated Sorted Array Suppose a sorted array is rotated at some pivot unknown to you before ...
- Linux top里面%CPU和us%的解释
我们有时会把%CPU和us%搞晕,也就是下图所示在top的时候查看cpu的信息. 这时有人会问:这两个CPU到底哪个是对的. 其实都是对的,只是表达的意思不一样. 官方解释如下 Cpu(s):34.0 ...
- keil写STM32程序出现literal treated as "long long"
在Keil MDKARM中 unsigned int value2=0x80000000; unsigned int value4=2147483648; value2编译时不产生警告,而value4 ...
- IntelliJ IDEA 学习(三):IntelliJ IDEA 快捷键、配置优化
一.两种方式可以设置快捷键: 1)setting -> keymap 想找到有关Idea工具的菜单或其他功能的话,可以再这里找到对应的快捷键 2)setting -> Editor - ...
- HttpOperater
using System; using System.IO; using System.Linq; using System.Net; using System.Text; using System. ...
- nexus 配置
1.下载 http://www.sonatype.org/nexus/go/ 例如:nexus-2.11.4-01-bundle.tar.gz 2.解压 tar -xzvf nexus-2.11.4 ...
- beyond compare比较工具设置
beyond compare用于比较的工具,云盘:比较 链接: https://pan.baidu.com/s/1boZbB0F