收藏 分销(赏)

RPC简单学习文档.doc

上传人:仙人****88 文档编号:12039582 上传时间:2025-09-01 格式:DOC 页数:8 大小:46.50KB 下载积分:10 金币
下载 相关 举报
RPC简单学习文档.doc_第1页
第1页 / 共8页
RPC简单学习文档.doc_第2页
第2页 / 共8页


点击查看更多>>
资源描述
    RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层,RPC使得开发网络分布式多程序更加容易。本文档使用Apache XML-RPC。 下载地址: Jar包列表: commons-codec-1.4.jar commons-httpclient-3.0.1.jar commons-logging-1.1.jar ws-commons-util-1.0.2.jar xmlrpc-client-3.1.3.jar xmlrpc-common-3.1.3.jar xmlrpc-properties.jar xmlrpc-server-3.1.3.jar 代码分为四部分:rpc服务器端代码、被执行的类、rpc配置文件(myHandlers.properties)、rpc客户端代码 rpc配置文件应该放在build path指定的路径下,比如src文件夹下。 具体代码如下: rpc服务器端代码server.java import 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(), "myHandlers.properties"); /* 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.java   public class MyHandler { public String sayHello(String str){ return "Hello," + str; } } myHandlers.properties 文件 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("http://127.0.0.1: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 = (String) client.execute("myHandler.sayHello", params); System.out.println("" + result); } }     Web.xml文件 <servlet> <servlet-name>XmlRpcServlet</servlet-name> <servlet-class>org.apache.xmlrpc.webserver.XmlRpcServlet</servlet-class> <init-param> <param-name>enabledForExtensions</param-name> <param-value>true</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>XmlRpcServlet</servlet-name> <url-pattern>/xmlrpc</url-pattern> </servlet-mapping>  
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服