jetty启动以及嵌入式启动

http://yinny.iteye.com/blog/1926799

首先得下载jetty   http://dist.codehaus.org/jetty/ 

我下的是jetty-8.1.12 

其实Jetty所谓的安装过程也就是将下载的文件解压到指定的目录,然后根据不同的操作系统来配置环境变量而已。 

解压后进入D:\Program Files\jetty-8.1.12    





一、目录结构 
从上图可以看到,主要有下面几个主要目录 

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目录 

应用部署目录,类似tomcat的webapps目录 


二、配置文件 

1、start.ini 
指导jetty启动时需要加载的配置文件与顺序 


这些配置文件的顺序不能错,比如若是将jetty-deploy.xml置于最下面将导致jetty-webapps无法初始化的错误。简单介绍下几个配置的作用: 
1)jmx.xml 

去掉该注释,容器中的某些类便能在运行时受管理;比如:如果工程需要在不重启的情况下重新读取某配置文件,可以通过信号量的方式或者jmx的方式。这因为该功能管理着工程中需要被管理的类,因此置于最上方。 

2)jetty.xml 

这个就不解释了,该配制文件就对应了server类,管理着connection,thread pool,handler等。 

3)deploy.xml 

该配置文件对应于上篇博客描述的deployService,在jetty中就是deployManager,部署管理器,因此如果这玩意位置错了,下面的webapps.xml自然就报错了。 

4)webapps.xml 

war包的部署器,webappcontext便于基于此生产出来的。 

5)contexts.xml 

另一种部署器,主要是读取部署目录下的xml文件,不知道用在哪里,先略过。 

2、jetty.xml 


可以看出默认的io为nio,hanler是server中比较核心的方法,Contexts是一个webappcontext的集合,请求进来的时候Contexts负责将请求分发给具体的app;而DefaultHandler即返回404错误页面,其实从这个handlers就可以看出来,请求会一次经过这个handler,一旦被hanlder即提交退出,直到不被handler走到了DefaultHandler里面返回404的页面。这里面其实自定义handler加载handlers的头部处理一些静态资源的访问,这样就直接绕过了应用webappcontext的访问了,加快了静态资源的处理速度。eg:RerourceHandler. 

3、deploy.xml 


调用addBean方法,Ref  = contexts 即上面server中已经new出来的 ContextHandlerCollection,持有该contexts旨在注册所有由该类生产出来的一个个app(即WebAppContextHandler)。 

4、webapps.xml 






三、启动: 
1、通过cmd命令启动 

启动jetty命令:java -jar start.jar 
start.jar 后面内容是传递给start.jar的参数,多个参数用空格隔开。 

参数内容可以有以下几种: 
--help    查看帮助信息 
--stop    停止服务,下节中会讲到 
--version  查看当前jetty版本信息 
其他:作为Jetty服务配置文件 

我们看到上条命令指定参数内容为etc/jetty.xml,它实际指向一个服务配置文件,该文件是用来设置jetty服务启动的系统配置信息。比如监听端口,发布某个目录下面的web应用,jndi的配置等等,这些将在后续章节详细描述。当然服务配置文件可以是多个,比如: 

java -jar start.jar etc/jetty.xml etc/jetty-plus.xml 

   这条命令就指定了两个服务配置文件,etc/jetty.xml和etc/jetty-plus.xml。 

    在后续的章节中术语“服务配置文件”就是指的这些文件。 
   
    使用浏览器打开地址 http://localhost:8080/ ,你将会看到jetty的默认示例站点。 

如果能访问http://localhost:8080  说明jetty启动成功。。 





2. 停止服务 
    在刚才启动jetty的终端窗口里面按住ctrl-c键即可。 

    不过你可以这样来启动 

java -DSTOP.PORT=8009 -DSTOP.KEY=secret -jar start.jar 
     
    jetty启动后会在本地监听你指定的端口8009,并将在验证下次关闭命令的密码secret。现在再通过命令: 

java -DSTOP.PORT=8009 -DSTOP.KEY=secret -jar start.jar --stop 

    就可以在本机的另外一个终端窗口来停止jetty服务。在linux系统中,你可以先将jetty进程转移到后台执行,然后再通过命令行来停止Jetty服务。 

    哦,看了上面的介绍你或许以为jetty启动和关闭是如此麻烦,一点也不符合Jetty小巧玲珑的气质。其实Jetty为我们准备了各个操作系统中快捷的方式。不过记住不管何种方式最终都是通过start.jar来启动jetty服务的。 


3、嵌入式启动 

jetty安装 

 



创建Jetty 服务: 



Server 是Jetty的核心类,运行此类就可以启动Jetty服务,访问服务地址:http://localhost:8080/ 
虽然服务正常启动,但是在服务中没有加入任何Handle,所以访问的时候会返回404 error. 
如图 

 

创建handler 




Jetty是面向Handler架构的,就像Spring面向bean架构,Ibatis面向statement架构一样。 
将自定义的HelloHandler加入到Server中如下: 




重新执行此类,访问服务地址:http://localhost:8080/,访问效果如下: 





四、start.jar加载原理 
main方法非常简单,就执行了一个方法 

 
parseCommandLine方法主要做了两件事,分别是: 
1、解析命令行参数 




2、定位加载资源并依据配置文件反射调用相应的类
  • 大小: 63.1 KB
  • 大小: 100.5 KB
  • 大小: 34.6 KB
  • 大小: 103.6 KB
  • 大小: 31.6 KB
  • 大小: 48.7 KB
  • 大小: 16.9 KB
  • 大小: 70.3 KB
  • 大小: 12.9 KB
  • 大小: 29.3 KB
  • 大小: 13.5 KB
  • 大小: 24.5 KB
  • 大小: 50.7 KB
  • 大小: 27.5 KB
  • 大小: 29.8 KB
  • 大小: 12.9 KB

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值