jetty入门笔记(从部署到原理)

转载 2015年11月20日 11:22:52

原文地址:http://blog.csdn.net/jiangshanjianke/article/details/7680641

第一章          部署

 

1.1    在Webapps目录部署

WebAppProvider定时扫描$jetty_home/webapps目录自动部署


注意如果同名则webapp会让步与contexts部署方式。

 

1.2    在contexts目录部署

ContextProvider定时扫描$jetty_home/contexts目录中的配置文件自动部署

 

1.3    Jety指定资源发布目录,并使用/根目录访问

 

{jettyhome}/contexts/test.xml更改如下:

 

 

 

第二章          目录介绍

2.1    VERSION.txt

每个版本的变更特性

2.2    etc 配置文件目录

etc/jetty.xml 默认配置文件

etc/jetty-xxx.xml该文件是为了给Jetty增加扩展应用所用的配置文件

etc/webdefault.xml:该文件是Web应用的默认配置文件,用于控制Jetty容器里所有Web应用的通用属性。 

类似于tomcatconfig目录

2.3  contexts用于ContextDeployer方式部署

这个目录将会被ContextDeployer类的实例扫描,受$JETTY_HOME/etc/jetty.xml 配置影响

包含多个独立的描述上下文的xml配置文件,

此文件夹支持热部署,即增删改会实时生效。

contexts目录和webapp目录两种部署方式要避免重复部署》

 

javadoc.xml

test.xml

类似于tomcatconfig/catalina/localhost目录

 

2.4    contexts-available 例子而已

../contexts-available 包含了很多contexts配置的例子,可以copy到contexts目录中用于部署。

move-context.xml :演示了重定向

resourcesxml:演示了静态html和image如何部署

2.5    javadoc    jetty的api说明

2.6    lib  jetty依赖

2.7    logs   日志输出

2.8    overlays

2.9    resources

2.10       webapp  webappprovider方式部署的扫描文件夹

 

第三章          启动

3.1    嵌入式servlet启动



java -cp $JETTY_CLASSPATH  xxx.HelloWorld

 

3.2    自定义启动webapp


3.3    使用xml启动

java -cp $JETTY_CLASSPATHorg.eclipse.jetty.xml.XmlConfiguration etc/jetty.xml

3.4    使用start.jar启动

上面的方法都需要配置类路径比较麻烦。

Java –jar start.jar   //这个命令的行为受到start.config配置文件的控制,此文件在start.jar包中。

 

3.4.1  具体做了什么

你可以通过执行java -jar start.jar --dry-run 来查看start.jar具体执行了什么等效的命令。

 

3.4.2  指定加载的jar包

可以通过OPTIONS参数来指定加载到classpath中的jar包,取代默认值

java -jar start.jarOPTIONS=Server,jmx,ajp,setuid

 

java -jar start.jar –list-options 可以查看所有OPTIONS选项,如果选择多个比如Server,servlet,webapp,jms,websocket则交叉重复的jar包在最终的classpath中只会保留1个

3.4.3  指定加载的xml包

java -jar start.jar OPTIONS=Server,jmx,ajpetc/jetty-jmx.xml etc/jetty.xml etc/jetty-ajp.xml

如果不指定默认是etc/jetty.xml

3.4.4  使用start.ini来配置默认参数

和start.jar在同一目录下,可以配置jvm参数,配置文件,OPTIONS参数等,作为java –jar start。Jar时的默认参数,注意如果让jvm的值生效则必须开放—exec

 

3.4.5  指定端口启动

在jetty.xml中<Set name="port"><SystemPropertyname="jetty.port" default="8080"/></Set>

启动命令:java -Djetty.port=8888 -jar start.jar

3.4.6  关闭服务


第四章          Jetty7架构

Connector :连接器,接受http连接

Handler: 处理程序,服务连接请求并产生响应

ThreadPool:线程池,提供共组哦线程

Server: 服务器,持有connector集合和Handler集合

 

注意:

虽然jetty的request/response都是从标准Servlet API继承的,但是标准API的全部特性只在响应的处理程序被注册的情况下可用。比如request中的session API是无效的除非request被传递给一个sessionHandler。

Jetty中Servlet概念本身是被一个servlet处理程序实现的,如果servlet不是必须的,为了减少serlvet请求响应的开销, 因此,你可以建立一个Jetty服务器,只用连接器和处理程序,而不使用servlet。

 

4.1    模式

 

Jetty组件大多实现LifeCycle接口

Jetty提供了IO 缓冲机制和NIO非阻塞机制

接口都是用抽象类。

 

4.2    连接器

还有AJPConnector没画

 

4.3    Handler

 

HandlerCollection对应顺序使用,HandlerWapper对应嵌套

handler可以嵌套使用也可以依次使用:依次使用时相互独立,不能严格依赖调用顺序

Handler用于处理request,大多数情况下使用传统的servlet即可,但是当你有特殊需求或者禁止使用全部的servletapi时,可以直接使用handler来直接提供动态内容。

 

4.3.1  分为3种

l  协调处理程序 - 处理程序,将请求路由到其他处理(HandlerCollection,ContextHandlerCollection)

l  过滤处理程序 - 处理程序,增强请求,并把它传递给其他处理(HandlerWrapper,ContextHandler中,SessionHandler)

l  生成处理器 - 处理程序产生的内容(ResourceHandler和ServletHandler)

 

 

public void handle(String target, RequestbaseRequest, HttpServletRequest request, HttpServletResponse response)

   throws IOException, ServletException

 

4.4    Servlets

 

ServletHandler 把请求传递个任何配置的过滤器最后传递给url匹配的servlet

4.5    Context

4.6    Web applications

 

第五章          工作原理

 

http://www.ibm.com/developerworks/cn/java/j-lo-jetty/

第六章          Continuations

http://wiki.eclipse.org/Jetty/Feature/Continuations

 

 

第七章          常见问题

7.1    运行时无法编辑保存静态文件

http://wiki.eclipse.org/Jetty/

 

 

第八章          附录

8.1    基于长连接的coment服务器推技术

http://www.ibm.com/developerworks/cn/web/wa-lo-comet/

实现方式:

l   基于 AJAX  的长轮询方式long polling 

l   基于 iframe htmlfile的流方式。

l  基于 Flash XMLSocket (需要flash,防火墙可能阻挡)

l   Html 5websocket

l   封装上面的socket.io框架

l   Pushlet是一个开源的 Comet框架封装ajax-pollingiframe

 

 

限制:

 HTTP 1.1规范中规定,客户端不应该与服务器端建立超过两个的 HTTP连接

http 1.0 规范下服务器在处理完每个 Get/Post请求后会关闭套接口连接

http1.1 规范下服务器会保持这个连接,在处理两个请求的间隔时间里,这个连接处于空闲状态。

 Java 1.4引入了支持异步 IO java.nio包。当连接处于空闲时,为这个连接分配的线程资源会返还到线程池,可以供新的连接使用;

 

 

它不会反馈给你。因为服务器端对每个客户端挂起的长连接做了限制

org.eclipse.jetty.webapp.WebAppContext

org.eclipse.jetty.server.handler.ContextHandler

 

8.2    书籍

http://www.doc88.com/p-671405123636.html

 

8.3    在线api

http://download.eclipse.org/jetty/stable-7/apidocs/

 



Solr6.0与Jetty、Tomcat在Win环境下搭建/部署

摘要: Solr6的新特性包括增强的edismax,对SQL更好的支持——并行SQL、JDBC驱动、更多的SQL语法支持等,并且在Solr6发布以后,Solr5还在持续更新,对于想尝鲜Solr6的用户...
  • jiangchao858
  • jiangchao858
  • 2016年09月11日 21:06
  • 4333

jetty 热部署

xml version="1.0" encoding="utf-8"?> plugin>    groupId>org.mortbay.jettygroupId>     artifactId>...
  • Lenny_CL
  • Lenny_CL
  • 2015年11月16日 10:14
  • 968

jetty项目部署与配置

jetty项目部署与配置 在Webapps目录部署 将项目的war包拷贝到webapps目录下即可,WebAppProvider会定时扫描$jetty_home/webapps目录自动部署。 在...
  • cb2474600377
  • cb2474600377
  • 2016年06月07日 09:27
  • 4835

Jetty学习(二)--jetty部署简单web项目

pom.xml见http://blog.csdn.net/zero__007/article/details/47860629 在/src/main/resources下创建/conf/web.xm...
  • zero__007
  • zero__007
  • 2015年08月22日 18:41
  • 3237

Jetty 9部署web应用

Jetty相关的文章比较少,不过官方文档挺齐全的。做下记录也是好事。 jetty9跟jetty8相比变化还是有一些的,jetty8部署web应用需要将war包部署到${JETTY_HOME}/weba...
  • lee1991723
  • lee1991723
  • 2015年12月04日 15:58
  • 5916

jetty多实例部署

1、windows下   win下部署多个jetty8很简单,首先将jetty8复制多个文件夹,其次按分配的端口号修改[JETTY_HOME]/etc/jetty.xml和jetty-proxy...
  • zzpzheng
  • zzpzheng
  • 2016年05月28日 11:36
  • 1942

Maven插件实现热部署,支持Tomcat和Jetty插件

Maven是一个非常优秀的工具,在Maven出现之前,一个项目如果业务很多,很复杂,整个项目就非常庞大。这会造成如下几个问题: 1、项目后期维护成本大,新加一个需求需要全盘考虑会不会影响其他的业务逻辑...
  • u012285319
  • u012285319
  • 2015年03月31日 12:51
  • 2387

Jetty:部署到Jetty

Web应用的框架 标准Jetty发布版本能部署标准servlet Spec Web应用和Jetty内部ContextHandler部署描述符,或者两者的一个混合。 Web应用是可部署的动态(servl...
  • liuy_98_1001
  • liuy_98_1001
  • 2014年06月06日 13:38
  • 15268

Jetty 学习(一)

正在学习Spring项目开发,里面用到了Embedded Jetty,  由同事负责总结了Jetty的特性及应用,分享如下: Jetty 是一个用Java 实现、开源、基于标准的,并且具有丰...
  • chunzhiyan
  • chunzhiyan
  • 2016年03月17日 13:44
  • 982

Jetty服务器的安装配置详解

Jetty是一个开源的Servlet容器和应用服务器,它极度轻量级、高便携性、功能强大、灵活和扩展性好,而且支持各种技术如SPDY、WebSocket、OSGi、JMX、JNDI和JAAS。Jetty...
  • baochanghong
  • baochanghong
  • 2016年10月08日 17:30
  • 2263
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:jetty入门笔记(从部署到原理)
举报原因:
原因补充:

(最多只允许输入30个字)