將Web項目War包部署到Tomcat服務器基本步驟(完整版)


1. 常識:

 

1.1 War包

War包一般是在進行Web開發時,通常是一個網站Project下的所有源碼的集合,里面包含前台HTML/CSS/JS的代碼,也包含Java的代碼。

當開發人員在自己的開發機器上調試所有代碼並通過后,為了交給測試人員測試和未來進行產品發布,都需要將開發人員的源碼打包成War進行發布。

War包可以放在Tomcat下的webapps或者word目錄下,隨着tomcat服務器的啟動,它可以自動被解壓。

1.2 Tomcat服務器

Tomcat服務器是一個免費的開放源代碼的Web應用服務器,屬於輕量級應用服務器,在中小型系統和並發訪問用戶不是很多的場合下被普遍使用,是開發和調試JSP程序的首選,最新的Servlet和JSP規范總是能在Tomcat中得到體現。

 

2. 配置Java運行環境

2.1 下載並安裝JDK

從官網上下載最新的JDK:http://java.sun.com/javase/downloads/index.jsp ,下載后安裝,選擇想把JDK安裝到的目錄。JRE是包含在JDK中的,所以不需要再另外安裝JRE了。

2.2 設置JDK環境變量

右擊“計算機”,點擊“屬性”,點擊彈出窗口中左側的“高級系統設置”,在彈出的選項卡中選擇“高級->環境變量”。

 

        假設你本地JAVA的JDK安裝的位置為:C:\Program Files\Java\jdk1.7.0_45。

       在這里,新建2個環境變量,編輯1個已有的環境變量。如下:

新建變量名:JAVA_HOME;

變量值:你安裝JDK的安裝目錄,在這里為C:\Program Files\Java\jdk1.7.0_45。

002

 

新建變量名:CLASSPATH

變量值:

.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;%TOMCAT_HOME%\BIN

(注意最前面有個.號)

 

編輯環境變量的路徑:

變量名:Path;

變量值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

(將此處的字符串粘貼到變量值的最前面)

 

2.3 驗證是否JDK環境變量設置成功

點擊開始並輸入CMD,在命令行分別輸入:java; javac; java –version.

如果分別顯示如下信息,說明你的Java環境變量已經配置成功。

輸入Java,顯示:

java

輸入Javac,顯示:

javac

輸入java –version,顯示:

java-version

 

3. 部署Tomcat服務器

 

3.1 下載Tomcat到本地硬盤

從官網上下載Tomcat服務器。官網上下載的文件都是綠色免安裝的。

下載地址為:http://tomcat.apache.org/download-70.cgi

下載后解壓縮,如E:\apache-tomcat-7.0.26。

 

3.2 設置Tomcat環境變量

依然是點開電腦的環境變量對話框。

新建一個環境變量:

變量名:TOMCAT_HOME

變量值:你的TOMCAT解壓后的目錄,如E:\apache-tomcat-7.0.26。

 

3.3 驗證Tomcat環境變量的配置是否成功

運行Tomcat解壓目錄下的 bin/startup.bat,啟動Tomcat服務器。在任何一款瀏覽器的地址欄中輸入http://localhost:8080 ,如果界面顯示如下圖,則說明Tomcat的環境變量配置成功。

tomcat啟動的窗口為:

startup-tomcat

localhost-8080

 

 

4. 部署Web項目的War包到Tomcat服務器

 

4.1 FTP獲取war包和sql腳本

從本地FTP服務器上下載Daily Building出的最新的項目包。解壓后一般由兩個文件組成,database文件夾和projectName.war包。

運行database文件中的xxxxx.sql腳本文件,便可以生成最新的數據庫和表結構。

 

4.2 配置Web項目的虛擬目錄

將projectName.war包,復制到Tomcat的webapp下。這樣當配置好后的訪問路徑便為:http://localhost:8080/projectName/login.jsp

在訪問之前,需要修改tomcat服務器的配置文件,打開:

tomcat解壓目錄\conf\context.xml。將運行該web項目時,需要配置的數據庫連接字符串增加到該xml文件中。增加后的context.xml為:

 

<Context>

<!-- Default set of monitored resources -->

<WatchedResource>WEB-INF/web.xml</WatchedResource>

<!-- Uncomment this to disable session persistence across Tomcat restarts -->

<!--

<Manager pathname="" />

-->

<!-- Uncomment this to enable Comet connection tacking (provides events

on session expiration as well as webapp lifecycle) -->

<!--

<Valve className="org.apache.catalina.valves.CometConnectionManagerValve" />

-->

 

 

(這里填寫本Web項目運行時,需要連接的數據庫配置。)

</Context>

 

4.3 訪問web項目的登錄頁

連接串設置完畢后,便可以基於Tomcat服務器來訪問web項目了。

首先運行Tomcat的bin目錄下的startup.bat,當Tomcat啟動完畢后,

在瀏覽器輸入:localhost:8080/projectName/login.jsp時,如果出現該Web項目的login界面時,則表明war包已成功地部署到tomcat服務器上,並可成功訪問了。

(下面是Tomcat的具體配置方法)

Tomcat數據庫連接池的配置方法總結

數據庫連接是一種關鍵的有限的昂貴的資源,這在多用戶網頁應用程序中體現的尤為突出.對數據庫連接的管理能顯著影響到整個應用程序的伸縮性和健壯性,影響到程序的性能指標,數據庫連接池正是針對這個問題提出的.

數據庫連接池負責分配,管理和釋放數據庫連接,它允許應用程序重復使用一個現有的數據庫連接,而不是再重新建立一個;釋放空閑時間超過最大空閑時間的數據庫連接來避免因為沒有釋放數據庫連接而引起的數據庫連接遺漏,這樣可以明顯提高對數據庫操作的性能.

數據庫連接池在初始化的時將創建一定數量的數據庫連接放到連接池中,這些數據庫連接的數量是由最小數據庫連接數來設定的,無論這些數據庫連接是否被使用,連接池都將一直保證至少擁有這么多的連接數,當應用程序向連接池請求的連接數超過最大連接數量時,這些請求將被加入到等待隊列中.

數據庫連接池的最小連接數和最大連接數的設置要考慮到下列幾個因素:

1.最小連接數是連接池一直保持的數據庫連接,所以如果應用程序對數據庫連接的使用量不大,將會有大量的數據庫連接資源被浪費.

2.最大連接數是連接池申請的最大連接數,如果數據庫連接請求超過次數,后面的數據庫連接請求將被加入到等待對列中,這會影響之后的數據庫操作

如果最小連接數與最大連接數相差太大,那么最先的連接請求將會獲利,之后超過最小連接數量的連接請求等價於建立一個新的數據庫連接,不過,這些小於最小連接數的數據庫連接在使用完不會馬上被釋放,它將被放到連接池中等待重復使用或是空閑超時被釋放.

實例使用的Tomcat版本為6.0

方法一: 在Tomcat的conf/context.xml中配置
在Tomcat\apache-tomcat-6.0.33\conf目錄下的context.xml文件中配置默認值如下:

<?xml version='1.0' encoding='utf-8'?>
<Context>
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>

配置連接池:

<?xml version='1.0' encoding='utf-8'?>

<Context>
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
    <!--配置oracle數據庫的連接池-->
    <Resource name="jdbc/oracleds"
        author="Container"
        type="javax.sql.DataSource"
        maxActive="100"
        maxIdle="30"
        maxWait="10000"
        username="scott"
        password="tiger"
        driverClassName="oracle.jdbc.dirver.OracleDriver"
        url="jdbc:oracle:thin:@127.0.0.1:1521:ora9" />

    <!--配置mysql數據庫的連接池, 
        需要做的額外步驟是將mysql的Java驅動類放到tomcat的lib目錄下        
        maxIdle 連接池中最多可空閑maxIdle個連接 
        minIdle 連接池中最少空閑maxIdle個連接 
        initialSize 初始化連接數目 
        maxWait 連接池中連接用完時,新的請求等待時間,毫秒 
        username 數據庫用戶名
        password 數據庫密碼
        -->
    <Resource name="jdbc/mysqlds" 
        auth="Container" 
        type="javax.sql.DataSource" 
        username="root" 
        password="root" 
        maxIdle="30" 
        maxWait="10000" 
        maxActive="100"
        driverClassName="com.mysql.jdbc.Driver"
        url="jdbc:mysql://127.0.0.1:3306/db_blog" />

</Context>

配置好后需要注意的兩個步驟

1.將對應數據庫的驅動類放到tomcat的lib目錄下

2.重新啟動tomcat服務器,讓配置生效

在web應用程序的web.xml中設置數據源參考,如下:

在<web-app></web-app>節點中加入下面內容

 <resource-ref>

      <description>mysql數據庫連接池</description>
      <!-- 參考數據源名字,同Tomcat中配置的Resource節點中name屬性值"jdbc/mysqlds"一致 -->
      <res-ref-name>jdbc/mysqlds</res-ref-name>
      <!-- 資源類型 -->
      <res-type>javax.sql.DataSource</res-type>
      <res-auth>Container</res-auth>
      <res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>

錯誤解決:

javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial

    at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:645)
    at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288)
    at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:325)
    at javax.naming.InitialContext.lookup(InitialContext.java:392)
    at com.iblog.util.DBPoolUtil.<clinit>(DBPoolUtil.java:34)

解決方案:

上面的異常信息是配置文件中JNDI沒有初始化造成的

如果下面的問題都不存在

1.要去檢查下配置文件中連接數據庫的URL參數是否正確2.以及是否導入了正常的包3.檢查在Tomcat中conf/server.xml文件,檢查是否設置useNaming="false",如果是,去掉

2.那就是通過main方法測試的,這個數據源不支持這樣的測試方法,程序要運行在Tomcat中才能找到相應的數據源.[我在測試時犯這樣的錯導致上面錯誤出現]

<%@ page language="java" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%>     

<%@ page import="java.sql.*" %>     
<%@ page import="javax.naming.*" %>     
<%@ page import="javax.sql.DataSource" %>
<html>     
<head>     
<title>Tomcat6.0 JNDI!</title>    
</head>    
  <body>      
   Tomcat連接池測試,獲取數據源 <br>     
    <%     
        try {      
            //初始化查找命名空間
            Context ctx = new InitialContext();  
            //參數java:/comp/env為固定路徑   
            Context envContext = (Context)ctx.lookup("java:/comp/env"); 
            //參數jdbc/mysqlds為數據源和JNDI綁定的名字
            DataSource ds = (DataSource)envContext.lookup("jdbc/mysqlds"); 
            Connection conn = ds.getConnection();     
            conn.close();     
            out.println("<span style='color:red;'>JNDI測試成功<span>");     
        } catch (NamingException e) {     
            e.printStackTrace();     
        } catch (SQLException e) {     
            e.printStackTrace();     
        }     
    %>     
  </body>     
</html>   

運行效果:

 

方法二:在Tomcat的conf/server.xml中配置

打開tomcat的conf/server.xml文件,找到<GlobalNamingResources></GlobalNamingResources>節點,默認的內容如下

 <GlobalNamingResources>

    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />
</GlobalNamingResources>

在該節點中加入相關的池配置信息,如下

   <GlobalNamingResources>

             <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />

             <!--配置mysql數據庫的連接池, 
                需要做的額外步驟是將mysql的Java驅動類放到tomcat的lib目錄下        
               -->
             <Resource name="jdbc/mysqlds" 
              auth="Container" 
              type="javax.sql.DataSource" 
              username="root" 
              password="root" 
              maxIdle="30" 
              maxWait="10000" 
              maxActive="100"
              driverClassName="com.mysql.jdbc.Driver"
              url="jdbc:mysql://127.0.0.1:3306/db_blog" />
  </GlobalNamingResources>

在tomcat的conf/context.xml文件中的<Context></Context>節點中加入如下內容

<ResourceLink name="jdbc/mysqlds" global="jdbc/mysqlds" type="javax.sql.DataSource"/>

然后在web項目中的WEB-INF目錄下的web.xml中配置

 <resource-ref>

      <description>mysql數據庫連接池</description>
      <!-- 參考數據源名字,同Tomcat中配置的Resource節點中name屬性值"jdbc/mysqlds"一致 -->
      <res-ref-name>jdbc/mysqlds</res-ref-name>
      <!-- 資源類型 -->
      <res-type>javax.sql.DataSource</res-type>
      <res-auth>Container</res-auth>
      <res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>

同樣配置好后,需要重新啟動服務器,讓配置生效.

方法三:在Tomcat的conf/server.xml中配置虛擬目錄時配置 

在配置虛擬目錄時,也就是在配置conf下面的server.xml時,在context標簽內添加池配置.

在說該方法之前,先說一下,如何用tomcat配置虛擬目錄

在tomcat\conf下server.xml中找到

<Host name="localhost"  appBase="webapPS"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
</Host>

在其中添加:

<Context path="/website" docBase="F:/myweb" reloadable="true"></Context>

注意:

docBase要改成你的項目目錄。

path為虛擬路徑,訪問時的路徑,注意:一定要加“/” debug建議設置為0

reloadable設置為true。  

這樣重新啟動tomcat

實例中如下配置

<Context path="/website" docBase="D:/program files/Tomcat/apache-tomcat-6.0.33/webapps/iblog.war" reloadable="true">
</Context>

接下來添加池配置,如下

<!--配置虛擬目錄-->

<Context path="/website" docBase="D:/program files/Tomcat/apache-tomcat-6.0.33/webapps/iblog.war" reloadable="true">
            <Resource name="jdbc/mysqlds" 
            auth="Container" 
            type="javax.sql.DataSource" 
            username="root" 
            password="root" 
            maxIdle="30" 
            maxWait="10000" 
            maxActive="100"
            driverClassName="com.mysql.jdbc.Driver"
            url="jdbc:mysql://127.0.0.1:3306/db_blog"
            />
</Context>

啟動服務器,測試,注意因為我們配置了path值為”/website”,所以訪問的路徑應該為website.如下圖:

 

方法四:在Web項目中的META-INF目錄下新建一個文件context.xml,寫入配置

注意:是META-INF目錄下,不是WEB-INF目錄下

<?xml version='1.0' encoding='utf-8'?>

<Context>
    <Resource name="jdbc/mysqlds" 
        auth="Container" 
        type="javax.sql.DataSource" 
        username="root" 
        password="root" 
        maxIdle="30" 
        maxWait="10000" 
        maxActive="100"
        driverClassName="com.mysql.jdbc.Driver"
        url="jdbc:mysql://127.0.0.1:3306/db_blog"
        logAbandoned="true" />
</Context>

轉載自:https://www.cnblogs.com/qianzf/p/6800459.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM