我有一个使用eclipse / gradle开发的Web应用程序,其中包含许多组件。每个eclipse子项目中的类都在/ bin下,并且依赖jar被复制到〜/ local_tomcat_dependencies(为了方便我的gradle构建)。在我的例子中,我已经删除了大部分项目和罐子。我将Tomcat 7配置为使用以下ROOT.xml运行它,并且它完美地工作(并且用于开发目的已经多年了,而在生产中它运行在Tomcat 8.5上):
<Context path="/" docBase="/Users/jeffp/myproject/system/web/src/main/webapp/">
<Loader className="org.apache.catalina.loader.VirtualWebappLoader"
virtualClasspath="/Users/jeffp/myproject/system/database/bin;/Users/jeffp/myproject/system/util/bin;/Users/jeffp/myproject/system/main/bin;/Users/jeffp/local_tomcat_dependencies/*.jar"/>
<JarScanner scanAllDirectories="true"/>
在Tomcat 8中执行此操作的方法已更改,并且我无法再使用Tomcat 7,因为Spring 5与Tomcat 7不兼容。因此,我尝试使用PostResources的新配置来加载应用程序。我已经挣扎了几个小时但仍然不能让应用程序运行。我可以看到Tomcat 8.5启动时发生的事情,但它从未完全加载。我认为我缺少的是让它找到WEB-INF / web.xml并启动网络应用程序。我认为应该在下面的示例中使用第一个PostResources来处理。
<Context>
<Resources className="org.apache.catalina.webresources.StandardRoot" cachingAllowed="true" cacheMaxSize="1000000">
<!-- dependency jars... -->
<PostResources className="org.apache.catalina.webresources.DirResourceSet" base="/Users/jeffp/myproject/system/web/src/main/webapp/" webAppMount="/" />
<!-- eclipse bin dirs -->
<PostResources className="org.apache.catalina.webresources.DirResourceSet" base="/Users/jeffp/myproject/system/database/bin" internalPath="/" webAppMount="/WEB-INF/classes" />
<PostResources className="org.apache.catalina.webresources.DirResourceSet" base="/Users/jeffp/myproject/system/util/bin" internalPath="/" webAppMount="/WEB-INF/classes" />
<PostResources className="org.apache.catalina.webresources.DirResourceSet" base="/Users/jeffp/myproject/system/main/bin" internalPath="/" webAppMount="/WEB-INF/classes" />
<!-- dependency jars (examples... there are a lot) -->
<PostResources className="org.apache.catalina.webresources.JarResourceSet" base="/Users/jeffp/ww_local_tomcat_dependencies/antlr-2.7.7.jar" internalPath="/" webAppMount="/WEB-INF/classes" />
<PostResources className="org.apache.catalina.webresources.JarResourceSet" base="/Users/jeffp/ww_local_tomcat_dependencies/asm-5.0.4.jar" internalPath="/" webAppMount="/WEB-INF/classes" />
<PostResources className="org.apache.catalina.webresources.JarResourceSet" base="/Users/jeffp/ww_local_tomcat_dependencies/spring-beans-5.0.4.RELEASE.jar" internalPath="/" webAppMount="/WEB-INF/classes" />
<PostResources className="org.apache.catalina.webresources.JarResourceSet" base="/Users/jeffp/ww_local_tomcat_dependencies/spring-boot-2.0.0.RELEASE.jar" internalPath="/" webAppMount="/WEB-INF/classes" />
<PostResources className="org.apache.catalina.webresources.JarResourceSet" base="/Users/jeffp/ww_local_tomcat_dependencies/spring-boot-autoconfigure-2.0.0.RELEASE.jar" internalPath="/" webAppMount="/WEB-INF/classes" />
<PostResources className="org.apache.catalina.webresources.JarResourceSet" base="/Users/jeffp/ww_local_tomcat_dependencies/spring-boot-starter-2.0.0.RELEASE.jar" internalPath="/" webAppMount="/WEB-INF/classes" />
</Resources>
日志中没有错误消息。最后一行是:
07-Mar-2018 19:24:47.933 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDescriptor Deploying configuration descriptor [/Users/mbp/apache-tomcat-8.5.15/conf/Catalina/myproject/ROOT.xml]
我知道由于缓存大小错误而正在扫描jar(现在没有显示,因为我添加了cacheMaxSize参数)。
我没有正确配置什么?