部署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目錄就可以了。
JSP標簽相關
The absolute uri: [http://mytaglib.com] cannot be resolved in either web.xml or the jar files deployed with this application
這個原因是因為taglib編譯指令找不到uri對應的tld文件(標簽庫定義文件),是因為tld文件放錯目錄了,放在WEB-INF下即可訪問。
自定義標簽處理類時,無法繼承SimpleTagSupport類
這個問題是因為Web項目的Apache Tomcat Library沒導入,所以找不到該類。
解決步驟:在Eclipse中,右鍵點擊出問題的Web項目,選擇Build Path--->configure Build Path, 點擊Add Library--->Server Runtime,選擇當前的Tomcat,完成即可。 這時候再看Web項目中,Libraries 已經有Apache Tomcat X.0包了。