2011-04-05 72 views
1

初始信息:我有一個時髦的應用程序(我們稱之爲亞軍),它能夠運行任何實現某個接口的(我們稱之爲Runnable的)。我有一個Runnables(groovy腳本)池,在初始階段應該可以看到這個應用程序,哪個應用程序將調用(通過接口並將對象作爲參數傳遞)。Groovy腳本亞軍架構

任務:我需要的是從亞軍加載並調用所有的Runnable的方式。

要求:這是棘手,因爲腳本可能無法遵循一定的封裝結構,可以放在同一臺機器上亞軍但幾乎在任何地方。他們也可以用不同的名字命名(關於強制java類似命名的公開討論:類名==文件名),現在可以跳過(儘管如果有關於它的建議很酷的話)。

NOTES:我想它可能通過具有其中腳本配置一個配置文件(設置絕對路徑),並使用this stuff,要麼澆鑄對象到可運行接口加載它們並觸發我所需要的或invokeMethod(...)。但不知道是否可以輕鬆完成(應該有辦法,因爲看起來太笨拙)。我也想不到一種方法來處理文件命名問題和一個文件問題中的多個類。

P.S .:這麼長的描述可能會導致誤解,所以請對模糊部分進行評論。

回答

0

有一個腳本的絕對路徑寫入配置文件的選項是好的,並被證明是一個工作的解決方案。你必須處理類加載的任何不可見的應用程序類加載器。特別是你將不得不處理基於註解的POJO序列化問題。 Runnable loader的單例是一種很好的做法。