- 浏览: 292513 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
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 1434首先讲一下进程和线程的区别: 进程:每个进程都有 ... -
iBATIS 对 SQL 语句的解析过程
2013-07-01 22:32 2868总体来说 iBATIS 的系统 ... -
最容易被忽视的基础异常
2013-04-19 15:23 0result = getShopGroupDOList(req ... -
用java处理事务
2013-03-15 09:58 993[size=medium]数据库的事务平时很少用到,只有评价线 ... -
servlet的单例多线程
2013-03-13 17:19 4152因为我们平时编程用到了servlet,而servlet的容器默 ... -
泛型的几个注意点!
2013-03-03 20:45 5275[size=medium]上周代码里碰 ... -
hive原理(未完。。)
2013-01-06 22:46 1941hive就是一个将hiveql(其实是sql的子集或者说一点点 ... -
搜索切换dump之MapReduce讲解
2012-12-23 20:16 1524分享聚合dump的是评价的 ... -
java 字符串split有很多坑,使用时请小心!!
2012-12-19 11:13 84212System.out.println(":ab: ... -
开启mapReduce
2012-12-18 10:53 1080用最简短的语言解释MapReduce: We wa ... -
SimpleDateFormat多线程问题
2012-12-12 11:04 968之前在写控制双12开关的函数时遇到了SimpleDateFor ... -
删除单条分享理由的日常总结
2012-08-15 14:32 1081上周总算把这个简单蕴 ... -
Apache 中RewriteRule 规则参数
2012-08-15 11:33 2011Apache 中RewriteRule 规则 ... -
Memcached installation under Windows and Java client calls
2012-07-23 00:42 12781、What is Memcached? Free & ... -
WEBX学习总结
2012-07-15 22:51 16298把对webx的学习总结搬到iteye上来 一、 WEBX框架的 ... -
webx框架之RundataService
2012-07-12 22:37 1347之前对webx的学习都是有关响应和处理请求的流程和源码实现,配 ... -
一个简单的test
2012-06-25 21:46 1025public class UrlTest { publ ... -
java.io学习总结
2012-06-18 00:33 9628我将按照基类的顺序:InputStream、OutPutStr ... -
HashMap源码学习分享心得
2012-06-01 14:58 1380[size=medium]今早在团队内分享了<通过 Ha ... -
System.arraycopy
2012-05-28 18:43 1342在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-...
jetty是什么 jetty配置 jetty使用 jetty嵌入 jetty启动 jetty部署 jetty教程 jetty嵌入式 jetty
用于 switchblade-core 的自动配置库,提供嵌入式 Jetty 实例。 mvn install 创建一个项目,导入依赖。 确保它是在 Java 8 中使用“-parameters”编译器标志编译的。 创建一个应用程序,启动它。 将类包含在与...
直接通过bat或shell启动即可。 系统启动时自动从数据库中读取框架配置信息,job信息,调度信息注入到框架中。 本系统内嵌了jetty作为框架的web接口为本框架提供了动态控制功能。 接口以http+json形式提供服务。通过...
作为嵌入式服务器使用代码实例: Java代码 //代码:以嵌入模式启动Jetty import org.mortbay.http.HttpContext; import org.mortbay.http.HttpServer; import org.mortbay.http.SocketListener; import org.mortbay...
jetty是一个轻便的嵌入式servlet容器。其启动运行非常简单。这是一个简单的Jetty例子程序。
该服务器是一些POJO,它们将启动Jetty并为其配置服务。 此代码基于此处找到的WebSocket教程: ://jansipke.nl/websocket-tutorial-with-java-server-jetty-and-javascript-client/ 有些人(包括我自己在内)认为...
一个示例应用程序演示了Dropwizard如何无缝集成和实例化-Jetty服务器,RESTful Web服务的jersey框架,JSON的Jackson以及指标库。 介绍Dropwizard兼有-框架和库。 它由以下模块组成。 Jetty HTTP库和嵌入式HTTP...
embedded-jetty.zip,用于启动嵌入式Jetty的代码。提供了一种简单的方法来构建允许无XML应用程序的嵌入式Jetty
构建代码 mvn package使用 belly-shade 插件和 Jetty 作为 servlet 容器制作一个 uberjar。创建泊坞窗图像使用作为基础。 给出约300M的图像 sudo docker build --rm=true -t simple-microservice .以为基础,镜像160...
这个maven项目创建了一个jar,其中包含启动应用程序所需的所有内容。 您可以在App类中自定义Web服务器,该类类似于码头发行版中的start.xml文件。 推送命令示例: cf push appname -p jetty-cloud-xyzjar -b java...
同时也可以修改默认值来满足特定的需求提供了一些大型项目中常见的非功能性特性,如嵌入式服务器、安全、指标,健康检测、外部配置等SpringBoot不是对Spring功能上的增强,而是提供了一种快速使用Spring的方式# ...
##执行这个专案的步骤叉,克隆或下载ZIP 生成项目: mvn clean install -U 从项目文件夹启动Jetty: mvn exec:java ...或从您的IDE执行com.github.leifoolsen.jerseyguice.main.Main main方法Application.wadl: ...
httpkit是精巧的java嵌入式http服务器,超快的启动速度(实测仅需80毫秒),是tomcat、jetty的完美替代方案。 使用方法//起一个server实例 int port = 7777; HttpServer server = HttpServer.bind(port); ...
基于 Spring 和 Hibernate在开发模式下运行(使用嵌入式 HSQL 数据库): 使用嵌入式 Jetty 服务器运行此应用程序: mvn -P dev jetty:run -Dspring.profiles.active="dev" 这将在端口 8080 上启动嵌入式 Jetty ...
嵌入式码头在可战胜的战争中 使用Spring Boot启动我们自己的主类,仅此而已。 避免将所有罐子的内容物提取到战争中。 mvn clean package java -jar target/embedded-jetty-spring-boot-0.1-SNAPSHOT.war 转到查看...
在开发模式下运行(使用嵌入式 HSQL 数据库): 使用嵌入式 Jetty 服务器运行此应用程序: mvn -P dev jetty:run -Dspring.profiles.active="dev" 这将在端口 8080 上启动嵌入式 Jetty 服务器,您可以在此处访问您的...
为开发而构建运行mvn jetty:run以在嵌入式 Jetty 中启动应用程序。测试运行mvn clean install或mvn test ( test包含在install之前的构建生命周期中)REST 端点GET ...
后端 Main 类启动嵌入式 Jetty 以提供 REST 资源。 构建 Web 前端需要 Grunt 和 Bower。 npm install、grunt install 和 grunt dev 应该启动前端以便在。 由于后端是在从 Jetty 提供的,因此需要在浏览器中禁用 ...