`

RPC(Remote Procedure Call)远程过程调用

 
阅读更多
Xml_Rpc是采用http协议通过xml数据格式实现rpc(远程调用过程)一个项目。项目主页:http://ws.apache.org/xmlrpc/在download页面中可以下载xml_rpc的jar包。在Documenttation中有只用说明和小例子可以简单的做参考。
下面是对一个helloworld的程序代码解释:
Rpc是一种实现远程调用过程的规范,它区别于大家熟知的最基本的本地调用。它实现了不同服务器跨域访问。狭义的讲:通过一个客户端连接到远程服务器调用服务端的对象。
首先写一个server:RpcSever.java
//创建一个webServer的实例绑定在8080端口上,重载方法中第二的参数为绑定的IP地址默认为本地
		WebServer webServer = new WebServer(8080);
		//创建以property形式的Handler映射
		PropertyHandlerMapping phm = new PropertyHandlerMapping();
		//添加handler
		phm.addHandler(DefaultHandler.class.getName(), HelloHandler.class);
		//启用void的方法
		phm.setVoidMethodEnabled(true);
		//从webserver的实例中获得一个XmlRpcServer的实例
		XmlRpcServer xmlRpcServer = webServer.getXmlRpcServer();
		//将创建好的handler映射对象填充到xmlRpcServer的实例中
		xmlRpcServer.setHandlerMapping(phm);

		//获取xmlrpcServer的配置对象
		XmlRpcServerConfigImpl serverConfig = (XmlRpcServerConfigImpl) xmlRpcServer.getConfig();
		//修改xmlrpcServer的配置对象中的属性
		serverConfig.setEnabledForExtensions(true);
		serverConfig.setContentLengthOptional(false);
		//启动webServer 它其实就是一个简单web服务器,启动后会处理客户端发过来请求
		webServer.start();

在sever端用到一个Handler它是一个专门被客户端调用的类,它的创建和普通的类一样,但你会发现它实现了一个接口,可能是在客户端调用服务端实例的时候采用了动态代理必须用接口否则创建代理不成功,这种实现也充分体现了安全性。在以前的版本并没有考虑到这点可能后来加上去的。
Handler:HelloHandler.java
public class HelloHandler implements DefaultHandler{
	public String sayHello(String name){
		System.out.println("接受到请求!");
		return name+":客户你好!";
	}
}

在这里就不列出接口的代码了,很容易看出。
最后创建客户端:RpcClient.java
//创建XmlRpcClientConfigImpl看类名就可知道这个是用来配置XmlRpcClient参数的
		XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();
		//设置要连接远程服务器
		config.setServerURL(new URL("http://127.0.0.1:8080"));
		config.setEnabledForExtensions(true);
		//设置连接超时的时间
		config.setConnectionTimeout(60 * 1000);
		config.setReplyTimeout(60 * 1000);
		//创建XmlRpcClient对象
		XmlRpcClient client = new XmlRpcClient();
		//填充XmlRpcClient的配置信息
		client.setConfig(config);
		//通过util包中的ClientFactory类方便管理XmlRpcClient的实例
		ClientFactory factory = new ClientFactory(client);
		//通过ClientFactory创建要远程调用对象的代理对象,用接口接收
		DefaultHandler echo = (DefaultHandler) factory.newInstance(DefaultHandler.class);
		//调用接口暴露出的可见的方法
		System.out.println(echo.sayHello("luoxun"));
分享到:
评论

相关推荐

    rpc-Remote Procedure Call源码1

    在这个“rpc-Remote Procedure Call源码1”的压缩包中,包含了多个示例项目,它们可以帮助我们深入理解RPC的工作原理。 1. RPC基本概念: - 远程调用:RPC使得开发者可以像调用本地函数一样调用远程服务器上的函数...

    RPC(Remote Procedure Call Protocol)远程过程调用协议

    RPC,即Remote Procedure Call Protocol,远程过程调用协议,是一种在分布式系统中实现客户端与服务器端通信的技术。这种协议允许一个程序(客户端)在不理解底层网络细节的情况下,调用运行在另一台计算机(服务器...

    解决 RPC服务 属性按钮全部都是灰色

    本文将详细介绍 RPC 服务属性按钮全部都是灰色的原因和解决方案,包括手动启动“远程过程调用”服务时出现的错误信息“Could not start the Remote Procedure Call (RPC) Service. Error 1058”、使用注册表编辑器...

    rpc远程过程调用讲解与实例

    RPC(Remote Procedure Call)是一种进程间通信(IPC)技术,允许程序在不同的计算机上通过网络进行通信,就像调用本地函数一样调用远程系统上的函数。这种技术在分布式系统和网络编程中扮演着重要角色,简化了...

    rpc-Remote Procedure Call源码2

    远程过程调用(RPC,Remote Procedure Call)是分布式计算领域中的一个重要概念,它允许一个程序在不理解底层网络实现的情况下,能够调用另一个网络上的程序的功能,就像它们在同一台计算机上执行一样。RPC大大简化...

    RPC.rar_C++ 远程调用_VC6.0 开发RPC_windows RPC_远程过程调用

    RPC,即Remote Procedure Call(远程过程调用),是计算机网络编程中的一个重要概念,它允许一个程序在不理解底层网络协议的情况下,调用另一个网络上不同机器上的程序。在这个"RPC.rar"压缩包中,主要围绕C++语言在...

    远程过程调用RPC生成工具

    RPC(Remote Procedure Call,远程过程调用)是一种计算机通信协议,它允许一个程序请求另一个地址空间(通常是远程计算机上的程序)执行代码,并等待结果返回。RPC使得程序能够像调用本地函数一样调用位于远程...

    RPC(远程过程调用)

    RPC(Remote Procedure Call)是一种计算机通信协议,它允许程序在分布式环境中的一个系统上执行另一系统上的函数或方法,就像是本地调用一样。这个过程涉及到了客户端、服务器端和服务调用的封装,使得开发者无需...

    c# 实现远程调用(rpc) remoting

    首先,让我们深入了解一下什么是RPC(Remote Procedure Call):RPC是一种协议,使得一个程序可以在执行过程中无感知地调用另一个位于不同地址空间的程序,通常是网络上的另一台计算机上的程序。RPC简化了分布式系统...

    remote procedure call using protobuffer

    远程过程调用(RPC,Remote Procedure Call)是一种在分布式系统中实现客户端与服务器间通信的技术。RPC使得客户端能够像调用本地函数一样调用远端服务器上的服务,大大简化了跨网络的服务交互。本主题主要关注使用...

    Remote Procedure Call over DDS

    Remote Procedure Call over DDS(DDS-RPC)是一种技术,它允许通过DDS(数据分发服务)进行远程调用,这是在分布式系统中实现组件间通信的一种方法。DDS是一种标准的中间件,专注于实时数据共享和发布订阅模型,...

    Go语言RPC(模拟远程过程调用)

     服务器开发中会使用RPC(Remote Procedure Call,远程过程调用)简化进程间通信的过程。RPC能有效地封装通信过程。RPC能有效地封装通信过程,让远程的数据收发通信过程看起来就像本地的函数调用一样。  本例中,...

    实习一远程过程调用中间件及数据访问中间件定义.pdf

    常见的远程过程调用中间件包括 RPC(Remote Procedure Call)和 RMI(Remote Method Invocation)。 1. RPC(Remote Procedure Call) RPC 是一种远程过程调用协议,允许不同的应用程序之间进行通信和交互。RPC ...

    java-rpc远程过程调用

    Java RPC(Remote Procedure Call)是一种让程序在不同的网络计算机之间调用对方方法的技术。这个例子是用纯Java编写的,不依赖任何JDK之外的第三方库,因此非常适合初学者理解和学习。RPC的核心思想是透明性,即...

    AMFPHP php远程调用(RPC, Remote Procedure Call)工具 快速入门教程

    远程过程调用(RPC)是一种计算通信协议,允许客户端向服务器发送请求,请求执行一个特定的过程,并获取结果,就好比是调用本地方法一样。用户不需要关心网络通信的细节,因为这些细节是抽象的。这种机制通常用于...

    PHPRPC远程过程调用协议(ASP).7z

    PHPRPC(PHP Remote Procedure Call)是一种轻量级的、基于HTTP协议的远程过程调用协议,主要用于在不同服务器之间实现跨平台、跨语言的通信。在这个特定的压缩包文件"PHPRPC远程过程调用协议(ASP).7z"中,我们可以...

    PHPRPC远程过程调用协议.7z

    PHPRPC(PHP Remote Procedure Call)是一种轻量级的、基于PHP实现的远程过程调用协议,它允许在不同的PHP应用程序之间进行通信和数据交换。远程过程调用(RPC)是一种计算机程序设计技术,使得一个程序可以调用另一...

    rpc远程调用使用说明&源码

    RPC(Remote Procedure Call)远程过程调用是一种计算机通信协议,允许一个程序在某处执行,通过网络调用另一台计算机上的程序,就像它是一个本地函数一样。这种技术在分布式系统和微服务架构中广泛使用,简化了不同...

    用RPC机制把本地调用转换成远程调用

    远程过程调用(RPC, Remote Procedure Call)是一种通信协议,它允许在一台计算机上的程序调用另一台计算机上的子程序或函数,而无需程序员明确了解底层通信网络细节。通过RPC机制将本地调用转换为远程调用的能力极...

Global site tag (gtag.js) - Google Analytics