2012-10-20 47 views
0

我的牺牲品于Java RMI错误,如在JDK 7发布说明指出:如何在不使用'file:'的情况下创建文件系统的URL?

与rmiregistry中的命令中的一个错误包含在这个版本可能会导致意外的异常被抛出时,一个RMI服务器尝试使用“file:”URL方案绑定包含代码库注释的导出对象。最有可能受影响的RMI服务器是那些仅由与服务器在同一主机上执行的RMI客户端调用的服务器。

RMI将代码库信息注释为远程对象引用的序列化状态的一部分,以帮助RMI客户端在运行时加载与对象关联的所需类和接口。在RMI注册表中查找并由在服务器以外的主机上运行的RMI客户端调用的导出对象通常使用代码库URL方案进行注释,例如“http:”或“ftp:”,这些对象应继续正常工作。

作为解决方法,RMI服务器可以将java.rmi.server.codebase属性设置为使用除“file:”方案之外的代码库URL来导出它们的对象。

(重点煤矿)

我发展我的本地机器上的RMI应用程序,我需要设置的代码库,包括一些库。

StringBuilder codebase = new StringBuilder(); 
codebase.append(" file:/").append(projectPath).append("/bin/lib/rmiio-2.0.0.jar") 
     .append(" file:/").append(projectPath).append("/bin/lib/log4j-1.2.9.jar") 
     .append(" file:/").append(projectPath).append("/bin/lib/commons-logging.jar") 
     .append(" file:/").append(projectPath).append("/bin/lib/commons-logging-api.jar"); 
System.setProperty("java.rmi.server.codebase", codebase.toString()); 

如何在没有'file:/'语法的情况下实现相同?什么是我的情况中的错误有效的解决方法?

+0

我不明白你为什么需要它。文件://方案只能在本地主机内工作,并且在本地主机内,您无论如何都没有任何代码部署问题。只需使用CLASSPATH即可。 – EJP

回答

0


如果存在与该文件的URL方案
的错误(我猜你验证了语法例如 - file:///home/user/myprojects/myjar.jar
我想你没有其他选择比任何解决问题的开放JDK ,或者把这些文件放在apache web服务器(或者tomcat)中,并使用带有“http://”前缀的URI。
这种tomcat或apache的部署非常简单,因为您在这里处理的是静态资源。
从我记忆中,看到here之后,我看不到其他选择,只能提供一系列URI到代码库,就像您一样。
另一个选择是简单地为RMI客户端代码提供这个罐子。

相关问题