【问题标题】:Rmi Server client remote conection with downloading code localhostRmi Server 客户端远程连接与下载代码 localhost
【发布时间】:2016-06-15 19:25:17
【问题描述】:

那么让我们开始吧……至少在我看来这不是一个简单的问题…… 我已经创建了一个 Rmi Server 属性工作正常。

在服务器内部,如果它是第一次运行,我需要创建一个文件,如果它已经存在,我需要覆盖它。 (1)

我已经成功创建了一个 rmi 客户端,我测试该项目与同一个项目中的客户端类正常工作。

在我的 Rmi 接口上,在某些方法中我需要将 Clients 对象作为参数 (2) 传递。

问题从这里开始。我需要多次运行我的 Rmi Client 但不使用线程,我需要创建另一个项目,每个项目(客户端项目)都具有相同的代码并从那里运行。当我从服务器项目运行客户端时运行完美,但是当我运行另一个远程客户端时它失败了 给我安全管理器的常见错误

run:
Exception in thread "main" java.security.AccessControlException: access denied ("java.net.SocketPermission" "127.0.0.1:1099" "connect,resolve")
    at java.security.AccessControlContext.checkPermission(AccessControlContext.java:472)
    at java.security.AccessController.checkPermission(AccessController.java:884)
    at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
    at java.lang.SecurityManager.checkConnect(SecurityManager.java:1051)
    at java.net.Socket.connect(Socket.java:584)
    at java.net.Socket.connect(Socket.java:538)
    at java.net.Socket.<init>(Socket.java:434)
    at java.net.Socket.<init>(Socket.java:211)
    at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirectSocketFactory.java:40)
    at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMasterSocketFactory.java:148)
    at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:613)
    at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:216)
    at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:202)
    at sun.rmi.server.UnicastRef.newCall(UnicastRef.java:342)
    at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
    at java.rmi.Naming.lookup(Naming.java:101)
    at Client.<init>(Client.java:69)
    at Client.main(Client.java:142)
C:\Users\blue-icon\AppData\Local\NetBeans\Cache\8.1\executor-snippets\run.xml:53: Java returned: 1
BUILD FAILED (total time: 1 second)

所以我用谷歌搜索和谷歌搜索,发现我需要安全管理器才能授予远程客户端下载服务器代码的权限。所以我将安全管理器添加到服务器,但因为我为我的文件使用流 (1) 它给我这个错误

Exception in thread "main" java.security.AccessControlException: access denied ("java.io.FilePermission" "Subscribe.txt" "read")
    at java.security.AccessControlContext.checkPermission(AccessControlContext.java:472)
    at java.security.AccessController.checkPermission(AccessController.java:884)
    at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
    at java.lang.SecurityManager.checkRead(SecurityManager.java:888)
    at java.io.File.exists(File.java:814)
    at RMIServer03.checkFile(RMIServer03.java:132)
    at RMIServer03.<init>(RMIServer03.java:46)
    at RMIServer03.main(RMIServer03.java:56)

(2) 如果没有客户端类的实例,我无法在服务器项目上编译我的服务器和接口,因为我需要像我所说的那样将它作为参数传递 有什么帮助吗?

【问题讨论】:

    标签: java interface rmi permission-denied


    【解决方案1】:

    你看错了。您需要客户端的安全管理器,而不是服务器。

    【讨论】:

      猜你喜欢
      • 2013-06-25
      • 2011-05-14
      • 1970-01-01
      • 1970-01-01
      • 2011-09-25
      • 1970-01-01
      • 2013-04-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多