jetty xml解析

1 configurejavascript

configure为xml的根结点,class指定所配置的对象的类,这个configure会建立一个该类的对象,而后根据该xml对其进行配置。id用来对该对象进行标识,在整个jetty中具备惟一性,相同id的xml configure文件配置的是同一个对象。java

2 setweb

<Set name=xxx type=xxx class=xxx>value</Set>app

不管value处是什么元素,其返回值都做为setXxx()函数的参数,即setXxx(value)。webapp

name用来肯定该setter的名字,setXxx。函数

type用来指示value的类型,通常状况下能够省略。ui

若是有class,那么这就是该类的一个static的调用。spa

3 getcode

<Get name=xxx class=xxx>operation</Get>xml

name用来肯定该getter的名字,getXxx。

若是有class,那么也是调用该类的一个static的getter。

Get会返回一个对象A,而后再调用该对象A的operation,能够是set、call、get、put等。

4 调用set、get、put、call的对象

是离它们最近的标签所决定的对象在调用它们,好比若是set在<Get></Get>这个范围内的话,那么这个set就是由getXxx方法返回的对象调用的。相似,若是set是在<Configure></Configure>这个范围的话,那么这个setXxx方法就是由根对象调用的。

5 put

调用put的对象必需要实现Map接口,也就是说,调用put的对象必须是一个key-value pair的map对象。

<Put name=xxx type=xxx>value</Put>

其中name/value就是key-value pair,而type用来指定value的类型。

6 call

<Call name=xxx>

    <Arg>value<Arg/>

    各类其它的标签

</Call>

在当前scope的对象的继承上调用xxx(value)函数,参数是value,由Arg指定,而后返回一个对象。而后调用这个对象的由“各类其它的标签”指定的函数。

7 <Arg>

指定函数的参数。

8 <New>

<New class=xxx>

    <Arg>value</Arg>

    各类其它标签

</New>

建立类xxx的新的对象,构造函数的参数为value,建立新的对象后,调用该对象的“各类其它标签”指定的方法。

9 <Ref>

<Ref refid=xxx></Ref>,返回id xxx指定的对象的引用,用来做为各类value值。

<Ref refid=xxx>

    各类其它标签

</Ref>

这种状况下,先返回id xxx指定的对象的引用,而后再调用该对象的“各类其它标签”指定的方法。

10 SystemProperty和Property

相似于get,获取property。注意,它们两个都是返回一个值。

例如<Property name="jetty.home" default="."/>,去获取jetty.home这个属性的值,而且返回,若是没有,就返回“.”。

这个是能够用于拼接路径的,好比

<set name="war"><Property name="jetty.home" default="."/>/webapps/SpringMVCTest.war</set>

其中“<Property name="jetty.home" default="."/>/webapps/SpringMVCTest.war”构成value,若是jetty.home返回“/home/chao/jetty-home”的话,整个value就应该是“/home/chao/jetty-home/webapps/SpringMVCTest.war”。

11 Array和Item


等价于<Array type="java.lang.String"> <Item>value0</Item> <Item><New class="java.lang.String"><Arg>value1</Arg></New></Item> </Array>
String[] a = new String[] { "value0", new String("value1") };

12 Map、Entry和Item

 


等价于<Map> <Entry> <Item>keyName</Item> <Item><New class="java.lang.String"><Arg>value1</Arg></New></Item> </Entry> </Map>
Map m = new HashMap(); m.put("keyName", new String("value1"));