RPC简单学习文档.doc_第1页
RPC简单学习文档.doc_第2页
RPC简单学习文档.doc_第3页
RPC简单学习文档.doc_第4页
RPC简单学习文档.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

RPC(Remote Procedure Call Protocol)远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层,RPC使得开发网络分布式多程序更加容易。本文档使用Apache XML-RPC。下载地址:/apache-mirror/ws/xmlrpc/Jar包列表:commons-codec-1.4.jarcommons-httpclient-3.0.1.jarcommons-logging-1.1.jarws-commons-util-1.0.2.jarxmlrpc-client-3.1.3.jarxmlrpc-common-3.1.3.jarxmlrpc-properties.jarxmlrpc-server-3.1.3.jar代码分为四部分:rpc服务器端代码、被执行的类、rpc配置文件(myHperties)、rpc客户端代码rpc配置文件应该放在build path指定的路径下,比如src文件夹下。具体代码如下:rpc服务器端代码server.javaimport org.apache.xmlrpc.XmlRpcRequest;import mon.XmlRpcHttpRequestConfig;import org.apache.xmlrpc.server.AbstractReflectiveHandlerMapping;import org.apache.xmlrpc.server.PropertyHandlerMapping;import org.apache.xmlrpc.server.XmlRpcServer;import org.apache.xmlrpc.server.XmlRpcServerConfigImpl;import org.apache.xmlrpc.webserver.WebServer;public class Server private static final int port = 8399; public static void main(String args) throws Exception /RPC服务 WebServer webServer = new WebServer(port); XmlRpcServer xmlRpcServer = webServer.getXmlRpcServer(); PropertyHandlerMapping phm = new PropertyHandlerMapping(); /验证权限 AbstractReflectiveHandlerMapping.AuthenticationHandler handler = new AbstractReflectiveHandlerMapping.AuthenticationHandler() public boolean isAuthorized(XmlRpcRequest pRequest) XmlRpcHttpRequestConfig config = (XmlRpcHttpRequestConfig) pRequest.getConfig(); return isAuthenticated(config.getBasicUserName(), config.getBasicPassword(); ; ; phm.setAuthenticationHandler(handler); /* Load handler definitions from a property file. * The property file might look like: * myHandler=com.huan.RPC.MyHandler */ phm.load(Thread.currentThread().getContextClassLoader(), myHperties); /* You may also provide the handler classes directly, * like this: * phm.addHandler(myHandler, * com.huan.RPC.MyHandler); */ xmlRpcServer.setHandlerMapping(phm); XmlRpcServerConfigImpl serverConfig = (XmlRpcServerConfigImpl) xmlRpcServer.getConfig(); serverConfig.setEnabledForExtensions(true); serverConfig.setContentLengthOptional(false); webServer.start(); /用户名和密码验证 private static boolean isAuthenticated(String pUserName, String pPassword) return foo.equals(pUserName) & bar.equals(pPassword); 被执行类MyHandler.javapublic class MyHandler public String sayHello(String str)return Hello, + str;myHperties 文件myHandler=com.huan.RPC.MyHandle客户端代码:import .URL;import org.apache.xmlrpc.XmlRpcException;import org.apache.xmlrpc.XmlRpcRequest;import org.apache.xmlrpc.client.XmlRpcClient;import org.apache.xmlrpc.client.XmlRpcClientConfigImpl;import org.apache.xmlrpc.client.XmlRpcCommonsTransportFactory;import mon.XmlRpcHttpRequestConfig;import org.apache.xmlrpc.server.AbstractReflectiveHandlerMapping;import org.apache.xmlrpc.server.PropertyHandlerMapping;import org.apache.xmlrpc.server.XmlRpcHandlerMapping;import org.apache.xmlrpc.webserver.XmlRpcServlet;public class Client extends XmlRpcServlet public static void main(String args) throws Exception / create configuration XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl(); /xmlrpc服务在web.xml中配置 config.setServerURL(new URL(:8399/xmlrpc); config.setEnabledForExtensions(true); config.setConnectionTimeout(60 * 1000); config.setReplyTimeout(60 * 1000); /设置用户名和密码 config.setBasicUserName(foo); config.setBasicPassword(bar); XmlRpcClient client = new XmlRpcClient(); / use Commons HttpClient as transport client.setTransportFactory( new XmlRpcCommonsTransportFactory(client); / set configuration client.setConfig(config); / make the a regular call Object params = new Object Tom ; /调用服务器端sayHello方法 String result = (St

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论