【发布时间】:2015-08-13 02:22:56
【问题描述】:
我已经在网上寻找答案,但没有任何帮助。 我正在尝试运行我创建的 RMI 服务器。 在服务器主我有这部分:
System.setSecurityManager(new RMISecurityManager());
...
...
...
Naming.rebind("//localhost/ForumSite", obj);
我的策略文件 :server,policy(... 指向文件夹)-
grant codeBase "file:C:/.../workspace//ForunServer/bin/" {
permission java.security.AllPermission;
permission java.net.SocketPermission "localhost:1099-", "listen, connect, resolve";
};
grant {
permission java.lang.RuntimePermission "setSecurityManager";
permission java.lang.RuntimePermission "createSecurityManager";
permission java.lang.RuntimePermission "usePolicy";
};
我正在尝试运行 Windows 操作系统,我在另一个控制台中写道:javaw rmiregistry 在另一个(从 bin 文件夹中):
java -Djava.security.manager -Djava.security.policy=server.policy ServerSideImp
我不断收到错误:
访问被拒绝 ("java.net.SocketPermission" "127.0.0.1:1099" “连接,解决”)
我确保策略文件位于同一位置,
这是我将 -Djava.security.debug=access,failure 添加到运行时的运行结果-
访问:允许访问(“java.io.FilePermission” "C:\Users...\ForumServer\bin" "read") 访问:允许访问 ("java.lang.RuntimePermission" "setSecurityManager") 访问:访问 允许(“java.security.SecurityPermission” “getProperty.security.provider.1”)访问:允许访问 (“java.security.SecurityPermission”“getProperty.security.provider.2”) 访问:允许访问(“java.security.SecurityPermission” “getProperty.security.provider.3”)访问:允许访问 (“java.security.SecurityPermission”“getProperty.security.provider.4”) 访问:允许访问(“java.security.SecurityPermission” “getProperty.security.provider.5”)访问:允许访问 (“java.security.SecurityPermission”“getProperty.security.provider.6”) 访问:允许访问(“java.security.SecurityPermission” “getProperty.security.provider.7”)访问:允许访问 (“java.security.SecurityPermission”“getProperty.security.provider.8”) 访问:允许访问(“java.security.SecurityPermission” “getProperty.security.provider.9”)访问:允许访问 (“java.security.SecurityPermission” “getProperty.security.provider.10”)访问:允许访问 (“java.security.SecurityPermission” “getProperty.security.provider.11”)访问:允许访问 ("java.lang.RuntimePermission" "accessClassInPackage.sun.security.provider") 访问:允许访问 ("java.lang.reflect.ReflectPermission" "suppressAccessChecks") 访问: 允许访问(“java.util.PropertyPermission”“java.security.egd” “读取”)访问:允许访问(“java.security.SecurityPermission” “getProperty.securerandom.source”)访问:允许访问 ("java.security.SecurityPermission" "putProviderProperty.SUN") 访问: 允许访问 ("java.util.PropertyPermission" "*" "read,write") 访问:允许访问(“java.util.PropertyPermission”“os.arch” “读取”)访问:允许访问(“java.lang.RuntimePermission” “loadLibrary.net”)访问:允许访问(“java.io.FilePermission” "C:\Program Files\Java\jre1.8.0_45\bin\net.dll" "read") 访问:访问 允许(“java.util.PropertyPermission”“java.net.preferIPv4Stack” “读取”)访问:允许访问(“java.util.PropertyPermission” "java.net.preferIPv6Addresses" "read") 访问:允许访问 ("java.lang.RuntimePermission" "loadLibrary.net") 访问:访问 允许(“java.io.FilePermission”“C:\Program Files\Java\jre1.8.0_45\bin\net.dll" "read") 访问:允许访问 ("java.util.PropertyPermission" "impl.prefix" "read") 访问:访问 允许(“java.lang.reflect.ReflectPermission”“suppressAccessChecks”) 访问:允许访问(“java.util.PropertyPermission” "sun.net.spi.nameservice.provider.1" "read") 访问:允许访问 ("java.net.NetPermission" "getNetworkInformation") 访问:访问 允许(“java.net.NetPermission”“getNetworkInformation”)访问: 允许访问(“java.net.NetPermission”“getNetworkInformation”) 访问:允许访问(“java.net.NetPermission” "getNetworkInformation") 访问:允许访问 ("java.net.NetPermission" "getNetworkInformation") 访问:访问 允许(“java.net.NetPermission”“getNetworkInformation”)访问: 允许访问(“java.net.NetPermission”“getNetworkInformation”) 访问:允许访问(“java.net.NetPermission” "getNetworkInformation") 访问:允许访问 ("java.net.NetPermission" "getNetworkInformation") 访问:访问 允许(“java.net.NetPermission”“getNetworkInformation”)访问: 允许访问(“java.net.NetPermission”“getNetworkInformation”) 访问:允许访问(“java.lang.RuntimePermission” "fileSystemProvider") 访问:允许访问 ("java.util.PropertyPermission" "user.dir" "read") 访问:访问 允许 ("java.util.PropertyPermission" "os.version" "read") 访问: 允许访问(“java.util.PropertyPermission”“sun.jnu.encoding” “读取”)访问:允许访问(“java.util.PropertyPermission” “java.nio.file.spi.DefaultFileSystemProvider”“读取”)访问:访问 允许(“java.io.FilePermission”“C:\Users\URI\AppData\Local\Temp” “读取”)访问:允许访问(“java.io.FilePermission” "C:\Users\URI\AppData\Local\Temp" "read") 访问:允许访问 ("java.io.FilePermission" "C:\Users\URI\AppData\Local\Temp" "读取") 访问:允许访问(“java.lang.RuntimePermission” “loadLibrary.net”)访问:允许访问(“java.io.FilePermission” "C:\Program Files\Java\jre1.8.0_45\bin\net.dll" "read") 访问:访问 允许(“java.lang.RuntimePermission”“loadLibrary.nio”)访问: 允许访问(“java.io.FilePermission”“C:\Program Files\Java\jre1.8.0_45\bin\nio.dll" "read") 访问:允许访问 ("java.util.PropertyPermission" "sun.nio.fs.ensureAccurateMetadata" “读取”)访问:允许访问(“java.util.PropertyPermission” "java.rmi.server.randomIDs" "read") 访问:允许访问 (“java.util.PropertyPermission”“java.rmi.server.hostname”“读取”) 访问:允许访问(“java.security.SecurityPermission” “getProperty.networkaddress.cache.ttl”)访问:允许访问 ("java.util.PropertyPermission" "sun.net.inetaddr.ttl" "read") 访问: 允许访问(“java.security.SecurityPermission” “getProperty.networkaddress.cache.negative.ttl”)访问:访问被拒绝 ("java.net.SocketPermission" "URI-PC" "resolve") java.lang.Exception: 堆栈跟踪 在 java.lang.Thread.dumpStack(未知来源) 在 java.security.AccessControlContext.checkPermission(未知来源) 在 java.security.AccessController.checkPermission(未知来源) 在 java.lang.SecurityManager.checkPermission(未知来源) 在 java.lang.SecurityManager.checkConnect(未知来源) 在 java.net.InetAddress.getLocalHost(未知来源) 在 sun.rmi.transport.tcp.TCPEndpoint.(未知来源) 在 sun.rmi.transport.LiveRef.(未知来源) 在 sun.rmi.transport.LiveRef.(未知来源) 在 sun.rmi.server.UnicastServerRef.(未知来源) 在 java.rmi.server.UnicastRemoteObject.exportObject(未知来源) 在 java.rmi.server.UnicastRemoteObject.(未知来源) 在 java.rmi.server.UnicastRemoteObject.(未知来源) 在 ServerSideImp.(ServerSideImp.java:18) 在 ServerSideImp.main(ServerSideImp.java:62) 访问:允许访问(“java.security.SecurityPermission”“getPolicy”)访问: 允许访问 ("java.io.FilePermission" "C:\Users...\ForumServer\bin" "read") 访问:ProtectionDomain 失败的域 (文件:/C:/Users/.../ForumServer/bin/) sun.misc.Launcher$AppClassLoader@73d16e93 java.security.Permissions@6f94fa3e (("java.lang.RuntimePermission" "setSecurityManager") ("java.lang.RuntimePermission" "createSecurityManager") ("java.lang.RuntimePermission" "exitVM") ("java.lang.RuntimePermission" "usePolicy") ("java.lang.RuntimePermission" "stopThread") (“java.util.PropertyPermission”“java.specification.version”“读取”) (“java.util.PropertyPermission”“java.version”“读取”) (“java.util.PropertyPermission”“os.arch”“读取”) (“java.util.PropertyPermission”“java.specification.vendor”“读取”) (“java.util.PropertyPermission”“java.vm.specification.name”“读取”) (“java.util.PropertyPermission”“java.vm.vendor”“读取”) (“java.util.PropertyPermission”“path.separator”“读取”) (“java.util.PropertyPermission”“os.version”“读取”) (“java.util.PropertyPermission”“file.separator”“读取”) (“java.util.PropertyPermission”“line.separator”“读取”) (“java.util.PropertyPermission”“java.vm.specification.vendor”“读取”) (“java.util.PropertyPermission”“java.specification.name”“读取”) (“java.util.PropertyPermission”“java.vendor.url”“读取”) (“java.util.PropertyPermission”“java.vendor”“读取”) (“java.util.PropertyPermission”“java.vm.version”“读取”) (“java.util.PropertyPermission”“java.vm.name”“读取”) ("java.util.PropertyPermission" "java.vm.specification.version" "读取") ("java.util.PropertyPermission" "os.name" "读取") (“java.util.PropertyPermission”“java.class.version”“读取”) ("java.net.SocketPermission" "localhost:0" "listen,resolve") ("java.io.FilePermission" "\C:\Users...\ForumServer\bin-" "读取") )
访问:允许访问(“java.util.PropertyPermission” "java.rmi.server.useLocalHostName" "read") 访问:允许访问 (“java.util.PropertyPermission”“sun.rmi.transport.logLevel”“读取”) 访问:允许访问(“java.util.logging.LoggingPermission” “控制”)访问:允许访问 ("java.util.logging.LoggingPermission" "控制") 访问:访问 允许(“java.util.PropertyPermission” "sun.rmi.transport.tcp.logLevel" "read") 访问:允许访问 ("java.util.logging.LoggingPermission" "控制") 访问:访问 允许(“java.util.logging.LoggingPermission”“控制”)访问: 允许访问(“java.util.PropertyPermission” "sun.rmi.transport.tcp.maxConnectionThreads" "read") 访问:访问 允许(“java.util.PropertyPermission” "sun.rmi.transport.tcp.threadKeepAliveTime" "read") 访问:访问 允许(“java.util.PropertyPermission” "sun.rmi.transport.proxy.logLevel" "read") 访问:允许访问 ("java.util.logging.LoggingPermission" "控制") 访问:访问 允许(“java.util.logging.LoggingPermission”“控制”)访问: 允许访问(“java.util.PropertyPermission” "sun.rmi.transport.proxy.connectTimeout" "read") 访问:访问 允许(“java.util.PropertyPermission” "sun.rmi.transport.proxy.eagerHttpFallback" "read") 访问:访问 允许(“java.util.PropertyPermission”“http.proxyHost”“读取”) 访问:允许访问(“java.util.PropertyPermission”“proxyHost” “读取”)访问:允许访问(“java.util.PropertyPermission” "java.rmi.server.disableHttp" "read") 访问:允许访问 ("java.util.PropertyPermission" "sun.rmi.transport.tcp.readTimeout" “读取”)访问:允许访问(“java.util.PropertyPermission” "java.rmi.server.hostname" "read") 访问:允许访问 (“java.util.PropertyPermission” “sun.misc.ProxyGenerator.saveGeneratedFiles”“读取”)访问:访问 允许(“java.util.PropertyPermission” "sun.rmi.dgc.server.gcInterval" "read") 访问:允许访问 ("java.lang.RuntimePermission" "loadLibrary.net") 访问:访问 允许(“java.io.FilePermission”“C:\Program Files\Java\jre1.8.0_45\bin\net.dll" "read") 访问:允许访问 ("java.util.PropertyPermission" "" "read,write") 访问:访问 允许 ("java.util.PropertyPermission" "" "read,write") 访问: 允许访问(“java.util.PropertyPermission” "sun.net.useExclusiveBind" "read") 访问:允许访问 ("java.net.SocketPermission" "localhost:0" "listen,resolve") 访问: 允许访问(“java.lang.RuntimePermission”“modifyThreadGroup”) 访问:允许访问(“java.lang.RuntimePermission” "modifyThreadGroup") 访问:允许访问 ("java.lang.RuntimePermission" "getClassLoader") 访问:访问 允许 ("java.lang.RuntimePermission" "modifyThreadGroup") 访问: 允许访问(“java.lang.RuntimePermission”“modifyThread”)访问: 允许访问(“java.lang.RuntimePermission”“setContextClassLoader”) 访问:允许访问(“java.lang.RuntimePermission”“modifyThread”) 访问:允许访问(“java.util.PropertyPermission” "sun.rmi.dgc.logLevel" "read") 访问:允许访问 ("java.util.logging.LoggingPermission" "控制") 访问:访问 允许(“java.util.logging.LoggingPermission”“控制”)访问: 允许访问(“java.util.PropertyPermission” "java.rmi.dgc.leaseValue" "read") 访问:允许访问 (“java.util.PropertyPermission”“sun.rmi.dgc.checkInterval”“读取”) 访问:允许访问(“java.util.logging.LoggingPermission” “控制”)访问:允许访问 ("java.util.logging.LoggingPermission" "控制") 访问:访问 允许(“java.util.PropertyPermission” "sun.rmi.runtime.schedulerThreads" "read") 访问:允许访问 ("java.lang.RuntimePermission" "sun.rmi.runtime.RuntimeUtil.getInstance") 访问:允许访问 ("java.lang.RuntimePermission" "setContextClassLoader") 访问:访问 允许(“java.util.PropertyPermission”“java.rmi.server.hostname” “读取”)访问:允许访问(“java.lang.reflect.ReflectPermission” "suppressAccessChecks") 访问:允许访问 ("java.lang.RuntimePermission" "setContextClassLoader") 访问:访问 允许 ("java.lang.RuntimePermission" "getClassLoader") 访问: 允许访问(“java.lang.RuntimePermission”“modifyThreadGroup”) 访问:允许访问(“java.lang.RuntimePermission”“modifyThread”) 访问:允许访问(“java.lang.RuntimePermission” "setContextClassLoader") 访问:允许访问 ("java.lang.RuntimePermission" "modifyThread") 访问:允许访问 ("java.lang.RuntimePermission" "modifyThreadGroup") 访问:访问 允许 ("java.lang.RuntimePermission" "modifyThreadGroup") 访问: 允许访问(“java.lang.RuntimePermission”“modifyThread”)访问: 允许访问(“java.lang.RuntimePermission”“modifyThread”)访问: 允许访问(“java.lang.RuntimePermission”“modifyThread”)访问: 允许访问(“java.lang.reflect.ReflectPermission” "suppressAccessChecks") 访问:允许访问 ("java.lang.reflect.ReflectPermission" "suppressAccessChecks") 访问: 允许访问(“java.util.PropertyPermission” "java.rmi.server.hostname" "read") 访问:允许访问 ("java.util.PropertyPermission" "sun.rmi.transport.connectionTimeout" “读取”)访问:允许访问(“java.util.PropertyPermission” "sun.rmi.transport.tcp.handshakeTimeout" "read") 访问:访问 允许(“java.util.PropertyPermission” "sun.rmi.transport.tcp.responseTimeout" "read") 访问:允许访问 ("java.lang.RuntimePermission" "sun.rmi.runtime.RuntimeUtil.getInstance") 访问:允许访问 ("java.net.SocketPermission" "localhost" "resolve") 访问:访问 允许(“java.util.PropertyPermission” "jdk.net.ephemeralPortRange.low" "read") 访问:允许访问 ("java.lang.RuntimePermission" "loadLibrary.net") 访问:访问 允许(“java.io.FilePermission”“C:\Program Files\Java\jre1.8.0_45\bin\net.dll" "read") 访问:允许访问 ("java.util.PropertyPermission" "jdk.net.ephemeralPortRange.high" “读取”)访问:访问被拒绝(“java.net.SocketPermission” “127.0.0.1:1099”“连接,解决”)java.lang.Exception:堆栈跟踪 在 java.lang.Thread.dumpStack(未知来源) 在 java.security.AccessControlContext.checkPermission(未知来源) 在 java.security.AccessController.checkPermission(未知来源) 在 java.lang.SecurityManager.checkPermission(未知来源) 在 java.lang.SecurityManager.checkConnect(未知来源) 在 java.net.Socket.connect(未知来源) 在 java.net.Socket.connect(未知来源) 在 java.net.Socket.(未知来源) 在 java.net.Socket.(未知来源) 在 sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(未知 资源) 在 sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(未知 资源) 在 sun.rmi.transport.tcp.TCPEndpoint.newSocket(未知来源) 在 sun.rmi.transport.tcp.TCPChannel.createConnection(未知来源) 在 sun.rmi.transport.tcp.TCPChannel.newConnection(未知来源) 在 sun.rmi.server.UnicastRef.newCall(未知来源) 在 sun.rmi.registry.RegistryImpl_Stub.rebind(未知来源) 在 java.rmi.Naming.rebind(未知来源) 在 ServerSideImp.main(ServerSideImp.java:63) 访问:允许访问(“java.security.SecurityPermission”“getPolicy”)访问: 允许访问 ("java.io.FilePermission" "C:\Users...\ForumServer\bin" "read") 访问:ProtectionDomain 失败的域 (文件:/C:/Users/.../ForumServer/bin/) sun.misc.Launcher$AppClassLoader@73d16e93 java.security.Permissions@2c7b84de (("java.lang.RuntimePermission" "setSecurityManager") ("java.lang.RuntimePermission" "createSecurityManager") ("java.lang.RuntimePermission" "exitVM") ("java.lang.RuntimePermission" "usePolicy") ("java.lang.RuntimePermission" "stopThread") (“java.util.PropertyPermission”“java.specification.version”“读取”) (“java.util.PropertyPermission”“java.version”“读取”) (“java.util.PropertyPermission”“os.arch”“读取”) (“java.util.PropertyPermission”“java.specification.vendor”“读取”) (“java.util.PropertyPermission”“java.vm.specification.name”“读取”) (“java.util.PropertyPermission”“java.vm.vendor”“读取”) (“java.util.PropertyPermission”“path.separator”“读取”) (“java.util.PropertyPermission”“os.version”“读取”) (“java.util.PropertyPermission”“file.separator”“读取”) (“java.util.PropertyPermission”“line.separator”“读取”) (“java.util.PropertyPermission”“java.vm.specification.vendor”“读取”) (“java.util.PropertyPermission”“java.specification.name”“读取”) (“java.util.PropertyPermission”“java.vendor.url”“读取”) (“java.util.PropertyPermission”“java.vendor”“读取”) (“java.util.PropertyPermission”“java.vm.version”“读取”) (“java.util.PropertyPermission”“java.vm.name”“读取”) ("java.util.PropertyPermission" "java.vm.specification.version" "读取") ("java.util.PropertyPermission" "os.name" "读取") (“java.util.PropertyPermission”“java.class.version”“读取”) ("java.net.SocketPermission" "localhost:0" "listen,resolve") ("java.io.FilePermission" "\C:\Users...\ForumServer\bin-" "读取") )
访问:允许访问(“java.lang.RuntimePermission”“exitVM.1”)
但我真的不明白这里发生了什么, 任何帮助都会很感激。
【问题讨论】:
-
“我在网上寻找答案” - 我想知道那种燃烧的气味是从哪里来的 :-)