我试图编写一个程序,将一个函数发送到多个节点,这些节点将接收该函数并执行它,回复结果(通过序列化)。我已经搜了一下,但没找到任何帮助。另一种方法是在套接字上发送.class文件并将其加载到节点上,但是如果有人找到更简单的方法我感兴趣
编辑:我正在尝试使用此客户端/服务器创建群集。我希望客户端始终在节点上运行并接受任何类型的工作,而无需重新编译客户端节点代码
解决方案:似乎没有办法不发送.class文件。必须发送它,然后在运行时加载它
答案 0 :(得分:2)
Java与某些(主要是解释型)语言不同,代码就是数据。为了使用java源代码执行您想要的操作,您必须通过线路发送源代码,将其编译为另一端的类文件,然后加载类文件。除了加载类文件之外,没有其他方法可以将新代码放入正在运行的JVM中。
PS:在您的机器上打开一个接受任意代码的端口,然后执行客户发送给您的任何内容就像拥有一家珠宝店,并在您外出时每天都取消锁定和取消员工吃午饭。
P.P.S。:你可以在你的申请中嵌入一名翻译。例如,您可以嵌入JRuby,然后客户端可以向您发送Ruby代码。
答案 1 :(得分:0)
尝试Hadoop Map / Reduce Framework: