2012-09-25 93 views
3

我想在應用程序服務器上激活應用程序時更改類。我正在使用JBoss 5和JBoss 7.在運行時更改應用程序的類別?

  • 我們可以在運行時更改類嗎?
  • 否則,我會解除部署和重新部署嗎?
  • 我需要在JBoss中配置什麼?
  • 哪個應用程序服務器支持該功能?
  • 要獲取此功能將需要編寫自定義ClassLoader
+0

如果我沒有錯,你想改變當前的ClassLoader來加載你的類? 我認爲在這種情況下,你不能在飛行中改變它。相反,您可以使用CustomClassLoader加載新的類運行時。 – Mohsin

+0

你應該更清楚你想要達到的目標。取消部署/部署肯定是替換應用程序類的一種方式,但聽起來並不像您想要的那樣。你的約束是什麼? – gnomie

+0

如何在不太繁忙的時間執行此升級。 –

回答

0
  • 我們可以改變類在運行時? 其實,你可以卸載舊的類並加載一個新的類。

  • 否則,我會做解除和重新部署? 你可以做到dinamically,而無需重新部署。但是,您可能已經意識到,現在JBoss和大多數應用程序服務器都支持熱部署,您可能想要什麼: A_Quick_Tour-Hot-deployment_of_services_in_JBoss.html「> https://access.redhat.com/knowledge/docs/en -US/JBoss_Enterprise_Web_Platform/5/html/Getting_Started_Guide/The_JBoss_Server_A_Quick_Tour-Hot-deployment_of_services_in_JBoss.html 然而,請注意,部署與「更改類」的區別很大,遠不止於此,請閱讀文檔或編寫新的問題是否如此

  • 我需要在JBoss中配置什麼? 什麼都沒有,你應該在你的代碼中完成,並且你需要創建一些代碼來從任何地方加載最新的jar文件你想把最新版本。 我f熱部署對您來說已經足夠了,您可以檢查上面鏈接中配置的內容。

  • 哪個應用程序服務器支持該功能? 自定義類加載可以在任何應用程序服務器中完成,這是Java標準版的一項功能,您只能依賴於您的代碼編寫能力。一些應用服務器,如JBoss,已經有一些內置的功能來幫助你完成這項任務。

  • 要獲得此功能將需要編寫自定義ClassLoader? 除非應用程序服務器具有在更改時以消耗模式加載模塊的功能,否則您的需求已足夠,是的,您需要實現自定義類加載器。通過使用類加載器,您可以按照您選擇的方式從任何軟件加載較新版本的類。例如,您可以從網站的數據庫中加載班級的較新版本。

相關問題