RMI代码库设置问题

时间:2013-07-02 19:07:38

标签: java security url rmi code-access-security

因为客户端和服务器都在同一个系统上运行,所以每件事都运行得很好,但是当我在远程m / c上运行其中一个时,我正在使用vmware, 客户端无法找到服务器的存根,服务器无法定位客户端类以进行动态加载..

我确定这是我设置代码库网址的方式的问题,但我应该如何更改它们。

目前,我将它们设为

file:/ E:/ surshikradmin / workspace / rmi-server / bin / for server ..

和客户端的方式相同.. 我应该添加主机名,但如何? 任何帮助都会非常有帮助,因为多年来我一直处理问题并解决问题会使ma项目变得摇滚..

客户端堆栈跟踪如果可以提供帮助!

Computeappengine exceptionerror unmarshalling return; nested exception is: 
java.lang.ClassNotFoundException: Engine.ComputeappEngine_Stub
java.rmi.UnmarshalException: error unmarshalling return; nested exception is: 
java.lang.ClassNotFoundException: Engine.ComputeappEngine_Stub
at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
at Client.computeappprog.main(computeappprog.java:23)
 Caused by: java.lang.ClassNotFoundException: Engine.ComputeappEngine_Stub
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:247)
at sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:432)
at sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:163)
at java.rmi.server.RMIClassLoader$2.loadClass(RMIClassLoader.java:620)
at java.rmi.server.RMIClassLoader.loadClass(RMIClassLoader.java:247)
at sun.rmi.server.MarshalInputStream.resolveClass(MarshalInputStream.java:197)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1574)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1495)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1731)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350)
... 2 more

1 个答案:

答案 0 :(得分:0)

  1. 代码库系统属性在JVM中设置, 的类通过代码库提供 :通常是服务器。其目的是告诉JVM 有哪些类可以找到它们。在那些 JVM上设置它没有任何效果。

  2. 必须将其设置为对对等方有意义的值。因此,导出JVM自己的文件系统上的文件或目录将无法工作,因为对等方无法看到该文件。

  3. 这就是代码库网址通常是http:个网址的原因。你可以使用file: URL来命名共享驱动器,它的共享名称,但如果你在局域网内,我真的不明白为什么你需要使用代码库功能。