⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 right9_3_4.htm

📁 清华JAVA教程。不用多说了吧
💻 HTM
字号:
<html><head><title>JAVA编程语言</title><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><link rel="stylesheet" href="../../../css/text.css" type="text/css"></head><body bgcolor="#FFFFFF" text="#000000" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" ><table width="100%" border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF">  <tr>     <td valign="top">       <table width="90%" border="0" cellspacing="0" cellpadding="0" align="center" bgcolor="#FFFFFF">        <tr>          <td valign="top">             <p class="pt9-black">  <span class="zhongdian">1. 构造一个远程接口Hello:<a name="01"></a></span><br>              <br>                package hello; <br>                public interface Hello extends java.rmi.Remote { <br>                <font color="339900">//rmi应用程序必须继承自java.rmi.Remote</font><br>                  String sayHello() throws java.rmi.RemoteException ; <br>                  <font color="339900">//定义可以远程调用的接口</font><br>                }<br>              <br>               <span class="zhongdian">2. 完成server方程序,定义HelloImpl类实现Hello接口:<a name="02"></a></span><br>              <br>                package hello;<br>                import java.rmi.*;<br>                import java.rmi.server.UnicastRemoteObject;<br>                public class HelloImpl extends UnicastRemoteObject implements               Hello <br>                                   <font color="339900">//实现Hello接口</font><br>                {<br>                  private String name;<br>                  public HelloImpl (String s ) throws java.rmi.RemoteException{<br>                  super(); <font color="339900">//调用父类的构造函数</font><br>                  name = s;<br>                }<br>                public String sayHello() throws RemoteException {<br>                  return &quot;Hello world!&quot;; <font color="339900">//实现Hello接口定义的方法</font><br>                }<br>                public static void main ( String args [])<br>                {<br>                  System.setSecurityManager ( new RMISecurityManager() ); <br>                  <font color="339900">//设置RMI程序需要的安全策略</font><br>                  try<br>                  {<br>                   HelloImpl obj = new HelloImpl(&quot;HelloServer&quot;); <br>                   <font color="339900">//生成一个HelloImpl的实例</font><br>                   Naming.rebind(&quot;HelloServer&quot;, obj); <br>                   <font color="339900">//将这个实例绑定到一个名字上</font><br>                   System.out.println(&quot;HelloImpl created and bound in the               registry to the name HelloServer&quot;);<br>                  } catch (Exception e)<br>                  {<br>                   System.out.println(&quot;HelloImpl.main: an exception occured:&quot;);<br>                   e.printStackTrace(); <font color="339900">//产生异常的话,打印出出错信息</font><br>                  }<br>                }<br>              }<br>              <br>                server方生成一个远程对象并和一个可和客户对话的名称&quot;HelloServer&quot;绑定。Client端可以根据该名称寻找相应的远程对象,进而调用其远程方法。<br>              <br>               <span class="zhongdian">3. 完成client方程序<a name="03"></a></span><br>              <br>                package hello;<br>                import java.rmi.*; public class HelloClient <br>                {<br>                 public static void main(String args[])<br>                {<br>                 System.setSecurityManager(new RMISecurityManager() ); <br>                 <font color="339900">//设置RMI需要的安全策略</font><br>                 try<br>                 {<br>                  Hello obj = (Hello) Naming.lookup(&quot;HelloServer&quot;);               <br>                  <font color="339900">//从服务端获得一个Hello的远程对象</font><br>                  String message = obj.sayHello(); <br>                  <font color="339900">//远程调用Hello的方法</font><br>                  System.out.println(message); <br>                  <font color="339900">//将输出结果打印</font><br>                 } catch (Exception e)<br>                 {<br>                  System.out.println(&quot;Hello client : an exception occured&quot;);<br>                  e.printStackTrace(); <font color="339900">//若有异常,输出异常信息</font><br>                 }<br>                }<br>              } <br>              <br>                client利用java.rmi包中的Naming类的lookup()方法获得远程对象obj,然后调用其远程方法sayHello()获得字符串&quot;Hello               World&quot;,并输出到屏幕上。<br>              <br>                要运行这几个程序,还有一些工作要做,这几个程序的文件名为Hello.java、HelloImpl.java、HelloClient.java,它们都被放置在的的d:\hello目录下,在windows下,你需要在命令窗口中如此运行它们:<br>              <br>                1. Set CLASSPATH = %CLASSPATH%;d:\<br>              <br>                2. 在d:\hello下编译源代码:<br>                  javac -d .. *.java<br>              <br>                3. 在生成端头和框架模块,首先把目录切换回d:\<br>                  rmic -d . hello.HelloImpl<br>              <br>                4. 在d:\下运行RMI远程对象注册程序<br>                  start rmiregistry<br>              <br>                5. 在d:\下运行服务器程序<br>                  java -Djava.security.policy=my.policy hello.HelloImpl<br>              <br>                6. 在d:\下运行客户端程序<br>                  java -Djava.security.policy=my.policy hello.HelloClient<br>              <br>                <font color="000099">其中上面的步骤中5和6出现的my.policy是一个文件,这个文件和Java的安全机制有关,在这个程序中我们不需要安全限制,所以我们把权限设为都可以访问。my.policy如下:<br>                grant {<br>                    permission java.security.AllPermission;<br>                };<br>              <br>                你一定要记得设置这个文件,否则RMI将出&quot;拒绝访问&quot;的错误。如果你想了解Java其他的安全机制,那么可以参考Java里有关security的资料。<br>              <br>                RMI属于Java高级技术的一种,通过本小节的学习,你应该已经对RMI有了一定的了解,分布式计算是一个很重要的技术,而Java在分布式计算方面有着很好的前景,以RMI为基础,Java将在分布式计算方面大有作为。<br>              </font> </p>          </td>        </tr>      </table>    </td>  </tr></table></body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -