1、Jetty服务配置文件 首先让我们回顾一下jetty的启动。命令“ java -jar start.jar etc/jetty.xml” 中指定的文件 etc/jetty.xml 就是我们本章讨论的主要对象,我们称这种文件叫“服务配置文件”。下文中有时候我们说jetty.xml配置文件并不是特指这个文件而是通指“服务配置文件”。 Jetty其实提供一个IOC/DI(反转控制和依赖注射)容器,jetty.xml配置文件就是这个容器的配置文件,和Jetty本身服务没有直接关系,你甚至可以独立使用该组件。由次可见Jetty组件化设计发挥到了极致,组件之间也没
2、有多少依赖性。相信熟悉springframework的朋友都知道它是 IOC领域的佼佼者之一。有趣的是虽然Jetty的IOC容器实现只是在内部使用,但它却是在springframework之前就存在了。Jetty的IOC容器实现代码非常少,只涉及到两个类: · org.mortbay.xml.XmlConfiguration · org.mortbay.xml.XmlParser 其本质是解析服务配置文件的组件为我们提供一个动态调用Java代码的工具,Jetty利用这个工具实现所谓的IOC容器配置Server对象和相关组件。如果我们手写这些jetty.xml配
3、置对应的Java代码的话,其实就是嵌入式使用Jetty的方法,这里也体现了Jetty设计精妙之处。
在本章节中我们先展示下Jetty默认的jetty.xml文件,让大家对它有关大概的了解;然后详细介绍jetty xml Configuration的语法;最后我们使用org.mortbay.xml.XmlConfiguration编写写测试用例来更深入的了解jetty.xml和jetty启动配置过程。
4.1 jetty.xml 示例剖析
6、
7、
9、
11、
13、m>
15、w>
18、"org.mortbay.jetty.deployer.ContextDeployer">
19、
20、 configuration files. It does not support hot deploy or -->
23、lt="."/>/webapps 24、l>
25、
27、
30、t name="retainDays">90 32、 33、存在的对象进行配置,反之创建一个class属性指定的类对象,同时以id为key保存在上下文环境中。
(其实所谓的上下文环境 就是java.util.HashMap 34、e>
指定ID属性后,通过命令java -jar start.jar etc/jetty.xml etc/jetty-ssl.xml 启动多个配置文件时,这些配置文件都会对同一Server对象进行配置。
这段xml对应的java代码是
org.mortbay.jetty.Server server = new org.mortbay.jetty.Server(); server.setPort(8080);
35、x方法,如果setXxx方法不存在就会直接设置xxx属性字段。
如果标签内容是普通文本,那么它会尽量尝试转型,如setXxx(int xxx)就会转成相应的int行。
属性
name: 对象的属性名称
可包含对象
不同文本, Call, New and SystemProperty,Ref 标签
普通文本也可以和其他四个标签混合使用,所得的值是字符串相加的结果。
示例
36、 37、如果getXxx方法不存在,那么就直接访问xxx字段。
属性
id: 如果设置id属性,那么get获得的对象将以id值为key保存在 上下文环境
name:目标对象的属性名。
class:如果指定该属性,则调用该类上的静态的get方法或者字段。
可包含对象
Set, Put 和 Call
get所取得的对象将作为这3个标签的目标对象。
示例
38、ure>
等价Java代码:
//
foo.Bar bar = new foo.Bar();
x = bar.getXxx();
env.put("xid",x);//env 为上下文环境 对象
39、>
40、数
type: 可选;如果设置一个类型,那么会进行类型检查。
可包含对象
普通 文本, Call , New , SystemProperty 标签
普通文本也可以和其他三个标签混合使用,所得的值是字符串相加的结果。
这些内容或者标签所产生、返回的对象作为put(Object key,Object value)方法的value参数
示例
42、"org.mortbay.jetty.Server ">
44、选;如果指定该值,那么会强制该参数对象的类型
可包含对象
普通文本 , Call , New , SystemProperty,Ref
普通文本也可以和其他四个标签混合使用,所得的值是字符串相加的结果。
示例
45、g>
46、便是New标签所新建的对象。
Arg标签用来确定使用哪个构造方法。
示例
47、外一个用法是,在标签 48、ew>
49、存在 上下文环境中 。
可包含对象
Item标签
示例
50、tty.webapp.JettyWebXmlConfiguration






