RMI:使用外部远程对象

时间:2011-02-21 16:52:00

标签: java rmi securitymanager

就在我认为我知道RMI是如何工作的时候,它会回来告诉我我没有。以下情况:

我已经给出了:

界面提供了清晰的3个getter方法来获取有关对象的信息。我只想查找对象调用三种方法并打印出他们的值:

但是,以下实现(http://pastebin.com/d4JS0Wai)不会导致以下异常:

  

线程“main”中的异常java.rmi.UnmarshalException:错误解组返回;嵌套异常是:       java.lang.ClassNotFoundException:文章       at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)       在rmi.ArticleDisplayer.main(ArticleDisplayer.java:21)

     

引起:java.lang.ClassNotFoundException:文章       在java.net.URLClassLoader $ 1.run(未知来源)       at java.security.AccessController.doPrivileged(Native Method)       at java.net.URLClassLoader.findClass(Unknown Source)   ...

另外,我不知道为什么我还需要一个SecurityManager,因为我的机器没有执行代码。代码在运行rmiregistry的机器上执行。无论如何,这是我的政策文件:http://pastebin.com/chGEqceA

2 个答案:

答案 0 :(得分:0)

出现此问题的原因是客户端和源应用程序都应该可以访问相同的 Article类。

您可以使用2个模块(客户端和服务器)使用的公共类进行Jar并使用它(我通常将这些名称称为“commons”)。

答案 1 :(得分:0)

好的,问题的答案是:

实现以及接口都在默认包中。我在自己的包中编写了程序:rmi

我下载的接口也在rmi包中。事实上,rmi.Article!=文章。