Eclipse配置tomcat

Tomcat 是什麼

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

因爲 Tomcat 自己也內含了一個 HTTP 服務器,它也能夠被視做一個單獨的 Web 服務器。可是,不能將 Tomcat 和 Apache HTTP 服務器混淆,Apache HTTP 服務器是一個用 C 語言實現的 HTTP Web 服務器;這兩個 HTTP web server 不是捆綁在一塊兒的。Tomcat 包含了一個配置管理工具,也能夠經過編輯XML格式的配置文件來進行配置。java

Tomcat 重要目錄

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

web 工程發佈目錄結構

通常 web 項目路徑結構git

|-- 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 的壓縮包。github

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

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

/WEB-INF/classes:存放程序所須要的全部 Java class 文件。apache

/WEB-INF/lib:存放程序所須要的全部 jar 文件。瀏覽器

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

安裝

前提條件tomcat

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.一、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 ,效果以下: 
      這裏寫圖片描述

相關文章
相關標籤/搜索