﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-feu yeux-随笔分类-rpc</title><link>http://www.blogjava.net/feuyeux/category/48716.html</link><description>Belong to Eric Han</description><language>zh-cn</language><lastBuildDate>Wed, 25 Apr 2012 20:52:02 GMT</lastBuildDate><pubDate>Wed, 25 Apr 2012 20:52:02 GMT</pubDate><ttl>60</ttl><item><title>Java远程方法调用实践 </title><link>http://www.blogjava.net/feuyeux/archive/2011/05/26/RMI.html</link><dc:creator>Lu Han</dc:creator><author>Lu Han</author><pubDate>Thu, 26 May 2011 15:55:00 GMT</pubDate><guid>http://www.blogjava.net/feuyeux/archive/2011/05/26/RMI.html</guid><wfw:comment>http://www.blogjava.net/feuyeux/comments/351136.html</wfw:comment><comments>http://www.blogjava.net/feuyeux/archive/2011/05/26/RMI.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/feuyeux/comments/commentRss/351136.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/feuyeux/services/trackbacks/351136.html</trackback:ping><description><![CDATA[<div>服务器端业务接口继承自Remote</div><div style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; background-color: #eeeeee; "><div><div>public interface Biz extends Remote {</div><div></div><div><span style="white-space:pre">	</span>public String aloha() throws RemoteException;</div><div></div><div>}</div></div></div><br /><div><div>服务器端业务实现该接口</div></div><div style="background-color: #eeeeee; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><div><div>public class BizImpl extends UnicastRemoteObject implements Biz {</div><div><span style="white-space:pre">	</span>private static final long serialVersionUID = -8559392326593037120L;</div><div></div><div><span style="white-space:pre">	</span>public BizImpl() throws RemoteException {</div><div><span style="white-space:pre">		</span>super();</div><div><span style="white-space:pre">	</span>}</div><div></div><div><span style="white-space:pre">	</span>@Override</div><div><span style="white-space:pre">	</span>public String aloha() throws RemoteException {</div><div><span style="white-space:pre">		</span>return "Aloha Baby.";</div><div><span style="white-space:pre">	</span>}</div><div>}</div></div></div><br />服务器注册远程实现名称<br /><div style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; background-color: #eeeeee; "><div><div>public class Server {</div><div><span style="white-space:pre">	</span>public Server() {</div><div><span style="white-space:pre">		</span>try {</div><div><span style="white-space:pre">			</span>Biz bis = new BizImpl();</div><div><span style="white-space:pre">			</span>// style-1</div><div><span style="white-space:pre">			</span>Registry registry = LocateRegistry.createRegistry(RMIParameter.PORT);</div><div><span style="white-space:pre">			</span>registry.rebind(RMIParameter.NAME, bis); // replace existing binding name</div><div><span style="white-space:pre">			</span>// style-2</div><div><span style="white-space:pre">			</span>//java.rmi.Naming.rebind(RMIParameter.NAME, bis); // replace existing binding name</div><div><span style="white-space:pre">		</span>} catch (Exception e) {</div><div><span style="white-space:pre">			</span>e.printStackTrace();</div><div><span style="white-space:pre">		</span>}</div><div><span style="white-space:pre">	</span>}</div><div></div><div><span style="white-space:pre">	</span>public static void main(String args[]) {</div><div><span style="white-space:pre">		</span>new Server();</div><div><span style="white-space:pre">	</span>}</div><div>}</div></div></div><br /><div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">style-2 需要指定一个Policy文件或者运行rmiregistry</div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "></div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">java -Djava.security.policy=folder_x/rmi/policy_file creative.fire.rmi.Server</div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">Policy文件的内容为：</div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">grant{</div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">&nbsp; &nbsp; &nbsp; permission java.net.SocketPermission "localhost:9527", "connect, resolve";</div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">};</div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "></div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">运行rmiregistry是修改 JDK 目录下的jre/lib/security/java.policy</div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">rmiregistry（linux）</div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">start rmiregistry(windows)</div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "></div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">允许任何人(targets)作任何事情(actions)：</div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">grant{</div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">&nbsp; &nbsp; &nbsp; &nbsp; permission java.security.AllPermission "","";</div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">};</div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">OR</div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">grant {</div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">&nbsp; permission java.security.AllPermission;</div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">};</div></div>客户端打桩调用<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><span style="color: #000000; "><div><div>public class Client {</div><div><span style="white-space:pre">	</span>public static void main(String args[]) {</div><div><span style="white-space:pre">		</span>try {</div><div><span style="white-space:pre">			</span>Biz bis = (Biz) Naming.lookup(RMIPREFIX + PORT + NAME);</div><div><span style="white-space:pre">			</span>System.out.println(bis.aloha());</div><div><span style="white-space:pre">		</span>} catch (Exception e) {</div><div><span style="white-space:pre">			</span>e.printStackTrace();</div><div><span style="white-space:pre">		</span>}</div><div><span style="white-space:pre">	</span>}</div><div>}</div></div></span></div><div><div></div></div><img src ="http://www.blogjava.net/feuyeux/aggbug/351136.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/feuyeux/" target="_blank">Lu Han</a> 2011-05-26 23:55 <a href="http://www.blogjava.net/feuyeux/archive/2011/05/26/RMI.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>