【发布时间】:2010-05-06 21:35:16
【问题描述】:
有没有一种方便的方法可以通过网络传输对象包括其代码(类)(不仅仅是实例数据)?
不要问我为什么要这样做。它在一个任务中。我问了好几次这是否真的是他们的意思,他们没有改写他们的答案,所以我猜他们真的希望我们通过网络传输代码(不仅仅是现场数据)。老实说,我不知道为什么我们在这个作业中需要一个代理,只写一个简单的类就可以了。作业说我们应该在服务器上实例化代理并将其传输到客户端(是的,他们谈论的是 java.lang.reflect.Proxy,他们将这个类命名为)。因为代理没有类文件,所以我无法部署它。我想我必须以某种方式读出生成的代理的字节码,将其传输到客户端,然后加载它。这完全没有意义,但这似乎是他们想要我们做的。我不明白为什么。
【问题讨论】:
-
您确定他们不希望您远程调用代码吗?那就是在客户端调用代理实际上是在服务器上执行代码并将结果返回给客户端?
-
Yishai 在这里可能是正确的 - 代理对象通常用于允许通过网络传输请求。我建议阅读 java.lang.reflect.Proxy java 文档,位于:java.sun.com/javase/6/docs/api/java/lang/reflect/Proxy.html
-
我知道 Proxy 类有什么好处。另一堂课的练习是编写一个类似 RMI 的中间件,我真的很喜欢。我编写了自己的序列化框架、网络传输、非常基本的命名、大量使用注释和反射来生成好的代理等。在这个练习中,主要重点是编写一个透明复制的系统,我们必须隐藏这样一个事实:服务器使用代理进行复制。并且分配确实表明我们必须在服务器上实例化代理,然后代理将由客户端使用。
标签: java class proxy networking bytecode