所以我有一个运行的小型Tomcat Web应用程序,具有以下结构:
编写了webapp&通过蚂蚁部署。目前,我得到了一个很好的Project.war所有课程。
基本上,主servlet是一个调度程序。根据收到的webrequest,它会在新线程中启动作业A,B或C.
我想改进我的应用程序,以便可以在不影响正在运行的进程的情况下重新部署作业A / B / C的类。以下是我对它的概念化:
说实话,我不知道从哪里开始或在哪里看。我想过使用ProcessBuilder并在命令行中执行jar / war,但感觉这是最不安全的事情。
赞赏任何意见。
谢谢!
答案 0 :(得分:1)
我相信您需要一个模块化应用程序,其中有多个插件(在您的情况下为作业),可以在需要时加载或卸载,并在可用时使用。检查this stackoverflow问题,它可以给你一些帮助。
但是为了简单起见,在以前的工作中,我们需要像OSGI这样的行为而不使用OSGI,我们使用serviceLoader构建API并为我们的模块创建一个接口(在你的案例工作中)每个jar都有一个类将实现该接口。一旦需要这个工作,你可以从服务加载器调用它,如果它存在你可以使用它,如果没有抛出一些错误。