我想在应用程序在应用程序服务器上处于 Activity 状态时更改类。我正在使用 JBoss 5 和 JBoss 7。
- 我们可以在运行时更改类吗?
- 否则,我需要取消部署并重新部署吗?
- 我需要在 JBoss 中配置什么?
- 哪个应用程序服务器支持该功能?
- 要获得此功能需要编写自定义
ClassLoader
吗?
最佳答案
我们可以在运行时更改类吗? 实际上,您可以卸载旧类并加载新类。
否则,我会取消部署并重新部署吗? 您可以动态地完成此操作,无需重新部署。但是,您可能知道 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 文件。 如果热部署对您来说足够了,您可以检查上面的链接中配置的内容。
哪个应用程序服务器支持该功能? 自定义类加载可以在任何应用程序服务器中完成,这是Java标准版的一个功能,您只取决于您的编码能力。一些应用程序服务器(例如 JBoss)已经具有一些内置功能来帮助您完成此任务。
要获得这个功能需要编写自定义的ClassLoader吗? 除非应用程序服务器在您更改时动态加载模块的功能足以满足您的需求,否则您将需要实现自定义类加载器。通过使用类加载器,您可以按照您选择的方式从任何软件加载新版本的类。例如,您可以从数据库或网站加载类的较新版本。
关于java - 在运行时更改应用程序的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12578438/