Cod*_*JHP 14 java tomcat server
我是Java EE的新手,并尝试使用ServletContextListener,并且侦听器作业是连接到数据库bla bla.当我尝试启动服务器(Tomcat 9)时,它仍然停留在:
"信息:至少有一个JAR被扫描用于尚未包含TLD的TLD.启用此记录器的调试日志记录,以获取已扫描但未找到TLD的完整JAR列表.在扫描期间跳过不需要的JAR可以缩短启动时间和JSP编译时间."
所以我改变了"Logging properties file"中的一些属性,如下所示:
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
handlers = 1catalina.org.apache.juli.AsyncFileHandler, 2localhost.org.apache.juli.AsyncFileHandler, 3manager.org.apache.juli.AsyncFileHandler, 4host-manager.org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler
.handlers = 1catalina.org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler
############################################################
# Handler specific properties.
# Describes specific configuration info for Handlers.
############################################################
1catalina.org.apache.juli.AsyncFileHandler.level = FINE
1catalina.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina.
2localhost.org.apache.juli.AsyncFileHandler.level = FINE
2localhost.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
2localhost.org.apache.juli.AsyncFileHandler.prefix = localhost.
3manager.org.apache.juli.AsyncFileHandler.level = FINE
3manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
3manager.org.apache.juli.AsyncFileHandler.prefix = manager.
4host-manager.org.apache.juli.AsyncFileHandler.level = FINE
4host-manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
4host-manager.org.apache.juli.AsyncFileHandler.prefix = host-manager.
java.util.logging.ConsoleHandler.level = FINE
java.util.logging.ConsoleHandler.formatter = org.apache.juli.OneLineFormatter
############################################################
# Facility specific properties.
# Provides extra control for each logger.
############################################################
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = FINE
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.apache.juli.AsyncFileHandler
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].level = FINE
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].handlers = 3manager.org.apache.juli.AsyncFileHandler
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].level = FINE
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].handlers = 4host-manager.org.apache.juli.AsyncFileHandler
# For example, set the org.apache.catalina.util.LifecycleBase logger to log
# each component that extends LifecycleBase changing state:
#org.apache.catalina.util.LifecycleBase.level = FINE
# To see debug messages in TldLocationsCache, uncomment the following line:
org.apache.jasper.compiler.TldLocationsCache.level = FINE
org.apache.jasper.servlet.TldScanner.level = FINE
# To see debug messages for HTTP/2 handling, uncomment the following line:
#org.apache.coyote.http2.level = FINE
# To see debug messages for WebSocket handling, uncomment the following line:
#org.apache.tomcat.websocket.level = FINE
Run Code Online (Sandbox Code Playgroud)
所有答案均可接受 谢谢大家.
Sve*_*rev 21
这不是tomcat中的错误或任何问题.Tomcat只是告诉您,有些罐子不包含TLD,您可以将它们添加到扫描仪的跳过列表中以提高启动性能.所以你有两个选择:
您可以放心地忽略该提示.然而,如果它让您烦恼,您可以将该特定记录器设置为更高的日志记录级别,从而防止tomcat记录它.只需添加org.apache.jasper.servlet.TldScanner.level = SEVERE
到logging.properties的末尾即可.
启用调试日志记录以使tomcat列出这些jar并将它们添加到跳过列表中.组:
org.apache.jasper.compiler.TldLocationsCache.level = FINE
org.apache.jasper.servlet.TldScanner.level = FINE
Run Code Online (Sandbox Code Playgroud)并将打印的jar名称(不带路径)添加到tomcat.util.scan.StandardJarScanFilter.jarsToSkip=...
tomcat_dir/conf/catalina.properties中
将记录设置为FINE,FINEST或ALL以查找要排除的所有罐子是不必要的.
这是一个脚本,可以找到所有不包含TLD的jar(更改TOMCAT_HOME变量以匹配您的安装)并在表单上输出一个列表
jar1.jar,\
jar2.jar,\
...
Run Code Online (Sandbox Code Playgroud)
可以粘贴到catalina.properties中(省略最后一个',\'):
#!/bin/sh
TOMCAT_HOME=/opt/tomcat
for i in `find $TOMCAT_HOME -follow -name "*jar"`
do
jar tvf $i | grep -i tld > /dev/null
if [ $? -ne 0 ]; then
echo "$(basename $i),\\"
fi
done
Run Code Online (Sandbox Code Playgroud)
但是,如果我被正确通知,tomcat 9中有可能通过更改(在catalina.properties中)排除所有jar:
tomcat.util.scan.StandardJarScanFilter.jarsToSkip=\
Run Code Online (Sandbox Code Playgroud)
至
tomcat.util.scan.StandardJarScanFilter.jarsToSkip=*.jar
Run Code Online (Sandbox Code Playgroud)
(在下面的行中注释掉该列表)然后通过更改以下内容来覆盖包含TLD的罐子的决定:
tomcat.util.scan.StandardJarScanFilter.jarsToScan=\
log4j-web*.jar,log4j-taglib*.jar,log4javascript*.jar,slf4j-taglib*.jar
Run Code Online (Sandbox Code Playgroud)
并添加通过修改上面的脚本获得的列表,以列出包含TLD的jar:
#!/bin/sh
TOMCAT_HOME=/opt/tomcat
for i in `find $TOMCAT_HOME -follow -name "*jar"`
do
jar tvf $i | grep -i tld > /dev/null
if [ $? -eq 0 ]; then
echo "$(basename $i),\\"
fi
done
Run Code Online (Sandbox Code Playgroud)
更改conf\context.xml 文件
<Context>
<!-- only if you do not use jsp tag -->
<JarScanner>
<JarScanFilter defaultPluggabilityScan="false" defaultTldScan="false"/>
</JarScanner>
</Context>
Run Code Online (Sandbox Code Playgroud)
请参阅:https ://tomcat.apache.org/tomcat-9.0-doc/config/jar-scan-filter.html
归档时间: |
|
查看次数: |
57184 次 |
最近记录: |