我正在寻找一种在远程服务器上执行“作业”的方法。通常 RMI 会做得很好,但据我所知,这需要在服务器上实际实现逻辑。我的问题是我无法在服务器上预定义作业,因为我希望它们尽可能通用。
所以我想到的是:客户有他想要执行的特定工作的实现。这个实现显然必须遵循一组规则,以便服务器能够使用它。客户端将其打包成某种对象,将其发送到服务器执行,并等待他要求的任何计算的结果。
RMI 可以吗?如果没有,还有其他东西可以让我以这种方式工作吗?
感谢您的时间和洞察力。
您可以使用Java RMI 使用动态代码下载,但您必须设置服务器来保存客户端任务类
据我了解您的问题,服务器不“知道”要提前执行的代码。因此,您可以尝试发送一些运行时可解释的代码,如 groovy、javascript 或 python,并使用服务器端的众多解释器之一。
对于更简单的执行 UEL 和具体的 JUEL 可能值得一看
任何可序列化的对象都可以通过 RMI 传递。您可以将逻辑包装在可序列化的对象中,将其传递给服务器,然后服务器执行它(它可能有一个执行方法,例如服务器调用)。
正如这里的评论中提到的,您从客户端传递到服务器的类需要客户端和服务器都知道。