发表于: 2017-06-14 22:14:59

1 1099


今天完成的事情:jetty的学习

Jetty 的基本架构

Jetty 目前的是一个比较被看好的 Servlet 引擎,它的架构比较简单,也是一个可扩展性和非常灵活的应用服务器,它有一个基本数据模型,这个数据模型就是 Handler,所有可以被扩展的组件都可以作为一个 Handler,添加到 Server 中,Jetty 就是帮你管理这些 Handler。

下图是 Jetty 的基本架构图,整个 Jetty 的核心组件由 Server 和 Connector 两个组件构成,整个 Server 组件是基于 Handler 容器工作的,它类似与 Tomcat 的 Container 容器。Jetty 中另外一个比不可少的组件是 Connector,它负责接受客户端的连接请求,并将请求分配给一个处理队列去执行。

Jetty 中还有一些可有可无的组件,我们可以在它上做扩展。如 JMX,我们可以定义一些 Mbean 把它加到 Server 中,当 Server 启动的时候,这些 Bean 就会一起工作。

从上图可以看出整个 Jetty 的核心是围绕着 Server 类来构建,Server 类继承了 Handler,关联了 Connector 和 Container。Container 是管理 Mbean 的容器。Jetty 的 Server 的扩展主要是实现一个个 Handler 并将 Handler 加到 Server 中,Server 中提供了调用这些 Handler 的访问规则。

整个 Jetty 的所有组件的生命周期管理是基于观察者模板设计,它和 Tomcat 的管理是类似的。下面是 LifeCycle 的类关系图

每个组件都会持有一个观察者(在这里是 Listener 类,这个类通常对应到观察者模式中常用的 Observer 角色,关于观察者模式可以参考 《Tomcat系统架构与设计模式,第2部分:设计模式分析》一文中关于观察者模式的讲解)集合,当 start、fail 或 stop 等事件触发时,这些 Listener 将会被调用,这是最简单的一种设计方式,相比 Tomcat 的 LifeCycle 要简单的多。


jetty的部署

jetty的官网地址是:http://www.eclipse.org/jetty/ 进入网站之后点击左边的Downloads进入下载界面,下载界面地址是:http://www.eclipse.org/jetty/download.html

右键tgz复制链接进入shell 输入命令 wget http://central.maven.org/maven2/org/eclipse/jetty/jetty-distribution/9.4.6.v20170531/jetty-distribution-9.4.6.v20170531.tar.gz

文件下载好了之后这里将jetty安装在/usr/local/jetty下,具体也目录可以自己定义:

tar -xvzf jetty-distribution-9.4.6.v20170531.tar.gz

mv jetty-distribution-9.4.6.v20170531 /usr/local/jetty/

cd /usr/local/jetty

解压完就完成了安装,当前目录在jetty安装目录下,可以看到jetty的目录结构如下:

可以看到和tomcat很相似,bin下放置启动脚本,logs是日志目录,etc是配置文件目录,start.ini是启动的默认配置文件,webapps下放置具体的web应用,可以是普通应用,也可以是war包,和tomcat应用完全一致,直接拿过来用即可,唯一不同的是应用下没有默认首页或者路由拦截的时候jetty会显示目录结构,可以通过配置取消,也可以自己定义拦截请求。


启动jetty

  在上面图中jetty目录下的start.jar可以用于启动,执行命令: java -jar start.jar 即可启动,这个是在当前命令行启动,如果想在后台启动也可以使用nohup和screen另一种启动方式是执行: ./bin/jetty.sh start 启动,这个默认会在后台运行jetty 启动jetty后,访问http://ip:8080可以访问到404界面,因为webapps下没有任何应用

现在jetty就跑起来了,现在可以把写的jsp/servlet、spring应用以及各种web应用放到其中运行啦

  停止jetty可以执行如下命令:

  如果是使用 java -jar start.jar 进行启动的话,直接kill即可停止

  start.jar还有另外一种启动方式,可以设置控制端口和密码,比如: java -DSTOP.PORT=8079 -DSTOP.KEY=123456 -jar start.jar 启动后关闭时也是需要权限的

  注意上面的8079只是控制使用的端口号,并不是jetty web访问的端口号,停止可以使用下面命令:

java -DSTOP.PORT=8079 -DSTOP.KEY=123456 -jar start.jar --stop

  这里密码和端口号都要一样,否则无法停止

  如果是使用 bin/jetty.sh start 启动的话那么使用 bin/jetty.sh stop 停止即可

  另外使用 bin/jetty.sh restart 可以重启jetty服务

明天计划的事情:完成项目编译

遇到的问题:学习效率低

收获:掌握jetty的简单使用。


返回列表 返回列表
评论

    分享到