我正在尝试恢复大约10年的项目。
这是一个用于在Tomcat 6中正常运行的Java Web应用程序。有一小部分模块集群,它们分别使用Java 5和Java 6分别由Ant和Maven构建。
我现在已经使用Java 6将它们全部正确地使用Maven构建,并部署到Tomcat 7,试图针对相同版本的依赖项-只是在尝试升级之前使其运行。
某些JSP页面使用DisplayTag 1.2。如果我的Maven版本包括displaytag
依赖项,则该Webapp无法运行。日志中没有错误。它只是报告404到处。如果我从Maven构建中排除displaytag
,则一切正常,除了需要DisplayTag的JSP页面。
[如果我尝试在Tomcat 6中运行Web应用程序,则会因commons-logging和slf4j之间的不兼容而产生异常。
如果Webapp像这样静默失败,日志中没有错误或异常,我应该怀疑或调查什么?
因此,包括displaytag依赖关系会导致所有jsp的jsp编译均失败,从而导致webapp没有任何视图,因此没有404。至少一个非常合理的事件序列。
根据this,可以在tomcat的localhost_log.xxx
文件中看到任何JSP编译异常。但是,同一线程继续抱怨没有信息或信息不足,这可能意味着您的日志记录配置不正确。
为此,您可能需要设置logging bridge。
由于您正在使用slf4j
,但是其他组件正在使用commons-logging
,因此您正在丢失其他组件的日志信息。为此,您包含commons-logging
,但作为provided,因此不会被其他库引入。
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.1</version>
<scope>provided</scope>
</dependency>
然后包含jcl-over-slf4j
(这就是我们上面承诺的提供commons-logging
的内容)。
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>2.0.0-alpha2-SNAPSHOT</version>
</dependency>
这应该允许使用commons-logging的组件将其日志桥接到slf4j(以及实际的实现,logback或其他方式)。
这里是Jasper其他配置文件的link,如果需要的话。