我是Tomcat的新手,并且一直在Tomcat7中使用virtualWebAppLoader。它工作正常。但是,当我在tomcat / lib中包含相同的第三方jar文件集并使用通用加载程序,或者将它们放在shared / lib中并使用共享加载程序时,服务不会返回任何数据。 jar文件集在每个加载器中均保持不变,但仅与virtualWebAppLoader一起使用。 catalina.out中的所有部署中的部署日志都是相同的。但是,当我使用XHR打通服务时,会得到以下与部署日志相同的日志:

Sep 11, 2017 10:41:57 AM com.sun.jersey.server.impl.application.WebApplicationImpl _initiate
INFO: Initiating Jersey application, version 'Jersey: 1.16 11/28/2012 02:09 PM'
Sep 11, 2017 10:42:07 AM com.sun.jersey.api.core.servlet.WebAppResourceConfig init
INFO: Scanning for root resource and provider classes in the Web app resource paths:
  /WEB-INF/lib
  /WEB-INF/classes
Sep 11, 2017 10:42:07 AM com.sun.jersey.api.core.ScanningResourceConfig logClasses
INFO: Root resource classes found:
  class com.abc.Class1
  class com.abc.Class2
Sep 11, 2017 10:42:07 AM com.sun.jersey.api.core.ScanningResourceConfig init
INFO: No provider classes found.
Sep 11, 2017 10:42:07 AM com.sun.jersey.server.impl.application.WebApplicationImpl _initiate
INFO: Initiating Jersey application, version 'Jersey: 1.16 11/28/2012 02:09 PM


每次通过XHR命中我都会得到上述日志。我不知道这是由于缺少罐子还是罐子发生冲突。但所有加载程序中的jar集合都相同,并且在VirtualWebAppLoader中运行良好。

最佳答案

我找到了根本原因。我在多个项目中都有一个项目jar的常见依赖项,看起来好像是两次被不同的类加载器加载了。但是我仍然无法弄清楚为什么VirtualWebAppLoader不会发生这种情况。

10-04 13:53