Jetty 可以理解为一个嵌入式的Web服务器,由纯Java语言实现
Jetty 优点
1.启动速度快
2.轻量级
Jetty对于普通的HTTP服务(没有servlet)只需要350k的内 存,这使得可以将其用在智能设备中。
3.易嵌入性
它真正出名是因为它是作为一个可以嵌入到其他的Java代码中的servlet容器而设计的。这就是说,开发小组将Jetty作为一组Jar文件提供出来,因此你可以在你自己的代码中将servlet容器实例化成一个对象并且可以操纵这个容器对象。
4.扩展性好
5.可插拔性
开发Jetty时,并没有想着要把它开发成一个全功能的应用server(尽管它是的)。每一项功能都考虑了可插拔性,所以,如果你不需要 他,你就可以不把它加载到内存里,把它从request 处理调用链中去掉。如果你不需要sessons,你可以把session处理器拿掉,这样你就不要浪费资源去来回寻找session cookie了。当你每秒钟都有出来上千个请求时,这些微小的查找动作的开销是非常的大的。
适合应用场景
Jetty更满足公有云的分布式环境的需求,而Tomcat更符合企业级环境。
Jetty与Tomcat比较
1.Jetty更轻量级。这是相对Tomcat而言的。
由于Tomcat除了遵循Java Servlet规范之外,自身还扩展了大量JEE特性以满足企业级应用的需求,所以Tomcat是较重量级的,而且配置较Jetty亦复杂许多。但对于大量普通互联网应用而言,并不需要用到Tomcat其他高级特性,所以在这种情况下,使用Tomcat是很浪费资源的。这种劣势放在分布式环境下,更是明显。换成Jetty,每个应用服务器省下那几兆内存,对于大的分布式环境则是节省大量资源。而且,Jetty的轻量级也使其在处理高并发细粒度请求的场景下显得更快速高效。
2.Jetty更灵活,体现在其可插拔性和可扩展性,更易于开发者对Jetty本身进行二次开发,定制一个适合自身需求的Web Server。
相比之下,重量级的Tomcat原本便支持过多特性,要对其瘦身的成本远大于丰富Jetty的成本。用自己的理解,即增肥容易减肥难。
3.然而,当支持大规模企业级应用时,Jetty也许便需要扩展,在这场景下Tomcat便是更优的。
主要目录结构解析
- bin/ — 启动、停止脚本
- etc/ — 配置文件目录,不同于tomcat的conf
- lib/ — 自身必须加装的包 例如jetty-deploy,jetty-http,jetty-io 等
- license-eplv10-aslv20.html
- logs/ — 日志目录
- notice.html
- README.txt
- resources/ — jetty的资源文件 ,里面是一些log4j的配置
- start.d/
- start.ini
- start.jar – jetty 的启动jar包 s示例:java $JAVA_OPTS -Djetty.port=$app_port -jar start.jar $jetty_etc/jetty.xml
- VERSION.txt
- webapps/ — 包的部署目录
- webapps.demo/
使用demo
1 Jetty下载地址:
http://download.eclipse.org/jetty/,如果提示跳转,就跳转后下载
http://download.eclipse.org/jetty/,如果提示跳转,就跳转后下载
2.下载后解压,在webapps下新建一个文件夹jettytest,在Eclipse中新建一个index.jsp文件(注意body区域随便放点测试字符串类如Hello,World!),将这个index.jsp文件放到jettytest文件夹下。
3.进入Jetty根目录,在地址栏中输入cmd,回车启动cmd控制台,在控制台输入java -jar start.jar运行jetty容器
4.浏览器 http://localhost:8080/jettytest/index.jsp不出意外,应该可以在浏览器看到熟悉的“Hello,World"。