1. 程式人生 > >專案從 tomcat7部署到tomcat8

專案從 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"

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日下午