jetty

tomcat和jetty的区别

大城市里の小女人 提交于 2019-12-19 00:29:56
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> ===========2017年11月3日08:33:07======================== 相同点 1.tomcat与jetty都是一种servlet引擎,他们都支持标准的servlet规范和javaEE规范 不同点 1.架构比较 jetty相比tomcat更为简单 jetty架构是基于Handler来实现的,主要的扩展功能都可以用Handler来实现,扩展简单 tomcat的框架是基于容器设计的,进行扩展需要了解tomcat的整体设计结构,不易扩展 2.性能比较 jetty和tomcat性能方面差异不大 jetty可以同时处理大量链接而且可以长时间保持链接,适合于javaWeb聊天应用 jetty的架构简单,因此作为服务器,jetty可以按需加载组件,减少不需要的组件,减少了服务器内存开销,从而提高服务器性能 jetty默认采用NIO结束来处理I/o请求上更占优势,在处理静态资源时,性能较高 tomcat适合处理少数非常繁忙的连接,也就是连接生命周期短的话,tomcat的总体性能更高 tomcat默认采用B/o处理I/o请求,在处理静态资源时,性能较差 3.其他比较 jetty的应用更加快捷,修改简单,对新的servlet规范的支持更好 tomcat目前应用比较广泛

jetty 与 tomcat 的基础比较

感情迁移 提交于 2019-12-19 00:29:43
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> Jetty和tomcat的比较 相同点: Tomcat和Jetty都是一种Servlet引擎,他们都支持标准的servlet规范和JavaEE的规范。 不同点: 架构比较 Jetty的架构比Tomcat的更为简单 Jetty的架构是基于Handler来实现的,主要的扩展功能都可以用Handler来实现,扩展简单。 Tomcat的架构是基于容器设计的,进行扩展是需要了解Tomcat的整体设计结构,不易扩展。 性能比较 Jetty和Tomcat性能方面差异不大 Jetty可以同时处理大量连接而且可以长时间保持连接,适合于web聊天应用等等。 Jetty的架构简单,因此作为服务器,Jetty可以按需加载组件,减少不需要的组件,减少了服务器内存开销,从而提高服务器性能。 Jetty默认采用NIO结束在处理I/O请求上更占优势,在处理静态资源时,性能较高 Tomcat适合处理少数非常繁忙的链接,也就是说链接生命周期短的话,Tomcat的总体性能更高。 Tomcat默认采用BIO处理I/O请求,在处理静态资源时,性能较差。 其它比较 Jetty的应用更加快速,修改简单,对新的Servlet规范的支持较好。 Tomcat目前应用比较广泛,对JavaEE和Servlet的支持更加全面,很多特性会直接集成进来。 来源:

Jetty源码学习3-启动服务器

怎甘沉沦 提交于 2019-12-19 00:25:18
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 引言 本文主要介绍下环境准备、启动加载的配置文件的涵义和start.jar的加载原理。 环境准备 1、下载jetty-distribution-8.1.7.v20120910源码包并加入eclipse工程classpath中 2、准备一个war工程 3、拷贝到jetty的webapp目录 4、jetty源码打断点,并在jetty的start.jar目录下执行: java -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8090 -DEOS_DEBUG=true -jar start.jar ,注意端口号。 5、要研究初始化可以在server的doStart断点,研究一次请求过程可以在server的handler断点。 配置文件 1、start.ini 指导jetty启动时需要加载的配置文件与顺序。 #etc/jetty-jmx.xml etc/jetty.xml etc/jetty-annotations.xml # etc/jetty-ssl.xml # etc/jetty-requestlog.xml etc/jetty-deploy.xml #etc/jetty-overlay.xml etc/jetty-webapps.xml etc

Jetty和tomcat的比较

百般思念 提交于 2019-12-19 00:25:05
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 相同点: 1. Tomcat和Jetty都是一种Servlet引擎,他们都支持标准的servlet规范和JavaEE的规范。 不同点: 1. 架构比较 Jetty的架构比Tomcat的更为简单 Jetty的架构是基于Handler来实现的,主要的扩展功能都可以用Handler来实现,扩展简单。 Tomcat的架构是基于容器设计的,进行扩展是需要了解Tomcat的整体设计结构,不易扩展。 2. 性能比较 Jetty和Tomcat性能方面差异不大 Jetty可以同时处理大量连接而且可以长时间保持连接,适合于web聊天应用等等。 Jetty的架构简单,因此作为服务器,Jetty可以按需加载组件,减少不需要的组件,减少了服务器内存开销,从而提高服务器性能。 Jetty默认采用NIO结束在处理I/O请求上更占优势,在处理静态资源时,性能较高 Tomcat适合处理少数非常繁忙的链接,也就是说链接生命周期短的话,Tomcat的总体性能更高。 Tomcat默认采用BIO处理I/O请求,在处理静态资源时,性能较差。 3. 其它比较 Jetty的应用更加快速,修改简单,对新的Servlet规范的支持较好。 Tomcat目前应用比较广泛,对JavaEE和Servlet的支持更加全面,很多特性会直接集成进来。 来源: oschina

Jetty 和 tomcat的比较

白昼怎懂夜的黑 提交于 2019-12-19 00:24:53
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> Jetty和tomcat的比较 相同点: 1. Tomcat和Jetty都是一种Servlet引擎,他们都支持标准的servlet规范和JavaEE的规范。 不同点: 1. 架构比较 Jetty的架构比Tomcat的更为简单 Jetty的架构是基于Handler来实现的,主要的扩展功能都可以用Handler来实现,扩展简单。 Tomcat的架构是基于容器设计的,进行扩展是需要了解Tomcat的整体设计结构,不易扩展。 2. 性能比较 Jetty和Tomcat性能方面差异不大 Jetty可以同时处理大量连接而且可以长时间保持连接,适合于web聊天应用等等。 Jetty的架构简单,因此作为服务器,Jetty可以按需加载组件,减少不需要的组件,减少了服务器内存开销,从而提高服务器性能。 Jetty默认采用NIO结束在处理I/O请求上更占优势,在处理静态资源时,性能较高 Tomcat适合处理少数非常繁忙的链接,也就是说链接生命周期短的话,Tomcat的总体性能更高。 Tomcat默认采用BIO处理I/O请求,在处理静态资源时,性能较差。 3. 其它比较 Jetty的应用更加快速,修改简单,对新的Servlet规范的支持较好。 Tomcat目前应用比较广泛,对JavaEE和Servlet的支持更加全面

Jetty源码学习2-应用服务器架构

半世苍凉 提交于 2019-12-19 00:05:03
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 引言 该文主要参考了 玄霄 的分享,感觉他分享的比较细。 应用服务器目录结构 由于需要用到jetty的websocket开发,因此选用的版本是8.1.7,从上图可以看到,主要有下面几个主要目录: 1、bin目录 启动脚本的目录,也包括了start.jar,主要是用来起引导作用的,引导资源加载和服务的启动。 2、etc目录 配置文件的目录,也包括了start.ini,这份配置文件是用来指导start.jar的加载顺序和加载模块的,这个后面会有详解。 3、lib目录 库文件目录,如果需要调试jetty的话,可以下载源码加到eclipse中,客户端远程调试即可,命令: java -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8090 -DEOS_DEBUG=true -jar start.jar 4、webapps目录 应用部署目录 应用服务器启动流程 1、【流程图】 2、【start.jar】 可以看到,最后将server启动起来了,而jetty最核心的即server类,学习jetty的同学不防直接从server类的doStart()或者handle(...)入手。 3、【server.start 】

jetty http解析 session存储

强颜欢笑 提交于 2019-12-18 23:51:00
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> jetty接受到链接请求,首先要解析请求;jetty中定义了一个HttpParser类来解析http。类中的部分定义如下 // States public static final int STATE_START=-14; public static final int STATE_FIELD0=-13; public static final int STATE_SPACE1=-12; public static final int STATE_STATUS=-11; public static final int STATE_URI=-10; public static final int STATE_SPACE2=-9; public static final int STATE_END0=-8; public static final int STATE_END1=-7; public static final int STATE_FIELD2=-6; public static final int STATE_HEADER=-5; public static final int STATE_HEADER_NAME=-4; public static final int STATE_HEADER_IN

Jetty源码学习4-基本架构与工作原理

孤者浪人 提交于 2019-12-18 23:43:54
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 引言 Jetty相较于Tomcat更加轻便,虽然架构更加简单,但是看起来可并不轻松。Spring是设计初衷是用来管理应用中的实例Bean,因而是基于Bean的架构;Jetty则更倾向于流程和组件的管理,采用了基于handler的架构。handler的嵌套和链式结构,LifeCycle和doStart、doHandler模式无不印证了这点。 本文主要从基本架构、LifeCycle结构、Handler体系结构、Jetty启动过程、接受并处理请求的流程和与Tomcat的比较来简要介绍下Jetty,细节部分后面的博文会有分析。 Jetty的基本架构 前面的博文谈及应用服务期的架构已经说过了几个基本模块的概念,connection、Threadpool等~拷贝了 许令波 画的图(文中关于基本架构的描述挺详细的,参考了其目录结构哈~不过对于有些知识点有自己的看法,因此总结该文): 该博文中谈到“ Jetty 中还有一些可有可无的组件,我们可以在它上做扩展。如 JMX,我们可以定义一些 Mbean 把它加到 Server 中,当 Server 启动的时候,这些 Bean 就会一起工作。 ”我的理解是,Jetty中的JMX是提供给server的Container,使得注册到server的Handler同时注册到JMX上

Jetty接受请求过程

元气小坏坏 提交于 2019-12-18 23:14:52
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> Jetty的请求入口 ServerConnector.java 的 accepted 方法( ServerSocketChannel # accept 后的处理逻辑)。 Jetty的请求流程 一个请求的流程: 1. Acceptor 监听连接请求,当有连接请求到达时就接受连接,一个连接对应一个 Channel,Acceptor 将 Channel 交给 ManagedSelector 来处理。 2. ManagedSelector 把 Channel 注册到 Selector 上,并创建一个 EndPoint 和 Connection 跟这个 Channel 绑定,接着就不断地检测 I/O 事件。 3.I/O 事件到了就调用 EndPoint 的方法拿到一个 Runnable,并扔给线程池执行。 4.线程池中调度某个线程执行 Runnable。 5.Runnable 执行时,调用回调函数,这个回调函数是 Connection 注册到 EndPoint 中的。 6.回调函数内部实现,其实就是调用 EndPoint 的接口方法来读数据。 7. Connection 解析读到的数据,生成请求对象并交给 Handler 组件去处理。 SelectorManager Jetty 的 Selector 由

JSESSIONID collision between two servers on same ip but different ports

自闭症网瘾萝莉.ら 提交于 2019-12-18 15:34:02
问题 I've got a situation where I have two different webapps running on a single server, using different ports. They're both running Java's Jetty servlet container, so they both use a cookie parameter named JSESSIONID to track the session id. These two webapps are fighting over the session id. Open a Firefox tab, and go to WebApp1 WebApp1's HTTP response has a set-cookie header with JSESSIONID=1 Firefox now has a Cookie header with JSESSIONID=1 in all it's HTTP requests to WebApp1 Open a second