【发布时间】:2015-05-25 13:29:41
【问题描述】:
我正在使用 Java 开发一个网络项目,我想将一些可执行代码从节点 A 发送到节点 B,并让节点 B 将执行代码的结果返回给节点 A。
我尝试这样做的方法(我现在知道这不适合我的用例)是定义一个名为 Job 的抽象类,它有一个抽象方法 run()。它看起来像这样:
import java.io.Serializable;
public abstract class Job implements Serializable {
public String id;
public Job(String id) {
this.id = id;
}
public abstract void run();
}
然后我计划从 Job 实例化子类,定义 run 方法并使用内置的 ObjectOutputStream 和 ObjectInputStream 将派生类从节点 A 发送到节点 B,并且只需让节点 B 调用收到作业时的run()方法。
然而,这超出了通过ObjectOutputStream 发送的序列化对象所能完成的工作,因为节点 B 需要从节点 A 发送的类的确切定义 - 因为每个作业都将属于它,所以它不能拥有不同的子类型,并且对 run() 方法有不同的定义。
有没有人知道其他方法可以做到这一点?一种将可执行代码从节点 A 发送到节点 B 并让节点 B 执行代码的方法?
我知道我可能只需要创建 .jars 并通过 OutputStream 发送它们,然后让 Node B 执行它们。但是,如果有什么方法可以让我拥有一个可以扩展和实例化的基本 Job 类来定义不同类型的 Job 并将这些 Job 发送到 Node B?
任何帮助或建议将不胜感激!!提前致谢! :)
【问题讨论】:
标签: java sockets distributed-computing objectoutputstream