我正在尝试以一种允许我将 Quartz 作业动态添加到类路径的方式部署一个动态 Web 项目。这是我的想法。
'如果我从包含完全限定类路径的 XML 文件中读取配置,然后在类中使用 Class.forName() 从配置 XML 创建所述类的实例,那么我应该能够访问放置在 Tomcat 中的动态添加的类TOMCAT_HOME/lib 目录”。
在此更新之前,该应用程序运行良好,但我在战争中包含了这些新的外部化类。但是,我不能再这样做了,因为我:
- 不想每次需要新工作时都重新部署战争。
- 无法关闭服务器以添加新作业,因为有些作业需要连续运行。
但是,当我运行 class.forName() 方法时,我得到了 NoClassDefFoundError。我已经在 catalina.properties 中验证了 Tomcat 中的 lib 目录位于 common.loader 属性中。
我的问题是,如何让我的 WAR 类识别 Tomcat 公共库中 jar 中的类。有任何想法吗?谢谢。
添加:
@BalusC:我实际上已经开发了一个基于 Web 的管理屏幕,它允许用户编辑 XML 配置文件以添加新作业。但是,要添加的不仅仅是另一个作业实例,而是一个全新的作业,需要对这个新作业进行代码定义。我希望将它放入一个 jar 文件中,然后放入 tomcat lib 目录中,以便由 class.forName() 获取。