我将Tomcat 8.5.32配置为与DCEVM配合使用
JAVA_OPTS="-Xms512m -Dcatalina.home=$CATALINA_HOME -XXaltjvm=dcevm -javaagent:/usr/share/tomcat/lib/hotswap-agent-1.3.0.jar=autoHotswap=true"
在$ CATALINA_HOME / conf / Catalina / localhost / mycontext.xml中指定了要动态重新加载的类,以便Tomcat直接从Eclipse自动重新生成的.class文件中重新加载它们。
<Context docBase="~/workspace/myapp/myapp-web/src/main/webapp">
<Resources>
<PostResources className="org.apache.catalina.webresources.DirResourceSet"
base="/vagrant/workspace/myapp/myapp-models/target/classes" internalPath="/" webAppMount="/WEB-INF/classes" />
<PostResources className="org.apache.catalina.webresources.DirResourceSet"
base="/vagrant/workspace/myapp/myapp-services/target/classes" internalPath="/" webAppMount="/WEB-INF/classes" />
<PostResources className="org.apache.catalina.webresources.DirResourceSet"
base="/vagrant/workspace/clocial/myapp-web/target/classes" internalPath="/" webAppMount="/WEB-INF/classes" />
<PostResources className="org.apache.catalina.webresources.DirResourceSet"
base="/vagrant/workspace/myapp/myapp-web/target/lib" internalPath="/" webAppMount="/WEB-INF/lib" />
</Resources>
</Context>
这有效,但是由于有一百多个目录,因此Tomcat需要花费两分钟的时间来加载上下文。
通过在conf / logging.properties上设置org.apache.catalina.startup.ContextConfig.level = FINE
,我得到了一条跟踪信息,告诉我们大多数时间可能是花在搜索注释上。
是否可以告诉Tomcat不要在某些目录中查找注释,以便仅扫描实际包含带注释的类的目录?
我一直在阅读source code of ContextConfig,似乎有一些排除规则,但我听不懂。
这是catalina.out的摘录:
12:39:32.992 INFO org.apache.catalina.startup.HostConfig.deployDescriptor Deploying configuration descriptor [/usr/share/tomcat/conf/Catalina/localhost/mycontext.xml]
12:39:33.092 FINE org.apache.catalina.startup.ContextConfig.init ContextConfig: Initializing
12:39:33.093 FINE org.apache.catalina.startup.ContextConfig.processContextConfig Processing context [/clocial] configuration file [file:/usr/share/tomcat/conf/context.xml]
12:39:33.123 FINE org.apache.catalina.startup.ContextConfig.processContextConfig Successfully processed context [/clocial] configuration file [file:/usr/share/tomcat/conf/context.xml]
12:39:33.123 FINE org.apache.catalina.startup.ContextConfig.processContextConfig Processing context [/clocial] configuration file [file:/usr/share/tomcat/conf/Catalina/localhost/mycontext.xml]
12:39:33.140 FINE org.apache.catalina.startup.ContextConfig.processContextConfig Successfully processed context [/clocial] configuration file [file:/usr/share/tomcat/conf/Catalina/localhost/mycontext.xml]
12:39:47.640 FINE org.apache.catalina.startup.ContextConfig.configureStart ContextConfig: Processing START
12:39:47.641 FINE org.apache.catalina.startup.ContextConfig.configureStart Context [/clocial] will parse web.xml and web-fragment.xml files with validation:[false] and namespaceAware:[false]
12:39:58.524 FINE org.apache.catalina.startup.ContextConfig.processAnnotationsWebResource Scanning web application directory for class files with annotations [file:/vagrant/workspace/myapp/myapp-models/target/classes/com/]
12:40:00.594 FINE org.apache.catalina.startup.ContextConfig.processAnnotationsWebResource Scanning web application directory for class files with annotations [file:/vagrant/workspace/myapp/myapp-models/target/classes/com/mypackage/]
12:40:00.768 FINE org.apache.catalina.startup.ContextConfig.processAnnotationsWebResource Scanning web application directory for class files with annotations [file:/vagrant/workspace/myapp/myapp-models/target/classes/com/mypackage/blob/]
12:40:00.867 FINE org.apache.catalina.startup.ContextConfig.processAnnotationsWebResource Scanning web application directory for class files with annotations [file:/vagrant/workspace/myapp/myapp-models/target/classes/com/mypackage/blob/tables/]
12:40:00.968 FINE org.apache.catalina.startup.ContextConfig.processAnnotationsWebResource Scanning web application directory for class files with annotations [file:/vagrant/workspace/myapp/myapp-models/target/classes/com/mypackage/blob/test/]
...
another hundred directories
...
12:41:07.051 FINE org.apache.catalina.startup.ContextConfig.processAnnotationsWebResource Scanning web application directory for class files with annotations [file:/vagrant/workspace/myapp/myapp-web/target/classes/com/mypackage/mymodel/]
12:41:07.104 FINE org.apache.catalina.startup.ContextConfig.processAnnotationsFile Scanning directory for class files with annotations [/usr/share/tomcat/lib]
12:41:07.142 FINE org.apache.catalina.startup.ContextConfig.authenticatorConfig Configured an authenticator for method [NONE]