Jetty 配置文件语法 Start.config

start.config是一个比较隐蔽的配置文件,一般情况下,用户都不需要修改它。但是,当你需要使用start.jar来启动你自己的应用(start.jar是一个比较通用的启动工具噢!),或者一些其它的程序时,则需要编写自己的config文件,并在命令行中指定。

在start.jar的/org/eclipse/jetty/start目录下,可以找到start.config文件,以下是详细配置内容。

1.start.config的作用

该配置文件主要用于构造命令行命令参数,它决定start.jar启动哪个带有Main函数的类,哪些jar文件和class文件将被置于类路径中。在设置好类路径后,start.jar会通过java反射机制来调用你在config文件中指定的包含main函数的类!

2.配置

# 表示注释

配置文件以行为单位,每一行的结构如下: 
SUBJECT [ [!] CONDITION [AND|OR] ]*

2.1SUBJECT说明

1.如果以".class" 结尾,则表示它是包含Main函数的类,也就是你自己应用的入口类! 
2.如果以".xml"结尾,则表示subject是一个配置文件,将会被包含到命令行。 
3.如果以"/"结尾,则表示subject是一个目录,且目录下面的所有jar和zip文件都会纳入到类路径中 
4.如果以"/*"结尾,其作用同3,但会将不重要的(unconsidered)的jar和zip也纳入类路径。(不太明白4与3之间的区别) 
5.如果以"/**"结尾,则表示subject是一个目录,该目录下的jar和zip文件会纳入到类路径。如果该目录下面还有子目录,那么也将子目录下的jar/zip文件也纳入到类路径中(依次递归)。 
6.如果包含 = 号,则该语句是用于增加系统属性的(可以通过System.getProperty获取这里指定的属性) 
7.如果包含 ~= 号,则用于指定一个启动属性,即一个命令行属性。 
8.如果包含 /= 号,则表示指定一个标准的路径。如果你使用相对路径,则会被转化为绝对路径。 
9.如果SUBJECT不符合以上的内容,则它将会作为一个文件加入到类路径中!

${name} 获取启动属性(在命令行中指定的属性) 
$(name) 获取系统属性 
注:${version}是一个内置的属性,指Jetty的版本,该值在start.jar中的类中固化了。可以直接使用!

使用"/"开头的文件会被认为是绝对路径的,其它则当作是相对于Jetty根目录的相对路径!

2.2 CONDITION说明

CONDITION的可选值有: 
1. always 永真,总是返回true 
2. never 总是返回false 
3. avalilable classname  如果classname指定的类可以在当前的类路径中找到,则返回true 
4. property name 如果启动属性name被设置,则返回true 
5. system name 如果系统属性name被设置,则返回true 
6. exists file 如果file文件存在,则返回true 
7. java OPERATOR version java虚拟机版本比较 
8. nargs OPERATOR number 命令行参数的数目比较 
注:OPERATOR是指"<",">","<=",">=","==","!="之一.

在使用时,可以将多个CONDITION使用 AND, OR 组合成一个CONDITION。

另外,上面提到的类路径操作都是立即执行——也就是说,如果在某一行中将A.class加入到类路径中,那该行以后其它命令都可以在类路径中找到A.class,而不是非要等到配置文件处理完后才能找到A.class.

配置文件可以通过使用以下方式划分成不同的块。 
[ssl,default] 
在该块之后,新块之前的语句都将只对指定的选项OPTIONS生效。用户可以在命令行指定OPTIONS,如下: 
java –jar star.jar OPTIONS=jetty,jsp,ssl

这里顺便说一下,OPTIONS就是一个启动属性!如果用户没有使用OPTIONS参数,那么该参数默认为"default,*"。如果用户执行上面的命令,那么配置文件中[ssl,default]块下面的语句就会被执行,因为选项中ssl项。

另外,不论用户是否在命令行中给OPTIONS赋予"*"值,"*"都会被强制加到所有OPTIONS后面。也就是说,如果配置文件中某个块中包含了"*",则表示这个块下的内容永远都会被执行!

通过使用下面的命令可以查看OPTIONS有哪些可选值。 
java –jar start.jar –list-options

至此,想必大家也明白了,为什么能够在命令行中通过OPTIONS参数来使Jetty运行于不同的模式了!因为start.config早已经把这些可用选项需要使用的类路径、属性等都写入其中了!如果你要使用start.jar来启动自己的程序,也可以依法炮制啦。

start.config的使用方法就讲完了,下面则以jetty的start.config作为用例来进行实例分析。

3.实例分析

${path}.path                                     property path 
如果命令行指定了path属性,则其值添加到类路径中。大家可能对.path这个结尾比较好奇,因为上文没有提到。其实参考一下2.1节的第9项就明白了。

${lib}/**                                        exists ${lib} 
如果命令行指定的lib属性(要求它是一个目录的路径),则将该目录及子目录下面的jar/zip加入到类路径。

jetty.home=.                                     ! exists $(jetty.home)/start.jar 
jetty.home=..                                    ! exists $(jetty.home)/start.jar 
jetty.home=jetty-distribution/src/main/resources     ! exists $(jetty.home)/start.jar 
jetty.home=../jetty-distribution/src/main/resources  ! exists $(jetty.home)/start.jar 
jetty.home=.                                     ! exists $(jetty.home)/start.jar 
jetty.home/=$(jetty.home)                        exists $(jetty.home)/start.jar 
以上命令,就是尝试设置jetty.home的值。只要其中一个执行成功,其它的就不会被执行了,因为有后面的条件限制。

org.eclipse.jetty.xml.XmlConfiguration.class 
${start.class}.class                             property start.class 
指定主函数。jetty默认使用org.eclipse.jetty.xml.XmlConfiguration作为启动的入口,这个类的职责是读取etc目录下的xml配置文件,然后初始化并配置相关的类,有点类似于spring的配置文件。它也可以算是一个IoC容器吧!用户也可以在命令行中,通过指定start.class参数再重新指定入口类!

$(jetty.home)/etc/jetty.xml                      nargs == 0 
如果用户没有在命令行中指定任务参数,则默认使用etc/jetty.xml来初始化服务器。当我们使用 
java –jar start.jar 
来启动服务器是,这条配置就会生效!

OPTIONS~=default,*                               ! property OPTIONS 
这就是OPTIONS的默认配置。

[*] 
$(jetty.home)/lib/jetty-util-$(version).jar                                             ! available org.eclipse.jetty.util.StringUtil 
$(jetty.home)/lib/jetty-io-$(version).jar                                               ! available org.eclipse.jetty.io.Buffer 
这个块中的内容,表示不论Jetty在哪种模式下运行,都会被执行。

[Server,All,xml,default] 
$(jetty.home)/lib/jetty-xml-$(version).jar                                              ! available org.eclipse.jetty.xml.XmlParser 
只有在Server,All,xml或者default选项下,才会将jetty-xml模块纳入到类路径中!

好了,start.config的讲解到些结束!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值