專案從 tomcat7部署到tomcat8
這段時間將一個老專案從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"
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日下午