- 浏览: 295734 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
zh554275855:
1 接口是核心,其定义了要做的事情,包含了许多的方法,但没有定 ...
抽象类和接口的区别,使用场景 -
MeowPass:
[color=red][size=xx-large][alig ...
java 字符串split有很多坑,使用时请小心!! -
jayzc1234:
讲的很好 看头像还是个女的 真是牛逼
WEBX学习总结 -
wodexiang:
写的什么狗屎
jetty启动以及嵌入式启动 -
繁星水:
很好,感谢分享与总结,谢谢!
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、定位加载资源并依据配置文件反射调用相应的类
我下的是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、定位加载资源并依据配置文件反射调用相应的类
发表评论
-
多线程重要方法的使用
2013-09-21 22:08 1477首先讲一下进程和线程的区别: 进程:每个进程都有 ... -
iBATIS 对 SQL 语句的解析过程
2013-07-01 22:32 2957总体来说 iBATIS 的系统 ... -
最容易被忽视的基础异常
2013-04-19 15:23 0result = getShopGroupDOList(req ... -
用java处理事务
2013-03-15 09:58 1039[size=medium]数据库的事务平时很少用到,只有评价线 ... -
servlet的单例多线程
2013-03-13 17:19 4196因为我们平时编程用到了servlet,而servlet的容器默 ... -
泛型的几个注意点!
2013-03-03 20:45 5323[size=medium]上周代码里碰 ... -
hive原理(未完。。)
2013-01-06 22:46 1981hive就是一个将hiveql(其实是sql的子集或者说一点点 ... -
搜索切换dump之MapReduce讲解
2012-12-23 20:16 1584分享聚合dump的是评价的 ... -
java 字符串split有很多坑,使用时请小心!!
2012-12-19 11:13 84361System.out.println(":ab: ... -
开启mapReduce
2012-12-18 10:53 1127用最简短的语言解释MapReduce: We wa ... -
SimpleDateFormat多线程问题
2012-12-12 11:04 1034之前在写控制双12开关的函数时遇到了SimpleDateFor ... -
删除单条分享理由的日常总结
2012-08-15 14:32 1125上周总算把这个简单蕴 ... -
Apache 中RewriteRule 规则参数
2012-08-15 11:33 2042Apache 中RewriteRule 规则 ... -
Memcached installation under Windows and Java client calls
2012-07-23 00:42 13351、What is Memcached? Free & ... -
WEBX学习总结
2012-07-15 22:51 16400把对webx的学习总结搬到iteye上来 一、 WEBX框架的 ... -
webx框架之RundataService
2012-07-12 22:37 1386之前对webx的学习都是有关响应和处理请求的流程和源码实现,配 ... -
一个简单的test
2012-06-25 21:46 1066public class UrlTest { publ ... -
java.io学习总结
2012-06-18 00:33 9682我将按照基类的顺序:InputStream、OutPutStr ... -
HashMap源码学习分享心得
2012-06-01 14:58 1426[size=medium]今早在团队内分享了<通过 Ha ... -
System.arraycopy
2012-05-28 18:43 1390在JAVA里面,可以用复制 ...
相关推荐
shell脚本启动jetty嵌入式server,shell脚本启动jetty嵌入式server
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-...
在嵌入式开发中,你可以直接在你的Java代码中创建Jetty Server实例,配置Connectors和Handlers,然后启动服务器,无需部署WAR文件。这使得开发、测试和调试过程更加便捷。 3. **源码分析** - `Server`: 作为Jetty...
Jetty 6是一款轻量级、高性能的Java Web服务器和Servlet容器,因其可嵌入式使用而备受开发者青睐。在Eclipse这样的集成开发环境中,你可以直接通过Starter类快速启动和运行Jetty服务,大大简化了Web应用的部署流程。...
**Jetty启动的Maven Web项目** 在Java Web开发中,Jetty是一个轻量级、高性能的嵌入式Servlet容器,常被用于快速部署和测试Web应用程序。与Tomcat等其他服务器相比,Jetty的体积小、启动速度快,且可以直接与Maven...
最大的特点是Jetty的嵌入式特性,可以直接在你的应用程序中启动和停止Jetty服务器,无需独立部署。这对于微服务、测试和快速原型开发非常有利。 通过以上实例,你将能够熟练地在Java项目中使用Jetty服务器,无论是...
作为一款嵌入式服务器,Jetty可以直接在应用程序中运行,无需单独的Web服务器进程,这使得它在分布式系统、微服务架构以及需要高度定制化的场景下尤为受欢迎。 在使用Jetty作为嵌入式HTTP服务器时,我们首先需要...
本文将深入探讨Jetty的基本概念、特性以及如何在Java项目中使用它。 1. **Jetty简介** - Jetty是由Eclipse基金会维护的开源项目,它提供了HTTP服务器、Servlet容器和WebSocket服务器等功能。 - 与Tomcat等其他...
此外,`jetty嵌入式服务.rar`可能包含示例代码、配置文件以及如何部署和管理Web应用程序的文档。可能还涵盖了以下主题: - 配置线程池:Jetty允许自定义线程池以优化性能和资源使用。 - SSL/TLS支持:如何启用HTTPS...
嵌入式Jetty允许开发者直接在应用程序中启动和管理Web服务器,无需单独部署或运行独立的服务器进程。在Java开发中,Jetty以其简单易用和灵活性著称,使得开发者能够快速地搭建和配置HTTP服务器,处理HTTP请求,支持...
使用上述代码可以启动Jetty,实现嵌入式的Servlet容器。 注意:Jetty 9需要JDK 7,如果使用JDK 6的话会出现错误:java.lang.UnsupportedClassVersionError: Unsupported major.minor version 51.0。 使用Jetty实现...
通过创建的Jetty启动类运行项目,服务器会加载并解析Struts2 Annotation定义的Action,处理请求。 ### 7. 博文链接 提供的博文链接()可能包含更多详细的步骤和示例代码,建议参考以获取更具体的实现方法。 总结...
在Java开发环境中,Jetty常常作为嵌入式服务器使用,便于快速构建和部署应用。 本资源包提供了Jetty服务器的安装包(jetty-distribution-9.4.14.v20181114.zip),这是Jetty的一个特定版本,9.4.14.v20181114。...
用于 switchblade-core 的自动配置库,提供嵌入式 Jetty 实例。 mvn install 创建一个项目,导入依赖。 确保它是在 Java 8 中使用“-parameters”编译器标志编译的。 创建一个应用程序,启动它。 将类包含在与...
直接通过bat或shell启动即可。 系统启动时自动从数据库中读取框架配置信息,job信息,调度信息注入到框架中。 本系统内嵌了jetty作为框架的web接口为本框架提供了动态控制功能。 接口以http+json形式提供服务。通过...
7. **类加载器**、**Jetty Connector的SSL配置**、**虚拟主机**、**管理服务器**、**JNDI配置**、**会话与集群**、**性能优化**、**异步Servlet、Ajax和Comet**以及**嵌入Jetty**等内容,都是指南中详细阐述的主题,...
Jetty还支持嵌入式模式,可以直接将服务器与应用程序打包在一起,提供更简洁的部署方案。 其次,Jetty对Servlet规范的支持非常全面,包括最新的Servlet 4.0规范。它不仅能够处理HTTP和HTTPS请求,还支持WebSocket...
此外,还会涉及如何使用Jetty的嵌入式模式,即直接在应用中包含Jetty服务器,而不是将其作为独立服务运行。 通过这个JettyDemo,你将对Jetty的使用有初步的认识,为进一步学习和使用Jetty打下基础。随着你对Jetty的...
6. **Jetty Eclipse Plugin使用**:熟悉插件的安装和配置过程,学习如何在Eclipse中快速启动Jetty服务器、部署应用、调试Servlet和JSP,以及进行热部署和性能分析。 7. **性能调优**:了解如何通过调整Jetty的配置...
解压后,你可以根据提供的启动脚本来启动Jetty服务。 5. **配置与使用** Jetty的配置相对简单,主要通过修改`start.ini`或`jetty.xml`文件来定制服务器行为。你可以设置端口、线程池大小、日志配置等。此外,Jetty...