是否可以將Java類的.class文件添加到正在運行的應用程序服務器上的ear文件中,而無需重新啓動它。 JVM類加載器如何以這種方式加載它。我的印象是,類加載器在啓動時加載文件,如果要在運行的應用程序服務器中更改類文件,則必須重新啓動服務器。在正在運行的生產環境中添加類文件
3
A
回答
1
EAR是一個帶有一些額外信息的JAR文件,因此您可以使用與J2EE容器相同的方法:創建一個新的類加載器(嘗試URLClassLoader
)併爲其提供加載新類所需的信息。
這適用於新班級;替換現有類是另一回事,因爲這些類的所有實例都包含對原始類型的引用。沒有通用的方法來解決這個問題,但JRebel的人寫了一個類加載器,它也可以做到這一點(有一些限制)。
0
對於熱代碼替換,您可以使用JRebel 僅僅將.class添加到耳朵中是不夠的,因此您需要完整地重建歸檔。
1
如果類尚未加載,您可以簡單地將其提供給類加載器,即將其編譯爲您部署的分解文件夾(例如,WEB-INF/classes)。當您從打包的EAR進行部署時,這不起作用,因爲這些通常在部署時爆炸。
當這個類已經被加載時,你需要一個改變感知類加載器。要麼你的容器爲你做,或者你可以看看JRebel這很好。
相關問題
- 1. 在Rails生產環境中運行Thor
- 2. 在生產環境中運行Tomcat
- 3. 在非生產環境中測試生產配置文件
- 4. 如何在生產環境中運行導軌生成器?
- 5. 軌道 - 正在運行的生產模式在本地=沒有這樣的文件來加載 - 配置/環境
- 6. CRM在線2011集成測試在生產環境中運行
- 7. 在Windows生產環境中運行的Tornado網站
- 8. SQL Server:在生產環境中添加列
- 9. 僅在生產環境中添加驗證錯誤env
- 10. 如何在生產環境中運行nutch
- 11. 如何在生產環境中運行Ruby Thrift服務器?
- 12. Google翻譯腳本未在生產環境中運行env
- 13. 在生產環境中運行Artisan命令 - Laravel 4. *
- 14. 禁用Grunt任務只能在生產環境中運行js?
- 15. 僅在生產環境中運行代碼
- 16. 在生產環境中運行Mule Standalone與Tomcat
- 17. 在生產環境中運行「耙測試」?
- 18. 如何在生產環境中運行角度2
- 19. Symfony2 Process :: start()在生產環境中運行時失敗
- 20. Katta在生產環境
- 21. 生產環境中的加密異常
- 22. 的Ehcache在生產環境中失敗
- 23. 在生產環境中未更新的CSS和JavaScript文件
- 24. 生產環境中的node.js
- 25. 在'生產'上運行rake任務並指定環境?
- 26. Symfony在生產模式下僅運行dev環境
- 27. 您可以使用OpenJDK在生產環境中運行WSO2產品嗎?
- 28. 在Jenkins中讀取文件並向環境變量添加行
- 29. 添加JavaScript文件中的Joomla環境
- 30. 在運行環境中運行批處理文件