是否有方便的方法通过网络(而不仅仅是实例数据)传输包括其代码(类)的对象?
不要问我为什么要这样做。这是在一项任务中。我多次询问这是否真的是他们的意思,并没有改写他们的答案,所以我猜他们真的希望我们通过网络传输代码(而不仅仅是现场数据)。说实话,我不知道为什么我们在这个任务中需要一个代理,只需编写一个简单的类就可以进行IMO。赋值说我们应该在服务器上实例化代理并将其传输给客户端(是的,他们谈论java.lang.reflect.Proxy,他们命名这个类)。因为代理没有类文件,所以我无法部署它。我想我必须以某种方式读出生成的代理的字节码,将其传输到客户端然后加载它。这完全没有任何意义,但这似乎是他们希望我们做的事情。我不明白为什么。
答案 0 :(得分:1)
这是Apache River项目的核心价值主张(以前称为Jini由Sun运营)。
您需要在“codebase”http服务器上的jar中远程运行所需的代码,并将代理发布到查找服务器。 River使用代码库URL注释该代理(它是一个序列化实例)。当客户端从查找服务器获取该代理并对其进行实例化时,代码库jar将在沙盒类加载器中使用。创建“智能代理”是很常见的,它会加载一堆代码以在客户端上运行以管理返回源服务的通信,或者您可以使用更简单的代理来进行RMI调用。
River封装的技术既复杂又深刻。