jetty源码学习-编译jetty源码二三事

grass_草的blog grass_草的blog     2022-08-17     132

关键词:

工作小几个月了,JDK基础和web应用框架学的的差不多了,开始学习Jetty源码,费了小半天才编译成功,把自己拆过的坑记录下来。

编译前的环境:

MAVEN 3.3、Eclips eLuna Service Release 1 (4.4.1) 

下载好MAVEN后,得把Eclipse中的maven配置为下载的MAVEN具体请搜索其他博文参考!

  1. 下载源码
  2. 导入eclipse
  3. 编译源码

 

1.下载源码

1.1 Jetty源码可以方便的在Github的Jetty工程主页上下载,链接

1.2 进入主页后,看了的页面类似如下:

1.3 点击Jetty工程主页图片的1处可以出现下拉弹出菜单,你可以按branch或者tag选择不同版本的Jetty,本文使用的是Jetty 9.3.x,也就是快照版。

1.4 点击Jetty工程主页图片的2处,显示下载源码包的方式,如果你没有git客户端或者不想安装,点击下载zip包的连接进行直接下载。

 

 

2. 导入eclipse

2.1 下载zip包成功后,进行解压,jetty包的根目录下文件一览如下。在此,为后面叙述方便,称该目录为$myJettySourceRoot

该目录(后续称为$myJettySourceRoot)中红框圈中的两个文件值得注意:

README.md是开发者团队为编译源码的开发者提供的一些提示的内容,但是别当真!完全按他的做是编译不会成功的!!!

porm.xml是Jetty工程的根porm文件。

2.2 打开Eclipse,选择File->import->Maven->Exesting Maven Projects。选择$myJettySourceRoot目录,我的是C:\Users\Administrator\Downloads\jetty.project-jetty-9.3.x,如下图,选择所有工程。点击“完成”开始导入,然后Maven会开始

下载依赖包,工程可能需要持续3个小时。中途出现的选项一律点“确认”和“resolve later”,可能会出现重启Eclipse的选项,也点“确认”。

3. 编译源码

3.1导入成功后,Eclipse中目录树如下,找到Jetty-Protject工程鼠标右键,选择run as->Maven clean,进行工程清理。

3.2 清理完成后,在选择etty-Protject工程鼠标右键,选择run as->run configuration。在Maven Bulid下新建一个build配置。按下图配置:进行install、但跳过test。(因为有一些测试在本机上难以成功)。点击“run”开始编译,中途会出现失败的场景,处理步骤参考3.3,重复几遍后可编译成功

3.3 编译失败的的处理参考。

在编译中,经常会出现编译失败,查看控制台信息会发现"Could not resolve dependencies for xxx:jar:test"的类似信息,出现这种情况是jetty-project某个子模块依赖了另一个子模块的test包,出现这种情况,先在Eclipse中找到对应xxx的Maven工程,右键run as ->maven install。比如xxx是jetty-plus,就右键jetty-plus工程,run as ->maven install,先安装这个子模块的所有包,然后再执行3.2,重复几次就可以编译成功。完全编译成功如下图:

3.4 在$myJettySourceRoot\jetty-distribution\target\distribution目录(我的目录是C:\Users\Administrator\Downloads\jetty.project-jetty-9.3.x\jetty-distribution\target\distribution)下可以查到编译成功后的文件。

3.5 打开cmd,cd到该目录下,输入java -jar start.jar可以启动Jetty。

 

首发于博客园,原文转载请注明出于grass_草

 

 

 

jetty-lifecycle源码分析

1.描述基于Jetty-9.4.8.v20171121。LifeCycle主要管理Jetty里面通用组件的生命周期,比如组件启动中、启动、运行中、停止中、停止等,实现该接口就可以定义一套生命周期。其中通用组件比如Server,Connector,Handler等,Jetty把很多对象... 查看详情

jetty无法debug追踪源码

转http://blog.csdn.net/odeviloo/article/details/51025387  在使用jetty测试我的项目的时候遇到如下的情况 这是由于没有源码造成的  指定workspace项目右键DebugAs->DebugConfigurations  顶1踩 查看详情

jetty.xml配置文件结合源码解析

作者:鹿丸不会多项式 出处:http://www.cnblogs.com/hechao123  转载请先与我联系。我们知道jetty有一种启动方式是在jetty的根目录中运行命令行:java-jarstart.jar,这个命令会调用apache的XmlConfiguration工具类作为启动类,这个类... 查看详情

jetty-handler源码分析

1.描述基于Jetty-9.4.8.v20171121。Handler是Jetty服务处理器,用户Server处理HTTP请求。Handler可以做如下处理:(1)完全生成HTTP响应;(2)检查或修改请求然后调用其他Handler,比如HandlerWrapper;(3)传递请求给一个或多个Handlers,比如Ha... 查看详情

jetty-connector源码分析

1.描述基于Jetty-9.4.8.v20171121。Connector接受远程机器的连接和数据,允许应用向远程机器发送数据。1.2类图从类图看出AbstractConnector继承ContainerLifeCycle,所以具有Container和LifeCycle特性。此外有一个ServerConnector,这个是整个Jetty中很重... 查看详情

jetty-container源码分析

1.描述Container提供管理bean的能力。基于Jetty-9.4.8.v20171121。1.1APIpublicinterfaceContainer{//增加一个bean,如果bean是一个Container.Listener则隐含调用addEventListener(Container.Listener)方法//Container.Listener只关心两个事件:(1)增加bean(2 查看详情

长期更新提升表达能力的二三事

个人微博号:小薇子多一多,这篇是个人的学习篇,您有好的学习思路也可以分享给我,相互学习进步更快。这篇说的表达是指口语表达。在口语逻辑表达之前,得先问问我自己听懂别人讲话的能力怎样?不好的话,先去学习怎... 查看详情

环境篇golang环境变量二三事

继续上篇文章的学习,今天来看看其他的环境变量。GOEXETheexecutablefilenamesuffix(".exe"onWindows,""onothersystems).编译后的二进制文件后缀,在Windows平台是".exe",在其他平台是""。GOFLAGS这个变量看起来比较陌... 查看详情

eclipse搭建hadoop开发环境二三事

...Eclipse搭建开发环境        当我们完成了基本的概念学习,我们就应该着手写代码了。毕竟时间才是真理啊!好了,今天我们就来 查看详情

环境篇golang环境变量二三事

...for‘gobuild-compiler=gccgo‘.表示"gobuild-compiler=gccgo",编译时指定的-compiler参数。ARThecommandtousetomanipulatelibraryarchiveswhenbuildingwiththegccgocompiler.Thedefaultis‘ar‘.打包工具,默认"ar"。CCThecommandtousetocompileCcode.编译C语言的工... 查看详情

jfinal启动源码解读

本文对Jfinal的启动源码做解释说明。PS:Jfinal启动容器可基于Tomcat/Jetty等web容器启动,本文基于Jetty的启动方式做启动源码的解读和分析,tomcat类似。入口 JFinalConfig的继承类的Main方法为入口,实例代码继承类为:DemoConfig,Main... 查看详情

spring源码:web容器启动(li)

  web项目中可以集成spring的ApplicationContext进行bean的管理,这样使用起来bean更加便捷,能够利用到很多spring的特性。我们比较常用的web容器有jetty,tomcat,jboss等,以jetty为例,我们看一下web容器是如何初始化和启动spring的context... 查看详情

长期更新提升听明白能力的二三事

个人微博号:小薇子多一多,您有好的学习思路也可以留言分享给我,相互学习进步更快,也希望能和你成为好朋友。想把口语表达清楚之前,得先听明白,所以我想整理一些关于怎么更好的能更听懂别人说的话的一些资料。什... 查看详情

自定义popupwindow二三事

效果图:代码:publicclassViewActivityextendsActivityimplementsView.OnClickListener{PopupWindowpopWindow;LinearLayoutrootView;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){requestWindowFeature(Wind 查看详情

unity游戏开发assetbundle杂记--assetbundle的二三事(代码片段)

...,因此有了这篇博客。  我会在博客中整理出一些自己学习时收集到的一些比较好的AssetBundle学习资料,并且结合现在正在参与开发的商业项目随时写下一些自己的拙见。本篇 查看详情

程序员床上二三事……

下面请欣赏当程序员八年“床”之巨变哈哈哈结局亮了! 查看详情

jeesite表字段太多导致不能自动生成那张表的代码——————jetty之formtoolarge|formtoomanykeys异常

看了Jetty的源码才发现,jetty限制了Form提交数据的大小,该源码类来自jettylib库下的jetty-server-7.6.16.v20140903.jar包下的org.eclipse.jetty.server.Request类,打开该类可以看到以下代码: 解决方法: 二是在web项目中的WEB-INF文件夹下... 查看详情

jetty学习小结

1.什么是jetty?开源HTTP服务器和Servlet引擎,是web应用的容器,同tomcat类似。由于其轻量灵活的特性,很多知名产品也应用了它,如maven、eclipse、hadoop、spark、activeMQ2.为什么使用jetty?异步的Servlet,支持更高的并发量(异步Servlet... 查看详情