我有一个与服务框架耦合的Web应用程序。该框架像任何Java应用程序一样启动,并且在引导序列的最后,它在同一个JVM中启动catalina tomcat。 我使用JVM 7和Tomcat 6.0.39。
我创建了一个新服务,应该从具有“view”,“model”和“controlle”的现有服务中重用。对于webapps部分,我使用struts。
一开始,新服务应该是在一个好的架构中完成的,但是由于时间很短,我想重用现有应用程序中没有很好设计的部分代码。
我需要使用一个类(具有其他依赖类),该类在WEBINF / Classes / com ....中并由现有的webapp使用。
我的第一次尝试是向JAVA类路径添加xxx / webapps / WEBINF / Classes的路径,其中包含所有必需的包。我运行了完整的应用程序,我的新服务还可以。问题是我让Apache Tomcat不高兴告诉它无法加载struts - > ActionForm的。
我做了以下测试:在运行正常的应用程序版本上,我刚刚添加到用于启动JVM的脚本的类路径中xxx / webapps / WEBINF / Classes的路径。我启动了应用程序,我直接遇到了问题。如果我删除对xxx / webapps / WEBINF / Classes的引用,那么一切顺利。
第一个问题:在同一个JVM实例中通过Catalina.start()启动时,catalina继承的JVM启动时使用的类路径是什么?
第二个问题:我觉得如果一个类在JVM类路径中并且存在于xxx / webapps / WEBINF / Classes中,那么apache Tomcat会感到困惑,它说它找不到struts类了。你观察到了吗?任何解决方案?
你有解决我问题的方法吗?
答案 0 :(得分:0)
以下是我的问题的答案:)
一旦你用类路径向Tomcat提供(不要忘记是一个嵌入式启动),那么所有依赖的库都应该以相同的方式结合。不要指望Tomcat使用它的类加载器来查找它们。 另一种可能的方法是配置一个共享的lib路径,但我没有在我的情况下导致工作情况。
亲切的问候,
Vlad VALICA