Groovy脚本运行器架构

时间:2011-04-05 12:42:25

标签: groovy classloader runnable

初步信息:我有一个常规应用程序(让我们称之为 Runner ),它能够运行任何实现某些界面的东西(我们称之为 Runnable )。我有一个 Runnables (groovy脚本)池,这个应用程序应该在初始阶段可见,并且应用程序将调用(通过接口并将对象作为参数传递)。

任务:我需要的是一种从 Runner 加载和调用所有 Runnables 的方法。

要求:这很棘手,因为脚本可能不遵循某些包结构,可以与 Runner 放在同一台机器上,但几乎可以放在任何地方。它们也可以用不同的名称命名(对于强制性的java类似命名的公开讨论:类名==文件名),现在可以跳过(尽管如果有建议那就太酷了!)。

注意:我想通过配置脚本配置文件(提供绝对路径)并使用this stuff加载它们并将对象强制转换为 Runnable 界面并触发我需要的内容或 invokeMethod(...)。但是不知道它是否可以更容易完成(应该有办法,因为它看起来太笨拙了)。我也想不出在一个文件问题中处理文件命名问题和多个类的方法。

:如此长的描述可能会引起误解,所以请评论模糊的部分。

2 个答案:

答案 0 :(得分:0)

我认为您需要了解实现接口的所有类。您可能会对Find Java classes implementing an interface感兴趣。

答案 1 :(得分:0)

有一个配置文件的选项,其中写入脚本的绝对路径是好的,并证明是一个有效的解决方案。您将不得不处理app类加载器中不可见的任何类的加载。特别是你必须处理基于注释的POJO序列化问题。 Singlen of Runnable装载机是一种很好的做法。