`
Yinny
  • 浏览: 295734 次
  • 性别: 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  
很好,感谢分享与总结,谢谢!

相关推荐

    shell脚本启动jetty嵌入式server

    shell脚本启动jetty嵌入式server,shell脚本启动jetty嵌入式server

    jetty嵌入式服务器必须的jar包

    jetty嵌入式服务器开发所必须的jar包,本人使用jetty版本为6.1.3,jar包总数为9个,来自jetty:commons-el-1.0.jar,jasper-compiler-5.5.15,jasper-compiler-jdt-5.5.15.jar,jasper-runtime-5.5.15.jar,jetty-...

    jetty 嵌入式开发源码

    在嵌入式开发中,你可以直接在你的Java代码中创建Jetty Server实例,配置Connectors和Handlers,然后启动服务器,无需部署WAR文件。这使得开发、测试和调试过程更加便捷。 3. **源码分析** - `Server`: 作为Jetty...

    jetty6 嵌入式使用

    Jetty 6是一款轻量级、高性能的Java Web服务器和Servlet容器,因其可嵌入式使用而备受开发者青睐。在Eclipse这样的集成开发环境中,你可以直接通过Starter类快速启动和运行Jetty服务,大大简化了Web应用的部署流程。...

    jetty启动的maven web项目

    **Jetty启动的Maven Web项目** 在Java Web开发中,Jetty是一个轻量级、高性能的嵌入式Servlet容器,常被用于快速部署和测试Web应用程序。与Tomcat等其他服务器相比,Jetty的体积小、启动速度快,且可以直接与Maven...

    jetty嵌入式服务器实例大全

    最大的特点是Jetty的嵌入式特性,可以直接在你的应用程序中启动和停止Jetty服务器,无需独立部署。这对于微服务、测试和快速原型开发非常有利。 通过以上实例,你将能够熟练地在Java项目中使用Jetty服务器,无论是...

    jetty嵌入式Httpserver

    作为一款嵌入式服务器,Jetty可以直接在应用程序中运行,无需单独的Web服务器进程,这使得它在分布式系统、微服务架构以及需要高度定制化的场景下尤为受欢迎。 在使用Jetty作为嵌入式HTTP服务器时,我们首先需要...

    JAVA里使用Jetty作为轻量级嵌入式的Web容器

    本文将深入探讨Jetty的基本概念、特性以及如何在Java项目中使用它。 1. **Jetty简介** - Jetty是由Eclipse基金会维护的开源项目,它提供了HTTP服务器、Servlet容器和WebSocket服务器等功能。 - 与Tomcat等其他...

    jetty嵌入式服务.rar

    此外,`jetty嵌入式服务.rar`可能包含示例代码、配置文件以及如何部署和管理Web应用程序的文档。可能还涵盖了以下主题: - 配置线程池:Jetty允许自定义线程池以优化性能和资源使用。 - SSL/TLS支持:如何启用HTTPS...

    jetty嵌入式实例

    嵌入式Jetty允许开发者直接在应用程序中启动和管理Web服务器,无需单独部署或运行独立的服务器进程。在Java开发中,Jetty以其简单易用和灵活性著称,使得开发者能够快速地搭建和配置HTTP服务器,处理HTTP请求,支持...

    Java如何使用Jetty实现嵌入式的Servlet容器

    使用上述代码可以启动Jetty,实现嵌入式的Servlet容器。 注意:Jetty 9需要JDK 7,如果使用JDK 6的话会出现错误:java.lang.UnsupportedClassVersionError: Unsupported major.minor version 51.0。 使用Jetty实现...

    在嵌入式jetty环境下运行struts2Annotation项目

    通过创建的Jetty启动类运行项目,服务器会加载并解析Struts2 Annotation定义的Action,处理请求。 ### 7. 博文链接 提供的博文链接()可能包含更多详细的步骤和示例代码,建议参考以获取更具体的实现方法。 总结...

    jetty服务器

    在Java开发环境中,Jetty常常作为嵌入式服务器使用,便于快速构建和部署应用。 本资源包提供了Jetty服务器的安装包(jetty-distribution-9.4.14.v20181114.zip),这是Jetty的一个特定版本,9.4.14.v20181114。...

    switchblade-jetty:提供嵌入式 Jetty 实例的 switchblade-core 的自动配置库

    用于 switchblade-core 的自动配置库,提供嵌入式 Jetty 实例。 mvn install 创建一个项目,导入依赖。 确保它是在 Java 8 中使用“-parameters”编译器标志编译的。 创建一个应用程序,启动它。 将类包含在与...

    springbatch_嵌入式jetty_动态控制的quartz

    直接通过bat或shell启动即可。 系统启动时自动从数据库中读取框架配置信息,job信息,调度信息注入到框架中。 本系统内嵌了jetty作为框架的web接口为本框架提供了动态控制功能。 接口以http+json形式提供服务。通过...

    jetty6 指南书

    7. **类加载器**、**Jetty Connector的SSL配置**、**虚拟主机**、**管理服务器**、**JNDI配置**、**会话与集群**、**性能优化**、**异步Servlet、Ajax和Comet**以及**嵌入Jetty**等内容,都是指南中详细阐述的主题,...

    jetty入门

    Jetty还支持嵌入式模式,可以直接将服务器与应用程序打包在一起,提供更简洁的部署方案。 其次,Jetty对Servlet规范的支持非常全面,包括最新的Servlet 4.0规范。它不仅能够处理HTTP和HTTPS请求,还支持WebSocket...

    Jetty Demo

    此外,还会涉及如何使用Jetty的嵌入式模式,即直接在应用中包含Jetty服务器,而不是将其作为独立服务运行。 通过这个JettyDemo,你将对Jetty的使用有初步的认识,为进一步学习和使用Jetty打下基础。随着你对Jetty的...

    jetty 学习资料合集

    6. **Jetty Eclipse Plugin使用**:熟悉插件的安装和配置过程,学习如何在Eclipse中快速启动Jetty服务器、部署应用、调试Servlet和JSP,以及进行热部署和性能分析。 7. **性能调优**:了解如何通过调整Jetty的配置...

    jetty各个版本下载

    解压后,你可以根据提供的启动脚本来启动Jetty服务。 5. **配置与使用** Jetty的配置相对简单,主要通过修改`start.ini`或`jetty.xml`文件来定制服务器行为。你可以设置端口、线程池大小、日志配置等。此外,Jetty...

Global site tag (gtag.js) - Google Analytics