`
Yinny
  • 浏览: 292513 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

jetty启动以及嵌入式启动

阅读更多
首先得下载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
分享到:
评论
2 楼 wodexiang 2016-11-16  
写的什么狗屎
1 楼 繁星水 2016-07-08  
很好,感谢分享与总结,谢谢!

相关推荐

Global site tag (gtag.js) - Google Analytics