[英]Dynamically loading jars from remote location
是否有針對以下情況的框架或某些解決方案。
我說Tomcat服務器上運行着一個Web應用程序。 啟動我的應用程序時,我想下載一些完全不同的jar。 像外部連結服務器之類的東西。 在這些罐子里,是我所有需要注入春天的業務邏輯。
我為什么要這樣? 我的應用程序安裝在許多不同的位置。 為了在所有安裝中輕松獲得最新版本的代碼,我只想更新1個位置,並且所有應用程序在重新啟動后都會更新。
您的應用程序將需要使用自定義的ClassLoader
來執行此操作。
好消息是您不必自己編寫:您可以使用Java內置的java.net.URLClassLoader
。 壞消息是您必須將其連接到Tomcat,這可能需要一些代碼。
這是未經測試的建議:
WebappClassLoader
的ClassLoader
URLClassLoader
成員,並在構造函數中對其進行初始化(或諸如start()
類的LifecycleListener
事件之一)中 super.whatever
或urlClassLoader.whatever
的順序由您決定:閱讀servlet規范以確定您想做的事情 META-INF/context.xml
文件中定義<Loader>
來安裝自定義ClassLoader
。 如果您需要上述任何方面的幫助,請轉到Tomcat用戶的郵件列表 。
編輯2014-11-04
請注意,我認為使用URLClassLoader
進行此類操作非常脆弱,容易出錯,並且可能是一個壞主意。 相反,請修復您的部署過程,以便更輕松地跨集群更新Web應用程序。 您可以將Tomcat的“農場Web部署程序”用於此類任務,或使用其他解決方案。 但是在網絡上加載類可能會使您的生活復雜化,並在某些情況下導致某些奇怪的不可再現的行為。
通常,這是在部署過程中使用rsync
腳本或類似的腳本將部署工件分發到集群中完成的。
您也許可以配置Tomcat提供的WebappClassLoader以從遠程位置加載。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.