tomcat源碼修改與編譯

1、獲取源碼

從github下載其源碼:https://github.com/apache/tomcat

2、選擇版本

切換到對應版本(直接用相對應的Git tag即可):

git checkout 9.0.79

3、修改源代碼,并且生成補丁

這里我們以修改去掉新版本的ws的檢查為例,編輯文件:/tomcat/java/org/apache/tomcat/websocket/server/UpgradeUtil.java
在這里插入圖片描述
修改為:
在這里插入圖片描述

git diff > my_changes.patch

在這里插入圖片描述

5、如果有其他版本也需要修改,則可以直接使用patch補丁:

生成patch文件的目的是方便其他版本更改,不用再編輯代碼,直接用補丁修改即可:

git apply my_changes.patch

6、編譯

Tomcat的構建工具是Apache Ant,進入源碼目錄,運行構建命令

  ant

打包完成后輸出在這里
在這里插入圖片描述

附:Apache ant安裝

在 https://ant.apache.org 下載Ant的最新版本。
配置環境變量,在Linux/macOS中,在shell的配置文件(如.bashrc或.zshrc)中添加以下行:

export ANT_HOME=[/對應路徑]
export PATH=$ANT_HOME/bin:$PATH

驗證是否安裝成功

ant -version

看到Ant的版本信息,則表示安裝成功。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/42304.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/42304.shtml
英文地址,請注明出處:http://en.pswp.cn/news/42304.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

129.【Spring 注解 IOC】

Spring 注解 (一)、組件注冊1. Configuration 與 Bean 容器注冊組件(1).無注解注入方式(2).注解注入方式 2. ComponentScan 自動掃描組件和自動掃描規則(1).無注解掃描方式(2).注解掃描注入方式(3).指定掃描或不掃描的包 (過濾) 3. 自定義TypeFilter指定過濾規則 Filter(1).自定…

openCV項目開發實戰--詳細介紹如何改善夜間圖像的照明(附python和C++源碼)

文末附完整的代碼實現下載鏈接 介紹 對于非攝影師來說,在光線不佳的條件下拍出好照片似乎很神奇。完成低光攝影需要技巧、經驗和正確的設備的結合。在弱光下拍攝的圖像缺乏色彩和獨特的邊緣。它們還遭受能見度差和深度未知的困擾。這些缺點使得此類圖像不適合個人使用或圖像處…

QT多屏顯示程序

多屏顯示的原理其實很好理解,就拿橫向擴展來說: 計算機把桌面的 寬度擴展成了 w1(屏幕1的寬度) w2(屏幕2的寬度) 。 當一個窗口的起始橫坐標 > w1,則 他就被顯示在第二個屏幕上了。 drm設備可以多用戶同時打開&am…

Spring MVC 簡介

目錄 1. 什么是MVC2. 什么是SpringMVC 1. 什么是MVC MVC是一種常用的軟件架構模式。可以看作是一種設計模式,也可以看作是一種軟件框架。經典MVC模式中,M是指模型,V是視圖,C則是控制器,使用MVC的目的是將M和V的實現代…

golang中使用chan控制協程并發簡單事例

func main() {processNum : 5ch : make(chan struct{}, processNum)for true {ch <- struct{}{}go func() {defer func() {<-ch}()fmt.Println("我是協程", time.Now().UnixNano())time.Sleep(time.Second * 5)}()} } 可以看到&#xff0c;這里每5s會執行一次帶…

Linux15 消息隊列 線程

目錄 1、進程間通信IPC&#xff1a; 2、多線程 3、向消息隊列中寫入數據 4、從消息隊列中讀取數據 5、多線程&#xff1a; 6、將多線程的數據返回給主…

數據庫索引優化策略與性能提升實踐

文章目錄 什么是數據庫索引&#xff1f;為什么需要數據庫索引優化&#xff1f;數據庫索引優化策略實踐案例&#xff1a;索引優化帶來的性能提升索引優化規則1. 前導模糊查詢不適用索引2. 使用IN優于UNION和OR3. 負向條件查詢不適用索引4. 聯合索引最左前綴原則5. 范圍條件查詢右…

c#實現策略模式

下面是一個使用C#實現策略模式的示例代碼&#xff1a; using System;// 策略接口 public interface IStrategy {void Execute(); }// 具體策略類A public class ConcreteStrategyA : IStrategy {public void Execute(){Console.WriteLine("具體策略A的執行邏輯");} …

【Mysql】MVCC版本機制的多并發

&#x1f307;個人主頁&#xff1a;平凡的小蘇 &#x1f4da;學習格言&#xff1a;命運給你一個低的起點&#xff0c;是想看你精彩的翻盤&#xff0c;而不是讓你自甘墮落&#xff0c;腳下的路雖然難走&#xff0c;但我還能走&#xff0c;比起向陽而生&#xff0c;我更想嘗試逆風…

PostgreSQL空值的判斷

PostgreSQL空值的判斷 空值判斷非空判斷總結 空值判斷 -- 查詢為空的 is null,sql簡寫isnull select * from employees where manager_id isnull;select * from employees where manager_id is null;非空判斷 -- 查詢不為空的 is not null;sql簡寫notnull select * from empl…

Java【數據結構】二分查找

&#x1f31e; 題目&#xff1a; &#x1f30f;在有序數組A中&#xff0c;查找目標值target &#x1f30f;如果找到返回索引 &#x1f30f;如果找不到返回-1 算法描述解釋前提給定一個內含n個元素的有序數組A&#xff0c;滿足A0<A1<A2<<An-1,一個待查值target1設…

mysql 8.0安裝

操作系統&#xff1a;22.04.1-Ubuntu apt 安裝命令 sudo apt install mysql-client-core-8.0 sudo apt install mysql-server-8.0終端輸入 mysql 可以直接免密登錄 如果此時提示需要密碼&#xff0c;則可以進入配置文件&#xff0c;設置免密登錄 sudo vim /etc/mysql/mysq…

【探索Linux】—— 強大的命令行工具 P.5(yum工具、git 命令行提交代碼)

閱讀導航 前言一、軟件包管理器 yum1.yum的概念yum的基本指令使用例子 二、git 命令行提交代碼總結溫馨提示 前言 前面我們講了C語言的基礎知識&#xff0c;也了解了一些數據結構&#xff0c;并且講了有關C的一些知識&#xff0c;也學習了一些Linux的基本操作&#xff0c;也了…

第3章 CPU微架構

3.1 指令集架構 指令集ISA是軟件用來與硬件通信的詞匯集合&#xff0c;定義了軟件和硬件之間的通信協議。Intel x86、ARM v8、RISC-V是當今廣泛使用指令集架構的實例。ISA開發者通常要確保符合規范的軟件或固件能在使用該規范構建的任何處理器上執行。廣泛部署的ISA組織通常還…

20W IP網絡吸頂喇叭 POE供電吸頂喇叭

SV-29852T 20W IP網絡吸頂喇叭產品簡介 產品用途&#xff1a; ◆室內豪華型吸頂喇叭一體化網絡音頻解碼揚聲器&#xff0c;用于廣播分區音頻解碼、聲音還原作用 ◆應用場地如火車站、地鐵、教堂、工廠、倉庫、公園停車場等&#xff1b;室內使用效果均佳。 產品特點&#xff…

vue-router中的一些 API

在Vue.js的vue-router中&#xff0c;一些重要api 1、RouterHistory&#xff1a;這是 vue-router 提供的路由歷史記錄對象。它可以跟蹤當前頁面的路由歷史&#xff0c;并提供一些方法和屬性來管理導航和歷史記錄。在 vue-router 中&#xff0c;有兩種類型的路由歷史記錄對象&…

pytorch_lightning報錯 You requested gpu: [1],But your machine only has: [0]

pytorch_lightning報錯 You requested gpu: [1]&#xff0c;But your machine only has: [0] 問題及分析 報錯圖片如下&#xff1a; 分析 gpu:[1]指代的gpu的標號&#xff0c;如果筆記本中只包含一個GPU&#xff0c;一般序號為[0].所以無法找到程序指定的GPU。 解決方法 …

機器學習之邏輯回歸

import numpy as np import pandas as pd from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from sklearn.linear_model import LogisticRegression # 獲得數據 names[Sample code number,Clump Thickness,Uniformity…

編程語言學習筆記-架構師和工程師的區別,PHP架構師之路

&#x1f3c6;作者簡介&#xff0c;黑夜開發者&#xff0c;全棧領域新星創作者?&#xff0c;CSDN博客專家&#xff0c;阿里云社區專家博主&#xff0c;2023年6月CSDN上海賽道top4。 &#x1f3c6;數年電商行業從業經驗&#xff0c;歷任核心研發工程師&#xff0c;項目技術負責…

Egg.js構建一個stream流式接口服務

經常需要用到 stream 流式接口服務,比如&#xff1a;大文件下載、日志實時輸出等等。本文將介紹如何使用Egg.js構建一個 stream 流式接口服務。 一、準備工作 目錄結構&#xff1a; app//controllerindex.jstest.txttest.shindex.js 控制器test.txt 測試文件&#xff0c;最好…