【发布时间】: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