分享

Jetty:基本功能介绍

 instl 2014-12-10

Jetty是一个开源项目,提供了HTTP Server,HTTP Client和Javax.servlet容器,这里(http://www./jetty/)是它的官方网站,这里对它做一个基本的介绍,包括基本目录、启动方式和应用部署。

Jetty目录结构

下面是Jetty 9.10的发布版本包含的文件和文件夹,及其作用。

  1. license-eplv10-aslv20.html  
  2.             Jetty的License文件  
  3. README.txt  
  4.             Jetty的基本信息和命令  
  5. VERSION.txt  
  6.             发布版本  
  7. bin/  
  8.             Jetty运行在Unix系统上的shell脚本  
  9. demo-base/  
  10.             一个Jetty的base文件夹,用于运行演示webapps的Jetty server  
  11. etc/  
  12.             Jetty的XML配置文件文件夹  
  13. lib/  
  14.             Jetty依赖的JAR文件  
  15. logs/  
  16.             请求日志  
  17. modules/  
  18.             module定义文件夹  
  19. notice.html  
  20.             License信息和免责条款  
  21. resources/  
  22.             附属资源的配置文件  
  23. start.d/  
  24.             *.ini文件,这些文件包含一些配置文件,在命令行中会被作为参数添加上去(看start.ini)  
  25. start.ini  
  26.             包含添加到实际的命令行中的参数(modules,properties和XML配置文件)  
  27. start.jar  
  28.             调用Jetty的Jar  
  29. webapps/  
  30.             默认的Jetty放置webapps的文件夹  

这里做一个基本的了解,后面将详细讲述。

启动Jetty

Jetty的默认端口是8080,使用下面的命令启动:

  1. >cd $JETTY_HOME  
  2. >java -jar start.jar  

然后你能在浏览器中访问:http://localhost:8080

Demo Base

在9.1.0之后,Jetty不再部署任何demo web应用,因此要看演示,你需要从demo-base文件夹启动Jetty,如下:

  1. >cd $JETTY_HOME/demo-base/  
  2. >java -jar ../start.jar  

打开浏览器,输入http://localhost:8080,你将看到一个欢迎页面和几个demo/test web应用。

创建新Jetty Base

上面描述的demo-base文件夹是一个jetty.base机制的一个例子,该机制在Jetty 9.1增加。Jetty base允许服务端实例的配置和web应用被分别地存储,以保证升级的影响降到最小。Jetty的默认配置基于两个属性:
         jetty.home:定义jetty分发的位置,包括他的libs,默认modules和默认XML文件(例如start.jar,lib,等等)
         jetty.base:定义一个jetty服务器的特定实例的位置,包括他的配置,logs和web应用(例如start.ini,start.d,logs和webapps)
jetty.home和jetty.base可以直接在命令行中指定,也可以通过环境变量使用,例如:

  1. >cd $JETTY_BASE  
  2. >java -jar $JETTY_HOME/start.jar  

这个跟随的命令创建了一个新的base文件夹,并激活了一个HTTP连接器和web应用部署者:

  1. >mkdir /tmp/mybase  
  2. >cd /tmp/mybase  
  3. >java -jar $JETTY_HOME/start.jar  
  4. WARNING: Nothing to start, exiting ...  
  5.   
  6. Usage: java -jar start.jar [options] [properties] [configs]  
  7.       java -jar start.jar --help  # for more information  
  8. >java -jar $JETTY_HOME/start.jar --add-to-startd=http,deploy  
  9. http            initialised in ${jetty.base}/start.d/http.ini (created)  
  10. server          initialised in ${jetty.base}/start.d/server.ini (created)  
  11. deploy          initialised in ${jetty.base}/start.d/deploy.ini (created)  
  12. MKDIR: ${jetty.base}/webapps  
  13. server          initialised in ${jetty.base}/start.d/server.ini  
  14. >java -jar $JETTY_HOME/start.jar  
  15. 2013-09-06 14:59:32.542:INFO:oejs.Server:main: jetty-9.1.0-SNAPSHOT  
  16. 2013-09-06 14:59:32.572:INFO:oejdp.ScanningAppProvider:main: Deployment monitor [file:/tmp/mybase/webapps/] at interval 1  
  17. 2013-09-06 14:59:32.602:INFO:oejs.ServerConnector:main: Started ServerConnector@405a2273{HTTP/1.1}{0.0.0.0:8080}  
  18.   
  19. [...]  

改变Jetty端口

你可以通过在命令行中设置jetty.port改变端口:

  1. >cd $JETTY_HOME/demo-base  
  2. >java -jar start.jar jetty.port=8081  

你可以将属性值添加到start.ini文件或者start.d/*.ini文件中。默认情况下,jetty定义jetty.port属性在start.d/http.ini文件中,可以被修改。

使用HTTPS启动

使用下面的方式可以激活https模块:

  1. >java -jar start.jar --add-to-startd=https  
  2. https           initialised in ${jetty.home}/start.d/https.ini (created)  
  3. ssl             initialised in ${jetty.home}/start.d/ssl.ini (created)  
  4. server          enabled in     ${jetty.home}/start.ini  
  5. resources       enabled in     ${jetty.home}/start.ini  
  6. ext             enabled in     ${jetty.home}/start.ini  
  7. >java -jar start.jar  
  8. 2013-09-06 13:52:43.326:INFO:oejs.Server:main: jetty-9.1.0  
  9. ...  

--add-to-startd执行如下操作:
 1)创建https.ini文件激活和配置https连接器模块。https模块增加etc/jetty-https.xml文件到命令行中。
 2)创建start.d/ssl.ini文件激活和配置SSL keystore。ssl模块增加etc/jetty-ssl.xml文件到命令行。
 3)检查etc/keystore文件是否存在,如果不存在,则下载一个示范keystore文件。

更多的start.jar选项

start.jar的工作是解释命令行,start.ini和start.d是提供Java classpath和属性和配置文件列表。start.jar有许多的选项,你可以通过下面的命令看到:

  1. >java -jar start.jar --help  

部署web应用

web应用部署在webapps文件夹,支持热部署,支持标准的WAR文件和Jetty配置文件,并遵循下面的约定:
 1)如果文件夹example/被部署,且包含一个WEB-INF/子文件夹,则它作为标准web应用部署,否则它作为静态目录上下文部署。上下文路径是/example(即:http://localhost:8080/example/),但如果文件夹名是ROOT(大小写敏感),则上下文路径是/。如果文件夹名以“.d”结束,则被忽略(但可以通过直接配置来使用)。
 2)文件example.war被作为标准web应用部署,上下文路径为/example(即:http://localhost:8080/example/)。如果文件名是ROOT(大小写敏感),则上下文路径为/。如果example.war和example/同时存在,则WAR被部署。
 3)一个XML文件example.xml被部署,配置通过XML文件定义,配置必须包含上下文路径。如果example.xml和example.war存在,仅XML被部署。
如果你有一个标准的web应用,你能通过拷贝它到webapps文件夹来热部署它到Jetty。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多