设为首页 收藏本站
查看: 699|回复: 0

[经验分享] Jetty 配置文件语法

[复制链接]

尚未签到

发表于 2017-2-26 11:49:55 | 显示全部楼层 |阅读模式
  语法
configure.dtd
这个文档类型描述符指明了xml元素和java api之间的简单影射,jetty.xml配置文件的第一行必须引用这个dtd,如下:

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">

Java对象通过一连串<New>, <Set>, <Put> 和 <Call>元素来配置。下面的例子让你有个初步的了解:
<Set name="Test">value</Set> == obj.setTest("value");
<Put name="Test">value</Put> == obj.put("Test","value");
<Call name="test"><Arg>value</Arg></Call> == obj.test("value");
<New class="com.acme.MyStuff"><Arg/></New> == new com.acme.MyStuff();

最大努力地使值匹配方法中的参数,明确的类型也要指明。org.mortbay.util.XmlConfiguration类使用configure.dtd描述符来分析Jetty xml文件。

<Configure> 元素

这个根元素用来指定要配置的对象类:

<Configure class="org.mortbay.jetty.Server> . . . </Configure>

另外,如果对象已经存在并声明了一个id,那么他能在配置元素中被参考,如下:

<Configure id="Server" class="org.mortbay.jetty.Server">

配置元素包含 New , Set , Put , Call or Ref 元素。
<Set> 元素

这个元素影射一个对象set方法的调用。名称和可选属性用来选择set方法。如果名称是 xxx,那么setXxx被使用, 后者这个方法找不到。一个Set元素可以包含值文本或者值元素Call, New 和 SystemProperty。如果值类型没有定义,值会从空格截断。如果包含多值元素,在转化成指定类型之前,会作为字符串添加。一个Set附带一个类属性被作为一个静态set方法调用。



  • <Set name= "xyz" >  
  • . . .  
  • </Set>  

  <Set name="xyz">. . .</Set>
<Get> 元素

这个元素影射一个对象get方法的调用。属性名字用来选择一个get方法。如果名称是xxx,那么getXxx会被使用,或者找不到。一个Get元素可以包含Set、Put或者Call元素返回的对象。
 


  • <Get name= "xyz" >  
  •   <Set name="xyzMethod" ><New class = "org.mortbay.jetty.xyz" /></Set>  
  • </Get>  

  <Get name="xyz"><Set name="xyzMethod"><New class="org.mortbay.jetty.xyz"/></Set></Get>
A Get with a class attribute is treated as a static get method or field.
<Put> 元素

这个元素影射当前对象put方法的调用,这个对象必须应用了Map接口。属性名字用来作为put的键,可选类型属性用来确定值的类型。一个 Put 元素可以包含文本值或者值元素Call, New 和 SystemProperty. 如果没有指定类型,值将被在空格处截断。如果包含多值元素,在转化成指定类型之前被作为字符串看待。

<Put name="admin">admin</Put>

<Call> 元素

这个元素影射当前对象一个方法的任意调用,属性名字和Arg元素用来确定方法。一个Call元素可以包含一系列的Arg元素,跟随一系列作用在新对象上的Set、Put或者Call元素。

<Call name="test">
<Arg>value1</Arg>
<Set name="Test">Value2</Set>
</Call>

等价于:

Object o2 = o1.test("value1");
o2.setTest("value2");

一个带class属性的Call当作一个静态调用:

<Call class="com.acme.Foo" name="setString">
<Arg>somestring</Arg>
</Call>

等价于:

com.acme.Foo.setString("somestring");

<Arg> 元素

这个元素为Call元素定义了一个位置参数,可选类型属性用来确定值的类型。一个Arg元素可以包含文本值或者值元素Call, New 和 SystemProperty。 如果值类型没有指定,值会从空格处截断。如果是多值元素,在转化成特定类型之前,被当作字符串处理。

<Arg><Ref id="Server"/></Arg>
<Arg>./webapps</Arg>
<Arg>org/mortbay/jetty/webapp/webdefault.xml</Arg>
<Arg type="boolean">True</Arg>
<Arg type="boolean">False</Arg>

这里的Ref标签指向了一个以前指定了id参数的对象。
<New> 元素
这个元素生成一个使用Set、Put或者Arg元素作值的一个新对象。类属性决定了新对象的属性,包含的Arg元素用来做新对象构造器的值。
一个New元素可以包含一个惟一的id参数,以后可以用来引用它。一个New元素包含一系列Arg元素,跟随一系列作用在新对象上的Set, Put 和 Call 元素:


  • <New id= "myobject" class = "com.acme.MyClass" >  
  •   <Arg>value1</Arg><Set name="Test" >Value2</Set>  
  • </New>  
  • [code]  
  • 等价于:  
  • [code]  
  • Object o = new com.acme.MyClass( "value1" );  
  • o.setTest("value2" );  

  <New id="myobject" class="com.acme.MyClass"><Arg>value1</Arg><Set name="Test">Value2</Set></New>[code]等价于:[code]Object o = new com.acme.MyClass("value1");o.setTest("value2");
<Ref> 元素

这个元素引用以前产生的一个对象,一个Ref元素包含一系列作用在参考对象上的Set, Put 和 Call元素:


  • <Ref id= "myobject" />  
  •   <Set name="Test" >Value2</Set>  
  • </Ref>  

  <Ref id="myobject" /><Set name="Test">Value2</Set></Ref>
另外, Ref元素可以用来做 Arg 和 Set 元素的值:


  • <Set name= "someMethod" ><Ref id= "myobj" /></Set>  

  <Set name="someMethod"><Ref id="myobj"/></Set>
<Array> 元素

这个元素允许生成一个新的数组作为Set、 Put 或者 Arg 元素的值。属性类型决定了数组类型。


  • <Array type= "java.lang.String" >  
  •   <Item>value0</Item>  
  •   <Item><New class = "java.lang.String" ><Arg>value1</Arg></New></Item>  
  • </Array>  

  <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" )};  

  String[] a = new String[]{"value0", new String("value1")};
<Map> 元素
这个元素允许生成一个新的HashMap,使用键、值队:



  • <Map>  
  •   <Entry>  
  •    <Item>keyName</Item>  
  •    <Item><New class = "java.lang.String" ><Arg>value1</Arg></New></Item>  
  •   </Entry>  
  • </Map>  

  <Map><Entry><Item>keyName</Item><Item><New class="java.lang.String"><Arg>value1</Arg></New></Item></Entry></Map>
等价于:


  • java.util.Map map = new java.util.HashMap();  
  • map.put("keyName" , "value1" };  

  java.util.Map map = new java.util.HashMap();map.put("keyName", "value1"};
<Item> 元素
这个元素定义了一个Array或者Map条目元素的条目,可选的类型属性确定了值得类型。一个Item 元素可以包含文本值或者值元素Call、New和 SystemProperty.如果值类型没有指定,值将在空格处截断。如果是多值元素,在转化成特定类型之前被当作字符串看待。


  • <Item>  
  •   <New class = "org.mortbay.jetty.nio.SelectChannelConnector" >  
  •     <Set name="port" > 8080 </Set>  
  •     <Set name="maxIdleTime" > 30000 </Set>  
  •     <Set name="Acceptors" > 10 </Set>  
  • </New>  
  • </Item>  

  <Item><New class="org.mortbay.jetty.nio.SelectChannelConnector"><Set name="port">8080</Set><Set name="maxIdleTime">30000</Set><Set name="Acceptors">10</Set></New></Item>
<SystemProperty> 元素
这个元素允许JVM系统属性作为Set、Put或者Arg 元素的值。名称属性指明了属性名称,可选的默认参数提供了默认值
This element allows JVM System properties to be retrieved as part of the value of a Set, Put or Arg element. The name attribute specifies the property name and the optional default argument provides a default value.


<SystemProperty name="Test" default="value"/>

等价于:

System.getProperty("Test","value");

英文原文:  http://docs.codehaus.org/display/JETTY/Syntax+Reference

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-347421-1-1.html 上篇帖子: cdh3u0的jetty导致Error Reading IndexFile 下篇帖子: 谈谈jetty response模型
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表