免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1069 | 回复: 0
打印 上一主题 下一主题

高手指点,一个RMI应用程序的错误 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-09-13 00:25 |只看该作者 |倒序浏览
高手指点:

我创建了一个RMI应用程序,调试出错,如下:
-------------------------------------------------------------------------------
在路径:E:\rmitest\com\prefect\pi下,三个.class文件的源代码如下:

PiRemote.java

package com.prefect.pi;

import java.rmi.*;

interface PiRemote extends Remote{
  double getPi() throws RemoteException;
}
-------------------------------------------------------------------------------
Pi.java

package com.prefect.pi;

import java.net.*;
import java.rmi.*;
import java.rmi.registry.*;
import java.rmi.server.*;

public class Pi extends UnicastRemoteObject implements PiRemote{
  public double getPi() throws RemoteException{
    return Math.PI;
  }

  public Pi() throws RemoteException{}

  public static void main(String[] args){
    System.setSecurityManager(new RMISecurityManager());
    try{
      Pi p = new Pi();
      Naming.bind("//Default:1010/pi",p);
    }catch(Exception e){
      System.out.println("Error --- " + e.toString());
      e.printStackTrace();
    }
  }
}

-------------------------------------------------------------------------------
OutputPi.java

package com.prefect.pi;

import java.rmi.*;
import java.rmi.registry.*;

public class OutputPi{
  public static void main(String[] args){
    System.setSecurityManager(new RMISecurityManager());
    try{
      PiRemote pr = (PiRemote) Naming.lookup("//Default:1010/Pi";
      for(int i = 0; i < 10; i++)
        System.out.println("i = " + pr.getPi());
    }catch(Exception e){
      System.out.println("Error --- " + e.toString());
      e.printStackTrace();
    }
  }
}

----------------------------------------------------------------------------------------
以上三个文件编译通过,使用命令:rmic com.prefect.pi.Pi,生成Pi_Skel.class和Pi_Stub.class,
路径为:E:\rmitest\com\prefect\pi,和刚编译通过的三个类在同一文件夹下。并在此文件夹下建立:
policy.txt文件,内容如下:
----------------------------------------------------------------------------------------
grant{
        permission java.security.AllPermission;
}
----------------------------------------------------------------------------------------

然后执行如下命令:

E:\rmitest>;java -Djava.rmi.server.codebase=com\prefect\pi\ -Djava.security.policy=com\prefe
t\pi\policy.txt com.prefect.pi.Pi
----------------------------------------------------------------------------------------
报错如下:

java.security.policy: 解析错误 file:/E:/J2ee/java%e9%a1%b9%e7%9b%ae%e5%ae%9e%e8
b7%b5/java%e9%a1%b9%e7%9b%ae%e5%ae%9e%e8%b7%b5/%e7%ac%94%e8%ae%b0%e5%8f%8a%e7%b
%83%e4%b9%a0/6/exercises/study21/day18/rmitest/com/prefect/pi/policy.txt:
        预期的 [;], 读取 [end of file]
Error --- java.security.AccessControlException: access denied (java.net.SocketP
rmission Default resolve)
java.security.AccessControlException: access denied (java.net.SocketPermission
efault resolve)
        at java.security.AccessControlContext.checkPermission(AccessControlCont
xt.java:269)
        at java.security.AccessController.checkPermission(AccessController.java
401)
        at java.lang.SecurityManager.checkPermission(SecurityManager.java:524)
        at java.lang.SecurityManager.checkConnect(SecurityManager.java:1023)
        at java.net.InetAddress.getAllByName0(InetAddress.java:1000)
        at java.net.InetAddress.getAllByName0(InetAddress.java:981)
        at java.net.InetAddress.getAllByName(InetAddress.java:975)
        at java.net.InetAddress.getByName(InetAddress.java:889)
        at java.net.InetSocketAddress.<init>;(InetSocketAddress.java:114)
        at java.net.Socket.<init>;(Socket.java:124)
        at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirec
SocketFactory.java:22)
        at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMaste
SocketFactory.java:12
        at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:562)
        at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:18
)
        at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:171)
        at sun.rmi.server.UnicastRef.newCall(UnicastRef.java:313)
        at sun.rmi.registry.RegistryImpl_Stub.bind(Unknown Source)
        at java.rmi.Naming.bind(Naming.java:111)
        at com.prefect.pi.Pi.main(Pi.java:19)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP