大家好,又见面了,我是你们的朋友全栈君。
这段时间将一个老项目从tomcat7部署到tomcat8上,期间遇到的典型问题。
接下来我会介绍下整个升级过程和在升级中遇到的问题。
首先要装个jdk8+,因为开发环境用的是eclipse,还要搞个兼容tomcat8的eclipse.
新下的tomcat8里是自带20几个jar的,这是要留着的不能直接拿来tomcat7的lib就用。
因为老项目要依赖的jar都放在了tomcat下没有用maven,所以拿来Tomcat7的lib用Tomcat8的
初始jar覆盖下。因为tomcat的类加载机制,在启动tomcat时会报很多jar找不到或是版本不合适,
如果原来没有这个jar就去下载,如果有只是版本号不同那在jar上改个要求的版本号也是可以的。
前面jar都替换好之后,并且编译没报错就可以进行下一步了,启动tomcat,我在启动tomcat时遇到的第一个问题就是连接
sqlServer的问题,报的是dao注入失败,因为用的是ssh框架迅速查了一遍各种配置,因为连接的是双数据源,mysql是没有问题的,这就让我很纠结了,就查驱动之类的,写了个连接mysql和sqlServer的小程序,跑起来发现都能够连接成功。于是转移目标继续死查配置和注解,并没用。后来看一个tomcat8的源码博客发现tomcat7与tomcat8使用的数据库连接池规范不一样。tomcat7用的是dbcp1而tomcat8用的是dbcp2。dbcp2连接数据库的接口isvalid实现换成了validationQuery(),因此想要在tomcat8中使用jtds就要在Resource中加上validationQuery() = ‘’select 1‘’。然后这个问题解决了。
接下来是structs2的版本问题,因为之前版本太低 ,所以org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter(web.xml里配置的structs2的核心过滤器)2.5的版本
tomcat启动成功后,,登陆页面报500,看jsp发现是jsp规范性的问题,可能我们平常没有注意到,下面代码后面是不应该有分号的!
<%@ page language=”java” contentType=”text/html; charset=UTF-8″ pageEncoding=”UTF-8″
import=”java.io.BufferedReader,java.io.IOException,java.io.InputStreamReader,java.io.LineNumberReader,java.net.InetAddress,java.net.UnknownHostException,java.util.Properties;”%>
但是这一问题在tomcat7里并没有暴露出来。
这就是我在把项目从tomcat7部署到tomcat8上遇到的几个比较典型的问题,其它问题就不一一叙诉了。
2018年3月4日下午
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/161057.html原文链接:https://javaforall.cn