1. 程式人生 > >Eclipse部署Web項目時常見的錯誤和解決方案

Eclipse部署Web項目時常見的錯誤和解決方案

timeout 數據庫 light 請求 成功 重啟tomcat 線程 cep username

Tomcat部署Web項目到tomcat

在eclipse中找到Servers項,打開服務器(F3)(建議直接刪除服務器,重新建立再設置比較好)
1、Servers Locations 中選擇Use Tomcat installation
2、Deploy path 改成 webapps
這時候在eclipse上直接運行項目,就會自動部署到tomcat上,通過瀏覽器或者eclipse都可以訪問該項目。

Tomcat控制臺的用戶角色配置

在Tomcat的Mapper App中,默認沒有提供控制臺角色。所以需要自己去添加。

1、找到tomcat目錄,進入conf目錄,打開tomcat-users.xml 增加兩條語句

<role rolename="manager-gui"/>
<user password="secret" roles="manager-gui" username="tomcat"/>
//其中username 和 password請自定義。  

設置後,重啟tomcat服務,登錄localhost:8080,即可通過Mapper app來管理部署的web項目。

解壓版ApacheTomcat無法添加tomcat本地服務的問題。【安裝版可忽略】

不開啟tomcat本地服務,只能在eclipse中運行web項目,若想通過瀏覽器訪問本地tomcat中webapps的項目,就必須開啟tomcat服務。給ApacheTomcat增加一個本地服務,可以讓eclipse和本地tomcat同時使用,方便部署。

註意:eclipse中的服務器端口是默認的,在本地tomcat開啟服務的情況下,需要修改端口號,防止沖突。

tomcat添加服務解決方案。
首先,保證Java運行環境要配置好,記住JAVA_HOME指向JDK,別指向JRE路徑, 不然會出現CATALINA_HOME或Java配置錯誤。
之後,在環境變量中,新建三個系統變量,全部指向tomcat目錄

CATALINA_BASE C:\Program Files\tomcat8
CATALINA_HOME C:\Program Files\tomcat8
TOMCAT_HOME C:\Program Files\tomcat8

這時候再按照常規方式,在控制臺中添加tomcat服務就可以成功了,然後可以去服務列表查看是否添加成功。

運行web項目時,常見異常解決【長期更新】

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No operations allowed after connection closed.

分析,出現這種異常的原因是:

Mysql服務器默認的“wait_timeout”是8小時,也就是說一個connection空閑超過8個小時,Mysql將 自動斷開該connection。這就 是問題的所在,在C3P0 pools中的connections如果空閑超過8小時,mysql將其斷開,而C3P0並不知道 該connection已經失效,如果 這時有Client請求connection,C3P0將該失效的Connection提供給Client,將會造成上面的異常。
a)解決的方法有3種:
增加wait_timeout的時間。
減少Connection pools中connection的lifetime。
測試Connection pools中connection的有效性。
b)具體解決方案:
1、換一下JDBC驅動,JDBC3.1.0-alpha及以前版本會出現此問題,下載新的JDBC驅動
2、使用hibernate配置:
使用hibernate:
<property name=”connection.autoReconnect”>true</property>  <!–這個是最主要的–>
<property name=”connection.autoReconnectForPools”>true</property>
<property name=”connection.is-connection-validation-required”>true</property>
加入以上property,可解決此問題,如果未使用hibernate等持久化管理框架,可在mysql的url中加入
autoReconnect=true,這樣就可以解決。原因很簡單。在對數據庫操作結束後關閉連接是正確的做法,沒什麽大問題。
至於出現:No operations allowed after connection closed。這樣的問題原因只有一個,你這裏和數據庫的連接Connection是一個Static的,程序共享這一個 Connection。所以第一次對數 據庫操作沒問題,當把Connection關閉後,第二次還想操作數據庫時Connection肯定不存在了。
如果是直接在DAO層方法中開啟連接,執行完後關閉連接,獲取的Connection不能是靜態的, 還有用一 個對象獲取的也是會關閉,因 為使用的都是同一個資源。所以要麽單獨開啟事務,執行完後手動關閉。要麽就使用線程池,或者用多個對象獲取。


java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

  tomcat找不到MYSQL JAR包!必須把mysql-connector-java-5.1.7-bin.jar導入到tomcat的lib目錄下面! 在java項目中,只需要引入mysql-connector-java-5.1.7-bin.jar就可以運行java項目。  在web項目中,當Class.forName("om.mysql.jdbc.Driver");時myeclipse是不會去查找字符串,不會去查找驅動的。所以只需要把 mysql-connector-java-5.1.7-bin.jar拷貝到tomcat下lib目錄就可以了。

Eclipse部署Web項目時常見的錯誤和解決方案