Eclipse配置tomcat

来源:https://www.cnblogs.com/klsw/archive/2018/01/20/8322089.html
-Advertisement-
Play Games

Tomcat 是什麼 Tomcat 是由 Apache 開發的一個 Servlet 容器,實現了對 Servlet 和 JSP 的支持,並提供了作為Web伺服器的一些特有功能,如Tomcat管理和控制平臺、安全域管理和Tomcat閥等。 由於 Tomcat 本身也內含了一個 HTTP 伺服器,它也可 ...


Tomcat 是什麼

Tomcat 是由 Apache 開發的一個 Servlet 容器,實現了對 Servlet 和 JSP 的支持,並提供了作為Web伺服器的一些特有功能,如Tomcat管理和控制平臺、安全域管理和Tomcat閥等。

由於 Tomcat 本身也內含了一個 HTTP 伺服器,它也可以被視作一個單獨的 Web 伺服器。但是,不能將 Tomcat 和 Apache HTTP 伺服器混淆,Apache HTTP 伺服器是一個用 C 語言實現的 HTTP Web 伺服器;這兩個 HTTP web server 不是捆綁在一起的。Tomcat 包含了一個配置管理工具,也可以通過編輯XML格式的配置文件來進行配置。

Tomcat 重要目錄

  • /bin - Tomcat 腳本存放目錄(如啟動、關閉腳本)。 *.sh 文件用於 Unix 系統; *.bat 文件用於 Windows 系統。
  • /conf - Tomcat 配置文件目錄。
  • /logs - Tomcat 預設日誌目錄。
  • /webapps - webapp 運行的目錄。

web 工程發佈目錄結構

一般 web 項目路徑結構

|-- webapp                         # 站點根目錄
    |-- META-INF                   # META-INF 目錄
    |   `-- MANIFEST.MF            # 配置清單文件
    |-- WEB-INF                    # WEB-INF 目錄
    |   |-- classes                # class文件目錄
    |   |   |-- *.class            # 程式需要的 class 文件
    |   |   `-- *.xml              # 程式需要的 xml 文件
    |   |-- lib                    # 庫文件夾
    |   |   `-- *.jar              # 程式需要的 jar 包
    |   `-- web.xml                # Web應用程式的部署描述文件
    |-- <userdir>                  # 自定義的目錄
    |-- <userfiles>                # 自定義的資源文件

webapp:工程發佈文件夾。其實每個 war 包都可以視為 webapp 的壓縮包。

META-INF:META-INF 目錄用於存放工程自身相關的一些信息,元文件信息,通常由開發工具,環境自動生成。

WEB-INF:Java web應用的安全目錄。所謂安全就是客戶端無法訪問,只有服務端可以訪問的目錄。

/WEB-INF/classes:存放程式所需要的所有 Java class 文件。

/WEB-INF/lib:存放程式所需要的所有 jar 文件。

/WEB-INF/web.xml:web 應用的部署配置文件。它是工程中最重要的配置文件,它描述了 servlet 和組成應用的其它組件,以及應用初始化參數、安全管理約束等。

安裝

前提條件

Tomcat 8.5 要求 JDK 版本為 1.7 以上。

進入 Tomcat 官方下載地址 選擇合適版本下載,並解壓到本地。

Windows

添加環境變數 CATALINA_HOME ,值為 Tomcat 的安裝路徑。

進入安裝目錄下的 bin 目錄,運行 startup.bat 文件,啟動 Tomcat

Linux / Unix

下麵的示例以 8.5.24 版本為例,包含了下載、解壓、啟動操作。

# 下載解壓到本地
wget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-8/v8.5.24/bin/apache-tomcat-8.5.24.tar.gz
tar -zxf apache-tomcat-8.5.24.tar.gz
# 啟動 Tomcat
./apache-tomcat-8.5.24/bin/startup.sh

啟動後,訪問 http://localhost:8080 ,可以看到 Tomcat 安裝成功的測試頁面。

tomcat.png

配置

本節將列舉一些重要、常見的配置項。詳細的 Tomcat8 配置可以參考 Tomcat 8 配置官方參考文檔 。

Server

Server 元素表示整個 Catalina servlet 容器。

因此,它必須是 conf/server.xml 配置文件中的根元素。它的屬性代表了整個 servlet 容器的特性。

屬性表

屬性描述備註
className 這個類必須實現org.apache.catalina.Server介面。 預設 org.apache.catalina.core.StandardServer
address 伺服器等待關機命令的TCP / IP地址。如果沒有指定地址,則使用localhost。  
port 伺服器等待關機命令的TCP / IP埠號。設置為-1以禁用關閉埠。  
shutdown 必須通過TCP / IP連接接收到指定埠號的命令字元串,以關閉Tomcat。  

Service

Service元素表示一個或多個連接器組件的組合,這些組件共用一個用於處理傳入請求的引擎組件。Server 中可以有多個 Service。

屬性表

屬性描述備註
className 這個類必須實現org.apache.catalina.Service介面。 預設 org.apache.catalina.core.StandardService
name 此服務的顯示名稱,如果您使用標準 Catalina 組件,將包含在日誌消息中。與特定伺服器關聯的每個服務的名稱必須是唯一的。  

實例 - conf/server.xml 配置文件示例

<?xml version="1.0" encoding="UTF-8"?>
<Server port="8080" shutdown="SHUTDOWN">
  <Service name="xxx">
  ...
  </Service>
</Server>

Executor

Executor表示可以在Tomcat中的組件之間共用的線程池。

屬性表

屬性描述備註
className 這個類必須實現org.apache.catalina.Executor介面。 預設 org.apache.catalina.core.StandardThreadExecutor
name 線程池名稱。 要求唯一, 供Connector元素的executor屬性使用
namePrefix 線程名稱首碼。  
maxThreads 最大活躍線程數。 預設200
minSpareThreads 最小活躍線程數。 預設25
maxIdleTime 當前活躍線程大於minSpareThreads時,空閑線程關閉的等待最大時間。 預設60000ms
maxQueueSize 線程池滿情況下的請求排隊大小。 預設Integer.MAX_VALUE
<Service name="xxx">
  <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="300" minSpareThreads="25"/>
</Service>

Connector

Connector代表連接組件。Tomcat 支持三種協議:HTTP/1.1、HTTP/2.0、AJP。

屬性表

屬性說明備註
asyncTimeout Servlet3.0規範中的非同步請求超時 預設30s
port 請求連接的TCP Port 設置為0,則會隨機選取一個未占用的埠號
protocol 協議. 一般情況下設置為 HTTP/1.1,這種情況下連接模型會在NIO和APR/native中自動根據配置選擇  
URIEncoding 對URI的編碼方式. 如果設置系統變數org.apache.catalina.STRICT_SERVLET_COMPLIANCE為true,使用 ISO-8859-1編碼;如果未設置此系統變數且未設置此屬性, 使用UTF-8編碼
useBodyEncodingForURI 是否採用指定的contentType而不是URIEncoding來編碼URI中的請求參數  

以下屬性在標準的Connector(NIO, NIO2 和 APR/native)中有效:

屬性說明備註
acceptCount 當最大請求連接maxConnections滿時的最大排隊大小 預設100,註意此屬性和Executor中屬性maxQueueSize的區別.這個指的是請求連接滿時的堆棧大小,Executor的maxQueueSize指的是處理線程滿時的堆棧大小
connectionTimeout 請求連接超時 預設60000ms
executor 指定配置的線程池名稱  
keepAliveTimeout keeAlive超時時間 預設值為connectionTimeout配置值.-1表示不超時
maxConnections 最大連接數 連接滿時後續連接放入最大為acceptCount的隊列中. 對 NIO和NIO2連接,預設值為10000;對 APR/native,預設值為8192
maxThreads 如果指定了Executor, 此屬性忽略;否則為Connector創建的內部線程池最大值 預設200
minSpareThreads 如果指定了Executor, 此屬性忽略;否則為Connector創建線程池的最小活躍線程數 預設10
processorCache 協議處理器緩存Processor對象的大小 -1表示不限制.當不使用servlet3.0的非同步處理情況下: 如果配置Executor,配置為Executor的maxThreads;否則配置為Connnector的maxThreads. 如果使用Serlvet3.0非同步處理, 取maxThreads和maxConnections的最大值

Context

Context元素表示一個Web應用程式,它在特定的虛擬主機中運行。每個Web應用程式都基於Web應用程式存檔(WAR)文件,或者包含相應的解包內容的相應目錄,如Servlet規範中所述。

屬性表

屬性說明備註
altDDName web.xml部署描述符路徑 預設 /WEB-INF/web.xml
docBase Context的Root路徑 和Host的appBase相結合, 可確定web應用的實際目錄
failCtxIfServletStartFails 同Host中的failCtxIfServletStartFails, 只對當前Context有效 預設為false
logEffectiveWebXml 是否日誌列印web.xml內容(web.xml由預設的web.xml和應用中的web.xml組成) 預設為false
path web應用的context path 如果為根路徑,則配置為空字元串(""), 不能不配置
privileged 是否使用Tomcat提供的manager servlet  
reloadable /WEB-INF/classes/ 和/WEB-INF/lib/ 目錄中class文件發生變化是否自動重新載入 預設為false
swallowOutput true情況下, System.out和System.err輸出將被定向到web應用日誌中 預設為false

Engine

Engine元素表示與特定的Catalina服務相關聯的整個請求處理機器。它接收並處理來自一個或多個連接器的所有請求,並將完成的響應返回給連接器,以便最終傳輸回客戶端。

屬性表

屬性描述備註
defaultHost 預設主機名,用於標識將處理指向此伺服器上主機名稱但未在此配置文件中配置的請求的主機。 這個名字必須匹配其中一個嵌套的主機元素的名字屬性。
name 此引擎的邏輯名稱,用於日誌和錯誤消息。 在同一伺服器中使用多個服務元素時,每個引擎必須分配一個唯一的名稱。

Host

Host元素表示一個虛擬主機,它是一個伺服器的網路名稱(如“www.mycompany.com”)與運行Tomcat的特定伺服器的關聯。

屬性表

屬性說明備註
name 名稱 用於日誌輸出
appBase 虛擬主機對應的應用基礎路徑 可以是個絕對路徑, 或${CATALINA_BASE}相對路徑
xmlBase 虛擬主機XML基礎路徑,裡面應該有Context xml配置文件 可以是個絕對路徑, 或${CATALINA_BASE}相對路徑
createDirs 當appBase和xmlBase不存在時,是否創建目錄 預設為true
autoDeploy 是否周期性的檢查appBase和xmlBase並deploy web應用和context描述符 預設為true
deployIgnore 忽略deploy的正則  
deployOnStartup Tomcat啟動時是否自動deploy 預設為true
failCtxIfServletStartFails 配置為true情況下,任何load-on-startup >=0的servlet啟動失敗,則其對應的Contxt也啟動失敗 預設為false

Cluster

由於在實際開發中,我從未用過Tomcat集群配置,所以沒研究。

啟動

部署方式

這種方式要求本地必須安裝 Tomcat 。

將打包好的 war 包放在 Tomcat 安裝目錄下的 webapps 目錄下,然後在 bin 目錄下執行 startup.bat 或 startup.sh ,Tomcat 會自動解壓 webapps 目錄下的 war 包。

成功後,可以訪問 http://localhost:8080/xxx (xxx 是 war 包文件名)。

註意

以上步驟是最簡單的示例。步驟中的 war 包解壓路徑、啟動埠以及一些更多的功能都可以修改配置文件來定製 (主要是 server.xml 或 context.xml 文件)。

嵌入式

API 方式

在 pom.xml 中添加依賴

<dependency>
  <groupId>org.apache.tomcat.embed</groupId>
  <artifactId>tomcat-embed-core</artifactId>
  <version>8.5.24</version>
</dependency>

添加 SimpleEmbedTomcatServer.java 文件,內容如下:

import java.util.Optional;
import org.apache.catalina.startup.Tomcat;

public class SimpleTomcatServer {
    private static final int PORT = 8080;
    private static final String CONTEXT_PATH = "/javatool-server";

    public static void main(String[] args) throws Exception {
        // 設定 profile
        Optional<String> profile = Optional.ofNullable(System.getProperty("spring.profiles.active"));
        System.setProperty("spring.profiles.active", profile.orElse("develop"));

        Tomcat tomcat = new Tomcat();
        tomcat.setPort(PORT);
        tomcat.getHost().setAppBase(".");
        tomcat.addWebapp(CONTEXT_PATH, getAbsolutePath() + "src/main/webapp");
        tomcat.start();
        tomcat.getServer().await();
    }

    private static String getAbsolutePath() {
        String path = null;
        String folderPath = SimpleEmbedTomcatServer.class.getProtectionDomain().getCodeSource().getLocation().getPath()
                .substring(1);
        if (folderPath.indexOf("target") > 0) {
            path = folderPath.substring(0, folderPath.indexOf("target"));
        }
        return path;
    }
}

成功後,可以訪問 http://localhost:8080/javatool-server 。

說明

本示例是使用 org.apache.tomcat.embed 啟動嵌入式 Tomcat 的最簡示例。

這個示例中使用的是 Tomcat 預設的配置,但通常,我們需要對 Tomcat 配置進行一些定製和調優。為了載入配置文件,啟動類就要稍微再複雜一些。這裡不想再貼代碼,有興趣的同學可以參考:

示例項目

使用 maven 插件啟動(不推薦)

不推薦理由:這種方式啟動 maven 雖然最簡單,但是有一個很大的問題是,真的很久很久沒發佈新版本了(最新版本發佈時間:2013-11-11)。且貌似只能找到 Tomcat6 、Tomcat7 插件。

使用方法

在 pom.xml 中引入插件

<plugin>
  <groupId>org.apache.tomcat.maven</groupId>
  <artifactId>tomcat7-maven-plugin</artifactId>
  <version>2.2</version>
  <configuration>
    <port>8080</port>
    <path>/${project.artifactId}</path>
    <uriEncoding>UTF-8</uriEncoding>
  </configuration>
</plugin>

運行 mvn tomcat7:run 命令,啟動 Tomcat。

成功後,可以訪問 http://localhost:8080/xxx (xxx 是 ${project.artifactId} 指定的項目名)。

IDE 插件

常見 Java IDE 一般都有對 Tomcat 的支持。

以 Intellij IDEA 為例,提供了 Tomcat and TomEE Integration 插件(一般預設會安裝)。

使用步驟

  • 點擊 Run/Debug Configurations > New Tomcat Server > local ,打開 Tomcat 配置頁面。
  • 點擊 Confiure... 按鈕,設置 Tomcat 安裝路徑。
  • 點擊 Deployment 標簽頁,設置要啟動的應用。
  • 設置啟動應用的埠、JVM 參數、啟動瀏覽器等。
  • 成功後,可以訪問 http://localhost:8080/(當然,你也可以在 url 中設置上下文名稱)。

tomcat-intellij-run-config.png

說明

個人認為這個插件不如 Eclipse 的 Tomcat 插件好用,Eclipse 的 Tomcat 插件支持對 Tomcat xml 配置文件進行配置。而這裡,你只能自己去 Tomcat 安裝路徑下修改配置文件。

資料

 


鏈接:https://www.imooc.com/article/22641
來源:慕課網
原創於慕課網

 

eclipse環境下如何配置tomcat

  1. 打開Eclipse,單擊“Window”菜單,選擇下方的“Preferences”。 
    這裡寫圖片描述
  2. 單擊“Server”選項,選擇下方的“Runtime Environments”。 
    這裡寫圖片描述
  3. 點擊“Add”添加Tomcat。 
    這裡寫圖片描述
  4. 點擊“Next”,選中自己安裝的Tomcat路徑。 
    這裡寫圖片描述
  5. 點擊“Finish”完成。 
    這裡寫圖片描述

建立一個Web應用

  1. File → New → Dynamic Web Project 
    這裡寫圖片描述
  2. 創建一個Dynamic Web Project 
    這裡寫圖片描述
  3. 點擊“Next”下一步 
    這裡寫圖片描述
  4. 點擊“Next”下一步 
    這裡寫圖片描述
  5. 點擊“Finish”完成 
    這裡寫圖片描述

讓Tomcat伺服器顯示在控制臺上,將Web應用部署到Tomcat中

    1. Window → Show View → Servers 
      這裡寫圖片描述
    2. 點擊鏈接No servers are available. Click ths link to create a new server. ,在彈出的對話框中選擇Tomcat版本 
      這裡寫圖片描述
    3. 點擊“Next”,添加我們的項目 
      這裡寫圖片描述 
      選中項目並點擊Add,或是雙擊都可以添加到右邊
    4. 點擊“Finish”完成 
      這裡寫圖片描述

      返回下方的“Servers”面板,右鍵單擊該面板中的“Tomcat v8.0 Server at localhost”節點,在彈出的快捷菜單中單擊“Start”,即可啟動指定的Web伺服器。如果此時直接啟動訪問http://localhost:8080/TomcatTest ,會發現會報404的錯誤。這是因為我們沒有添加主頁,下麵添加主頁(index.jsp)的內容:

      <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
      <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
      <html>
      <head>
      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
      <title>歡迎頁面</title>
      </head>
      <body>
      歡迎使用eclipse部署Tomcat。
      </body>
      </html>
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11

      註意:web資源一定要在WebRoot目錄下添加。如圖: 
      這裡寫圖片描述 
      此時,再一次來訪問該鏈接:http://localhost:8080/TomcatTest ,效果如下: 
      這裡寫圖片描述


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 註釋;調試;算術運算符;變數的輸入、輸出、命名、運算、類型等等 ...
  • 現在項目基本都是要區分測試開發等等一系列環境的,也因此maven,spring之類的都具有profile這類功能,可以針對不同的環境採用不同的配置.因此日誌也可能根據不同的環境需要不同的配置.恰巧手頭上碰到了這麼一個需求,日誌文件也需要區分環境,便搜索了一下相關的資料,發現logback的確也提供這 ...
  • maven作為一個項目構建工具,在開發的過程中很受歡迎,可以幫助管理項目中的bao依賴問題,另外它的很多功能都極大的減少了開發的難度,下麵來介紹maven的安裝及與eclipse的集成。 maven的官網地址為:http://maven.apache.org/,打開網頁之後,看到最新的版本是3.3. ...
  • #ifndef MYLIST_H #define MYLIST_H #include class Node { public: Node(int v){value = v;next=NULL;} int value; Node * next; }; class List { public: List... ...
  • 其實這是一個偽標題,因為主要的重心不是安裝這個系統,而是怎樣讓它全屏顯示! 自己想在ubuntu下裝個Pycharm玩python,因此需要一個ubuntu系統鏡像,好吧,找路子去下載,但是別下各種來路不明的(可能有損壞!)。 很久沒用過這個虛擬機了,之前都是用的VMwork10,這次為了方便,用了 ...
  • 百度UMeditor富文本編輯器java使用 1.介紹 UMeditor 是一款輕量級的富文本編輯器,比UEditor要小得多,是為滿足廣大門戶網站對於簡單發帖框,或者回覆框需求所定製的線上富文本編輯器 2.下載 官網地址:http://ueditor.baidu.com/website/umedi ...
  • 上面只是做到讀取並寫入另一個文件,並沒有進行排序 下麵是排序的方法 ...
  • 題目描述 某人寫了n封信和n個信封,如果所有的信都裝錯了信封。求所有信都裝錯信封共有多少種不同情況。 輸入輸出格式 輸入格式: 一個信封數n(n<=20) 輸出格式: 一個整數,代表有多少種情況。 輸入輸出樣例 輸入樣例#1: 複製 2 輸出樣例#1: 複製 1 輸入樣例#1: 複製 2 輸出樣例# ...
一周排行
    -Advertisement-
    Play Games
  • 1. 說明 /* Performs operations on System.String instances that contain file or directory path information. These operations are performed in a cross-pla ...
  • 視頻地址:【WebApi+Vue3從0到1搭建《許可權管理系統》系列視頻:搭建JWT系統鑒權-嗶哩嗶哩】 https://b23.tv/R6cOcDO qq群:801913255 一、在appsettings.json中設置鑒權屬性 /*jwt鑒權*/ "JwtSetting": { "Issuer" ...
  • 引言 集成測試可在包含應用支持基礎結構(如資料庫、文件系統和網路)的級別上確保應用組件功能正常。 ASP.NET Core 通過將單元測試框架與測試 Web 主機和記憶體中測試伺服器結合使用來支持集成測試。 簡介 集成測試與單元測試相比,能夠在更廣泛的級別上評估應用的組件,確認多個組件一起工作以生成預 ...
  • 在.NET Emit編程中,我們探討了運算操作指令的重要性和應用。這些指令包括各種數學運算、位操作和比較操作,能夠在動態生成的代碼中實現對數據的處理和操作。通過這些指令,開發人員可以靈活地進行算術運算、邏輯運算和比較操作,從而實現各種複雜的演算法和邏輯......本篇之後,將進入第七部分:實戰項目 ...
  • 前言 多表頭表格是一個常見的業務需求,然而WPF中卻沒有預設實現這個功能,得益於WPF強大的控制項模板設計,我們可以通過修改控制項模板的方式自己實現它。 一、需求分析 下圖為一個典型的統計表格,統計1-12月的數據。 此時我們有一個需求,需要將月份按季度劃分,以便能夠直觀地看到季度統計數據,以下為該需求 ...
  • 如何將 ASP.NET Core MVC 項目的視圖分離到另一個項目 在當下這個年代 SPA 已是主流,人們早已忘記了 MVC 以及 Razor 的故事。但是在某些場景下 SSR 還是有意想不到效果。比如某些靜態頁面,比如追求首屏載入速度的時候。最近在項目中回歸傳統效果還是不錯。 有的時候我們希望將 ...
  • System.AggregateException: 發生一個或多個錯誤。 > Microsoft.WebTools.Shared.Exceptions.WebToolsException: 生成失敗。檢查輸出視窗瞭解更多詳細信息。 內部異常堆棧跟蹤的結尾 > (內部異常 #0) Microsoft ...
  • 引言 在上一章節我們實戰了在Asp.Net Core中的項目實戰,這一章節講解一下如何測試Asp.Net Core的中間件。 TestServer 還記得我們在集成測試中提供的TestServer嗎? TestServer 是由 Microsoft.AspNetCore.TestHost 包提供的。 ...
  • 在發現結果為真的WHEN子句時,CASE表達式的真假值判斷會終止,剩餘的WHEN子句會被忽略: CASE WHEN col_1 IN ('a', 'b') THEN '第一' WHEN col_1 IN ('a') THEN '第二' ELSE '其他' END 註意: 統一各分支返回的數據類型. ...
  • 在C#編程世界中,語法的精妙之處往往體現在那些看似微小卻極具影響力的符號與結構之中。其中,“_ =” 這一組合突然出現還真不知道什麼意思。本文將深入剖析“_ =” 的含義、工作原理及其在實際編程中的廣泛應用,揭示其作為C#語法奇兵的重要角色。 一、下劃線 _:神秘的棄元符號 下劃線 _ 在C#中並非 ...