blob: 541c1c2cf0f8a61337fd356df062589c1f3ae7a9 [file] [log] [blame]
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Chapter&nbsp;34.&nbsp;Reference Section</title><link rel="stylesheet" type="text/css" href="css/docbook.css"><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"><meta name="keywords" content="jetty, servlet, servlet-api, cometd, http, websocket, eclipse, maven, java, server, software"><link rel="home" href="index.html" title="Jetty : The Definitive Reference"><link rel="up" href="reference.html" title="Part&nbsp;V.&nbsp;Reference Guide"><link rel="prev" href="release-testing.html" title="Testing a Jetty Release"><link rel="next" href="jetty-xml-usage.html" title="Jetty XML Usage"><link xmlns:jfetch="java:org.eclipse.jetty.xslt.tools.JavaSourceFetchExtension" xmlns:fetch="java:org.eclipse.jetty.xslt.tools.SourceFetchExtension" xmlns:d="http://docbook.org/ns/docbook" xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" xmlns:xslthl="http://xslthl.sf.net" xmlns:gcse="http://www.google.com" xmlns:date="http://exslt.org/dates-and-times" rel="shortcut icon" href="images/favicon.ico"><script type="text/javascript" src="js/shCore.js"></script><script type="text/javascript" src="js/shBrushJava.js"></script><script type="text/javascript" src="js/shBrushXml.js"></script><script type="text/javascript" src="js/shBrushBash.js"></script><script type="text/javascript" src="js/shBrushJScript.js"></script><script type="text/javascript" src="js/shBrushSql.js"></script><script type="text/javascript" src="js/shBrushProperties.js"></script><script type="text/javascript" src="js/shBrushPlain.js"></script><link type="text/css" rel="stylesheet" href="css/shCore.css"><link type="text/css" rel="stylesheet" href="css/shThemeEclipse.css"><link type="text/css" rel="stylesheet" href="css/font-awesome.min.css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><table xmlns:jfetch="java:org.eclipse.jetty.xslt.tools.JavaSourceFetchExtension" xmlns:fetch="java:org.eclipse.jetty.xslt.tools.SourceFetchExtension" xmlns:d="http://docbook.org/ns/docbook" xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" xmlns:xslthl="http://xslthl.sf.net" xmlns:gcse="http://www.google.com" xmlns:date="http://exslt.org/dates-and-times"><tr><td style="width: 25%"><a href="http://www.eclipse.org/jetty"><img src="images/jetty-header-logo.png" alt="Jetty Logo"></a><br><span style="font-size: small">
Version: 9.3.0.v20150612</span></td><td style="width: 50%"><script type="text/javascript"> (function() {
var cx = '016459005284625897022:obd4lsai2ds';
var gcse = document.createElement('script');
gcse.type = 'text/javascript';
gcse.async = true;
gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') +
'//www.google.com/cse/cse.js?cx=' + cx;
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(gcse, s);
})();
</script><gcse:search></gcse:search></td></tr></table><div xmlns:jfetch="java:org.eclipse.jetty.xslt.tools.JavaSourceFetchExtension" xmlns:fetch="java:org.eclipse.jetty.xslt.tools.SourceFetchExtension" xmlns:d="http://docbook.org/ns/docbook" xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" xmlns:xslthl="http://xslthl.sf.net" xmlns:gcse="http://www.google.com" xmlns:date="http://exslt.org/dates-and-times" class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter&nbsp;34.&nbsp;Reference Section</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="release-testing.html"><i class="icon-chevron-left"></i> Previous</a>&nbsp;</td><th width="60%" align="center">Part&nbsp;V.&nbsp;Reference Guide<br><a accesskey="p" href="index.html"><i class="icon-home"></i> Home</a></th><td width="20%" align="right">&nbsp;<a accesskey="n" href="jetty-xml-usage.html">Next <i class="icon-chevron-right"></i></a></td></tr></table><hr></div><div xmlns:jfetch="java:org.eclipse.jetty.xslt.tools.JavaSourceFetchExtension" xmlns:fetch="java:org.eclipse.jetty.xslt.tools.SourceFetchExtension" xmlns:d="http://docbook.org/ns/docbook" xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" xmlns:xslthl="http://xslthl.sf.net" xmlns:gcse="http://www.google.com" xmlns:date="http://exslt.org/dates-and-times" class="jetty-callout"><h5 class="callout"><a href="http://www.webtide.com/">Contact the core Jetty developers at
<span class="website">www.webtide.com</span></a></h5><p>
private support for your internal/customer projects ... custom extensions and distributions ... versioned snapshots for indefinite support ...
scalability guidance for your apps and Ajax/Comet projects ... development services from 1 day to full product delivery
</p></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a name="reference-section"></a>Chapter&nbsp;34.&nbsp;Reference Section</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="reference-section.html#jetty-xml-syntax">Jetty XML Syntax</a></span></dt><dt><span class="section"><a href="jetty-xml-usage.html">Jetty XML Usage</a></span></dt><dt><span class="section"><a href="jetty-xml-config.html"><code class="filename">jetty.xml</code></a></span></dt><dt><span class="section"><a href="jetty-web-xml-config.html"><code class="filename">jetty-web.xml</code></a></span></dt><dt><span class="section"><a href="jetty-env-xml.html"><code class="filename">jetty-env.xml</code></a></span></dt><dt><span class="section"><a href="webdefault-xml.html"><code class="filename">webdefault.xml</code></a></span></dt><dt><span class="section"><a href="override-web-xml.html">Jetty <code class="filename">override-web.xml</code></a></span></dt></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="jetty-xml-syntax"></a>Jetty XML Syntax</h2></div></div></div><div class="toc"><dl><dt><span class="section"><a href="reference-section.html#basic-xml-configuration-file-eaxmple">Basic XML Configuration File Example</a></span></dt><dt><span class="section"><a href="reference-section.html#d0e24251">Overview</a></span></dt><dt><span class="section"><a href="reference-section.html#jetty-xml-configure">&lt;Configure&gt;</a></span></dt><dt><span class="section"><a href="reference-section.html#jetty-xml-set">&lt;Set&gt;</a></span></dt><dt><span class="section"><a href="reference-section.html#jetty-xml-get">&lt;Get&gt;</a></span></dt><dt><span class="section"><a href="reference-section.html#jetty-xml-put">&lt;Put&gt;</a></span></dt><dt><span class="section"><a href="reference-section.html#jetty-xml-call">&lt;Call&gt;</a></span></dt><dt><span class="section"><a href="reference-section.html#jetty-xml-arg">&lt;Arg&gt;</a></span></dt><dt><span class="section"><a href="reference-section.html#jetty-xml-new">&lt;New&gt;</a></span></dt><dt><span class="section"><a href="reference-section.html#jetty-xml-ref">&lt;Ref&gt;</a></span></dt><dt><span class="section"><a href="reference-section.html#jetty-xml-array">&lt;Array&gt;</a></span></dt><dt><span class="section"><a href="reference-section.html#jetty-xml-item">&lt;Item&gt;</a></span></dt><dt><span class="section"><a href="reference-section.html#jetty-xml-map">&lt;Map&gt;</a></span></dt><dt><span class="section"><a href="reference-section.html#jetty-xml-entry">&lt;Entry&gt;</a></span></dt><dt><span class="section"><a href="reference-section.html#jetty-xml-system-property">&lt;SystemProperty&gt;</a></span></dt><dt><span class="section"><a href="reference-section.html#jetty-xml-property">&lt;Property&gt;</a></span></dt></dl></div><p>The Jetty XML syntax is a straightforward mapping of XML elements to a
Java API so that POJOs can be instantiated and getters, setters, and methods
called. It is very similar to Inversion Of Control (IOC) or Dependency
Injection (DI) frameworks like Spring or Plexus (but it predates all of
them). Typically Jetty XML is used by <code class="filename">jetty.xml</code> to
configure a Jetty server or by a <code class="filename">context.xml</code> file to
configure a ContextHandler or subclass, but you can also use the mechanism
to configure arbitrary POJOs.</p><p>This page describes the basic syntax of Jetty XML configuration. See
<a class="link" href="jetty-xml-usage.html" title="Jetty XML Usage">Jetty XML Usage</a> for information on
how you can use and combine Jetty XML. See configuration files for specific
examples.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="basic-xml-configuration-file-eaxmple"></a>Basic XML Configuration File Example</h3></div></div></div><p>The following XML configuration file creates some Java objects and
sets some attributes:</p><div class="informalexample"><script type="syntaxhighlighter" class="brush: xml;toolbar: false">
<![CDATA[<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">
<Configure id="foo" class="com.acme.Foo">
<Set name="name">demo</Set>
<Set name="nested">
<New id="bar" class="com.acme.Bar">
<Arg>true</Arg>
<Set name="wibble">10</Set>
<Set name="wobble">xyz</Set>
<Set name="parent"><Ref refid="foo"/></Set>
<Call name="init">
<Arg>false</Arg>
</Call>
</New>
</Set>
<Ref refid="bar">
<Set name="wibble">20</Set>
<Get name="parent">
<Set name="name">demo2</Set>
</Get>
</Ref>
</Configure> ]]>
</script></div><p>The XML above is equivalent to the following Java code:</p><div class="informalexample"><script type="syntaxhighlighter" class="brush: java;toolbar: false">
<![CDATA[com.acme.Foo foo = new com.acme.Foo();
foo.setName("demo");
com.acme.Bar bar = new com.acme.Bar(true);
bar.setWibble(10);
bar.setWobble("xyz");
bar.setParent(foo);
bar.init(false);
foo.setNested(bar);
bar.setWibble(20);
bar.getParent().setName("demo2"); ]]>
</script></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="d0e24251"></a>Overview</h3></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="d0e24254"></a>Understanding DTD and Parsing</h4></div></div></div><p>The document type descriptor (<a class="link" href="http://git.eclipse.org/c/jetty/org.eclipse.jetty.project.git/tree/jetty-xml/src/main/resources/org/eclipse/jetty/xml/configure_9_0.dtd?h=release-9" target="_top">configure.dtd</a>)
describes all valid elements in a Jetty XML configuration file using the
Jetty IoC format. The first two lines of an XML must reference the DTD
to be used to validate the XML like:</p><script type="syntaxhighlighter" class="brush: xml;toolbar: false">
<![CDATA[
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://www.eclipse.org/jetty/configure_9_0.dtd">
...
]]>
</script><p>Typcically a good XML editor will fetch the DTD from the URL and
use it to give syntax highlighting and validation while a configuration
file is being edited. Some editors also allows DTD files to be locally
cached. The URL may point to configure.dtd if you want the latest
current version, or to a specific version like configure_9_0.dtd if you
want a particular validation feature set.</p><p>Files that conform to the configure.dtd format are processed in
Jetty by the <code class="code"><a class="link" href="http://download.eclipse.org/jetty/stable-9/apidocs/org/eclipse/jetty/xml/XmlConfiguration.html" target="_top">XmlConfiguration</a></code>
class which may also validate the XML (using a version of the DTD from
the classes jar file), but is by default run in a forgiving mode that
tries to work around validation failures.</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="d0e24272"></a>Jetty XML Configuration Scope</h4></div></div></div><p>The configuration of object instances with Jetty IoC XML is done
on a scoped basis, so that for any given XML element there is a
corresponding Object in scope and the nested XML elements apply to that.
The outer most scope is given by a Configure element and elements like
Call, New and Get establish new scopes. The following example uses the
name fields to explain the scope</p><script type="syntaxhighlighter" class="brush: xml;toolbar: false">
<![CDATA[
<Configure class="com.example.Foo">
<Set name="fieldOnFoo">value</Set>
<Set name="fieldOnFoo">
<New class="com.example.Bar">
<Set name=fieldOnBar>value</Set>
<Call name="methodOnBarWithNoArgs"/>
</New>
</Set>
<Call name="methodOnFoo">
<Arg>value for first arg of methodOnFoo</Arg>
<Arg><New class="com.example.Bar"/></Arg>
<Set name="fieldOnObjectReturnedByMethodOnFoo">value</Set>
<Call name="methodOnObjectReturnedByMethodOnFooWithNoArgs"/>
</Call>
</Configure>
]]>
</script></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="d0e24279"></a>Coercing Arguments to a Type</h4></div></div></div><p>When trying to match XML elements to java elements, Jetty
XmlConfiguration may need to coerces values to match method arguments.
By default it does so on a best effort basis, but you can also specify
explicit types with the <code class="literal">type</code> attribute. Supported
values for type are: String, Character, Short, Byte, Integer, Long,
Boolean, Float, Double, char, short, byte, int, long, boolean, float,
double, URL, InetAddress, InetAddrPort, void</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="d0e24287"></a>Referring to a Class</h4></div></div></div><p>If you do not specify the classname, Jetty assumes you are calling
the method on the object that is current in scope (eg the object of the
surrounding Configure, New or Get clause). If the class attribute is
specified to a fully-qualified class name, then it is either used to
create a new instance (Configure and New elements) or is used to access
a static (Call, Set or Get elements).</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="d0e24292"></a>Referring to an Object</h4></div></div></div><p>You can use the id attribute to store a reference to the current
object when first creating or referring to this object. You can then use
the <a class="link" href="reference-section.html#jetty-xml-ref" title="<Ref&gt;">Ref element</a> to reference the
object later. The id must be unique for each object you create.</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="d0e24300"></a>Attribute vs Element Style</h4></div></div></div><p>For XML elements that contain only other XML Elements, there is a
choice of using attributes or elements style. The following is an
example of attribute style:</p><script type="syntaxhighlighter" class="brush: plain;toolbar: false">
<![CDATA[ <Call id="result" class="org.example.SomeClass" name="someMethod" arg="value0,value1"/>]]>
</script><p>Attribute style has the benefit of brevity, but is limited by:
values can only be Strings; multivalued items can not contain ',';
values may not be subject to property expansion or other elements that
return values. Thus the more verbose element style is available and the
following is semantically equivalent to the attribute style
above:</p><script type="syntaxhighlighter" class="brush: plain;toolbar: false">
<![CDATA[ <Call>
<Id>result</Id>
<Class>org.example.SomeClass</Class>
<Name>someMethod</Name>
<Arg>value0</Arg>
<Arg>value1</Arg>
</Call>]]>
</script><p>Note that multivalued elements like Arg, must be repeated and may
not be comma separated like they are when provided as attributes. It is
possible to use a mix of styles and the following example shows a more
typical example that uses property expansion as the reason for element
style:</p><script type="syntaxhighlighter" class="brush: plain;toolbar: false">
<![CDATA[ <Call id="result" name="someMethod">
<Class><Property name="which.class">
<Default><Property name="default.class" default="org.example.SomeClass"/>
</Property></Class>
<Arg>value0</Arg>
<Arg>value1</Arg>
</Call>]]>
</script><p>Attributes may not be expressed as elements when their parent
element is one that contains data. Thus Arg, Item, Set, Put and Get
elements may not have their attributes expressed as elements.</p></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="jetty-xml-configure"></a>&lt;Configure&gt;</h3></div></div></div><p>This is the root element that specifies the class of object that is
to be configured. It is usually either the Server, in
<code class="code">jetty.xml</code>, or a WebAppContext in
<code class="code">jetty-web.xml</code>.</p><div class="informaltable"><table border="1"><colgroup><col><col><col></colgroup><thead><tr><th align="left">Attribute</th><th align="center">Required</th><th align="left">Description</th></tr></thead><tbody><tr><td>id</td><td>no</td><td><p>A reference to the object that was created. If you
define multiple <a class="link" href="reference-section.html#jetty-xml-configure" title="<Configure&gt;">Configure
element</a>s with the same id, they will be treated as one
object, even if they're in different files. You can use this to
break up configuration of an object (such as the Server) across
multiple files.</p></td></tr><tr><td>class</td><td>no</td><td>The fully qualified classname of the object to be
configured. Could be org.eclipse.jetty.server.Server,
org.eclipse.jetty.webapp.WebAppContext, a handler, etc.</td></tr></tbody></table></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="d0e24357"></a>Can Contain</h4></div></div></div><p><a class="link" href="reference-section.html#jetty-xml-set" title="<Set&gt;">Set element</a>, <a class="link" href="reference-section.html#jetty-xml-get" title="<Get&gt;">Get element</a>, <a class="link" href="reference-section.html#jetty-xml-put" title="<Put&gt;">Put element</a>, <a class="link" href="reference-section.html#jetty-xml-call" title="<Call&gt;">Call element</a>, <a class="link" href="reference-section.html#jetty-xml-new" title="<New&gt;">New element</a>, <a class="link" href="reference-section.html#jetty-xml-ref" title="<Ref&gt;">Ref element</a>, <a class="link" href="reference-section.html#jetty-xml-array" title="<Array&gt;">Array element</a>, <a class="link" href="reference-section.html#jetty-xml-map" title="<Map&gt;">Map element</a>, <a class="link" href="reference-section.html#jetty-xml-property" title="<Property&gt;">Property element</a></p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="d0e24388"></a>Examples</h4></div></div></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a name="d0e24391"></a>Basic Example</h5></div></div></div><div class="informalexample"><script type="syntaxhighlighter" class="brush: xml;toolbar: false">
<![CDATA[<Configure class="org.eclipse.jetty.server.Server">
<Set name="port">8080</Set>
</Configure> ]]>
</script></div><p>This is equivalent to:</p><div class="informalexample"><script type="syntaxhighlighter" class="brush: java;toolbar: false">
<![CDATA[org.eclipse.jetty.server.Server server = new org.eclipse.jetty.server.Server();
server.setPort(8080); ]]>
</script></div></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a name="d0e24402"></a>Using id to break up configuration of one object across
multiple files</h5></div></div></div><p>(etc/jetty.xml)</p><div class="informalexample"><script type="syntaxhighlighter" class="brush: xml;toolbar: false">
<![CDATA[<Configure id="Server" class="org.eclipse.jetty.server.Server">
<!-- basic configuration here -->
</Configure> ]]>
</script></div><p>(etc/jetty-logging.xml)</p><div class="informalexample"><script type="syntaxhighlighter" class="brush: xml;toolbar: false">
<![CDATA[<Configure id="Server" class="org.eclipse.jetty.server.Server">
<!-- assumes that you have the basic server configuration set up; this file only contains additional configuration for logging -->
</Configure> ]]>
</script></div><p>Then run the combined configuration using:</p><div class="screenexample"><pre class="screen">java -jar start.jar etc/jetty.xml jetty-logging.xml </pre></div></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="jetty-xml-set"></a>&lt;Set&gt;</h3></div></div></div><p>A Set element maps to a call to a setter method or field on the
current object. It can contain text and/or elements such as Call, New,
SystemProperty, etc., as values. The name and optional type attributes are
used to select the setter method. If you do not specify a value type,
white space is trimmed out of the value. If it contains multiple elements
as values, they are added as strings before being converted to any
specified type.</p><div class="informaltable"><table border="1"><colgroup><col><col><col></colgroup><thead><tr><th align="left">Attribute</th><th align="center">Required</th><th align="left">Description</th></tr></thead><tbody><tr><td>name</td><td>yes</td><td>the name of the setter method to call, or the field to set.
If the name given is xxx, then a setXxx method is used. If the
setXxx method cannot be found, then the xxx field is used.</td></tr><tr><td>type</td><td>no</td><td>the declared type of the argument. See also discussion of
type for Arg for how to define null and empty string
values.</td></tr><tr><td>class</td><td>no</td><td>if present, then this Set is treated as a static set method
invocation</td></tr></tbody></table></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="d0e24456"></a>Can Contain</h4></div></div></div><p>value text, <a class="link" href="reference-section.html#jetty-xml-get" title="<Get&gt;">Get element</a>,
<a class="link" href="reference-section.html#jetty-xml-call" title="<Call&gt;">Call element</a>, <a class="link" href="reference-section.html#jetty-xml-new" title="<New&gt;">New element</a>, <a class="link" href="reference-section.html#jetty-xml-ref" title="<Ref&gt;">Ref element</a>, <a class="link" href="reference-section.html#jetty-xml-array" title="<Array&gt;">Array element</a>, <a class="link" href="reference-section.html#jetty-xml-map" title="<Map&gt;">Map element</a>, <a class="link" href="reference-section.html#jetty-xml-system-property" title="<SystemProperty&gt;">System Property element</a>,
<a class="link" href="reference-section.html#jetty-xml-property" title="<Property&gt;">Property element</a></p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="d0e24485"></a>Examples</h4></div></div></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a name="d0e24488"></a>Basic Example</h5></div></div></div><div class="informalexample"><script type="syntaxhighlighter" class="brush: xml;toolbar: false">
<![CDATA[<Configure id="server" class="org.eclipse.jetty.server.Server">
<Set name="port">8080</Set>
</Configure> ]]>
</script></div></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a name="d0e24494"></a>Set via a System Property</h5></div></div></div><div class="informalexample"><script type="syntaxhighlighter" class="brush: xml;toolbar: false">
<![CDATA[<Configure id="server" class="org.eclipse.jetty.server.Server">
<Set name="port"><SystemProperty name="jetty.http.port" /></Set>
</Configure> ]]>
</script></div></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a name="d0e24500"></a>Creating a NewObject and Setting It on the Server</h5></div></div></div><div class="informalexample"><script type="syntaxhighlighter" class="brush: xml;toolbar: false">
<![CDATA[<Configure id="server" class="org.eclipse.jetty.server.Server">
<Set name="threadPool">
<New class="org.eclipse.jetty.util.thread.QueuedThreadPool">
<Set name="minThreads">10</Set>
<Set name="maxThreads">1000</Set>
</New>
</Set>
</Configure> ]]>
</script></div><p>This is equivalent to:</p><div class="informalexample"><script type="syntaxhighlighter" class="brush: java;toolbar: false">
<![CDATA[org.eclipse.jetty.server.Server server = new org.eclipse.jetty.server.Server();
org.eclipse.jetty.util.thread.QueuedThreadPool threadPool = new org.eclipse.jetty.util.thread.QueuedThreadPool();
threadPool.setMinThreads(10);
threadPool.setMaxThreads(1000);
server.setThreadPool(threadPool); ]]>
</script></div></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a name="d0e24511"></a>Invoking a Static Setter</h5></div></div></div><div class="informalexample"><script type="syntaxhighlighter" class="brush: xml;toolbar: false">
<![CDATA[<Configure id="server" class="org.eclipse.jetty.server.Server">
<Set class="org.eclipse.jetty.util.log.Log" name="logToParent">loggerName</Set>
</Configure"> ]]>
</script></div></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="jetty-xml-get"></a>&lt;Get&gt;</h3></div></div></div><p>A Get element maps to a call to a getter method or field on the
current object. It can contain nested elements such as Set, Put, Call,
etc.; these act on the object returned by the Get call.</p><div class="informaltable"><table border="1"><colgroup><col><col><col></colgroup><thead><tr><th align="left">Attribute</th><th align="center">Required</th><th align="left">Description</th></tr></thead><tbody><tr><td>name</td><td>yes</td><td>the name of the getter method to call, or the field to get.
If the name given is xxx, then a getXxx method is used. If the
getXxx method cannot be found, then the xxx field is used.</td></tr><tr><td>class</td><td>no</td><td>f present, then this Get is treated as a static getter or
field.</td></tr><tr><td>id</td><td>no</td><td>if present, then you can use this id to refer to the
returned object later.</td></tr></tbody></table></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="d0e24554"></a>Can Contain</h4></div></div></div><p><a class="link" href="reference-section.html#jetty-xml-set" title="<Set&gt;">Set element</a>, <a class="link" href="reference-section.html#jetty-xml-get" title="<Get&gt;">Get element</a>, <a class="link" href="reference-section.html#jetty-xml-put" title="<Put&gt;">Put element</a>, <a class="link" href="reference-section.html#jetty-xml-call" title="<Call&gt;">Call element</a>, <a class="link" href="reference-section.html#jetty-xml-new" title="<New&gt;">New element</a>, <a class="link" href="reference-section.html#jetty-xml-ref" title="<Ref&gt;">Ref element</a>, <a class="link" href="reference-section.html#jetty-xml-array" title="<Array&gt;">Array element</a>, <a class="link" href="reference-section.html#jetty-xml-map" title="<Map&gt;">Map element</a>, <a class="link" href="reference-section.html#jetty-xml-property" title="<Property&gt;">Property element</a></p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="d0e24585"></a>Examples</h4></div></div></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a name="d0e24588"></a>Basic Example</h5></div></div></div><p>This simple example doesn't do much on its own. You would
normally use this in conjunction with a &lt;Ref id="Logger"
/&gt;.</p><div class="informalexample"><script type="syntaxhighlighter" class="brush: xml;toolbar: false">
<![CDATA[<Configure id="server" class="org.eclipse.jetty.server.Server">
<Get id="Logger" class="org.eclipse.jetty.util.log.Log" name="log"/>
</Configure> ]]>
</script></div></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a name="d0e24596"></a>Invoking a Static Getter and Call Methods on the Returned
Object</h5></div></div></div><div class="informalexample"><script type="syntaxhighlighter" class="brush: xml;toolbar: false">
<![CDATA[<Configure id="server" class="org.eclipse.jetty.server.Server">
<Get class="java.lang.System" name="out">
<Call name="println">
<Arg>Server version is: <Get class="org.eclipse.jetty.server.Server" name="version"/></Arg>
</Call>
</Get>
</Configure> ]]>
</script></div></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="jetty-xml-put"></a>&lt;Put&gt;</h3></div></div></div><p>A Put element maps to a call to a put method on the current object,
which must implement the Map interface. It can contain text and/or
elements such as Call, New, SystemProperty, etc. as values. If you do not
specify a no value type, white space is trimmed out of the value. If it
contains multiple elements as values, they are added as strings before
being converted to any specified type.</p><div class="informaltable"><table border="1"><colgroup><col><col><col></colgroup><thead><tr><th align="left">Attribute</th><th align="center">Required</th><th align="left">Description</th></tr></thead><tbody><tr><td>name</td><td>yes</td><td>used as the put key</td></tr><tr><td>type</td><td>no</td><td>forces the type of the value. See also discussion of type
for Arg for how to define null and empty string values.</td></tr></tbody></table></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="d0e24632"></a>Can Contain</h4></div></div></div><p>value text , <a class="link" href="reference-section.html#jetty-xml-get" title="<Get&gt;">Get element</a>,
<a class="link" href="reference-section.html#jetty-xml-call" title="<Call&gt;">Call element</a>, <a class="link" href="reference-section.html#jetty-xml-new" title="<New&gt;">New element</a>, <a class="link" href="reference-section.html#jetty-xml-ref" title="<Ref&gt;">Ref element</a>, <a class="link" href="reference-section.html#jetty-xml-array" title="<Array&gt;">Array element</a>, <a class="link" href="reference-section.html#jetty-xml-map" title="<Map&gt;">Map element</a>, <a class="link" href="reference-section.html#jetty-xml-system-property" title="<SystemProperty&gt;">System Property element</a>,
<a class="link" href="reference-section.html#jetty-xml-property" title="<Property&gt;">Property element</a></p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="d0e24661"></a>Example</h4></div></div></div><div class="informalexample"><script type="syntaxhighlighter" class="brush: xml;toolbar: false">
<![CDATA[<Get name="someKindOfMap">
<Put name="keyName">objectValue</Put>
</Get> ]]>
</script></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="jetty-xml-call"></a>&lt;Call&gt;</h3></div></div></div><p>A Call element maps to an arbitrary call to a method on the current
object. It can contain a sequence of Arg elements followed by a sequence
of configuration elements, such as Set, Put, Call. The &lt;Arg&gt;s are
passed as arguments to the method; the sequence of configuration elements
act on the object returned by the original call.</p><div class="informaltable"><table border="1"><colgroup><col><col><col></colgroup><thead><tr><th align="left">Attribute</th><th align="center">Required</th><th align="left">Description</th></tr></thead><tbody><tr><td>name</td><td>yes</td><td>the name of the arbitrary method to call. The method called
will use the exact name you provide it.</td></tr><tr><td>class</td><td>no</td><td>if present, then this Call is treated as a static
method.</td></tr><tr><td>id</td><td>no</td><td>if present, you can use this id to refer to any object
returned by the call, for later use.</td></tr><tr><td>arg</td><td>no</td><td>comma separated list of arguments may be used for simple
string values rather than Arg elements</td></tr></tbody></table></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="d0e24711"></a>Can Contain</h4></div></div></div><p>Attributes as elements (Id, Name, Class) plus <a class="link" href="reference-section.html#jetty-xml-arg" title="<Arg&gt;">Arg element</a>, <a class="link" href="reference-section.html#jetty-xml-set" title="<Set&gt;">Set element</a>, <a class="link" href="reference-section.html#jetty-xml-get" title="<Get&gt;">Get element</a>, <a class="link" href="reference-section.html#jetty-xml-put" title="<Put&gt;">Put element</a>, <a class="link" href="reference-section.html#jetty-xml-call" title="<Call&gt;">Call element</a>, <a class="link" href="reference-section.html#jetty-xml-new" title="<New&gt;">New element</a>, <a class="link" href="reference-section.html#jetty-xml-ref" title="<Ref&gt;">Ref element</a>, <a class="link" href="reference-section.html#jetty-xml-array" title="<Array&gt;">Array element</a>, <a class="link" href="reference-section.html#jetty-xml-map" title="<Map&gt;">Map element</a>, <a class="link" href="reference-section.html#jetty-xml-property" title="<Property&gt;">Property element</a></p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="d0e24746"></a>Examples</h4></div></div></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a name="d0e24749"></a>Basic example</h5></div></div></div><div class="informalexample"><script type="syntaxhighlighter" class="brush: xml;toolbar: false">
<![CDATA[<Call name="doFoo">
<Arg>bar</Arg>
<Set name="test">1, 2, 3</Set>
</Call> ]]>
</script></div><p>This is equivalent to:</p><div class="informalexample"><script type="syntaxhighlighter" class="brush: java;toolbar: false">
<![CDATA[Object o2 = o1.doFoo("bar");
o2.setTest("1, 2, 3"); ]]>
</script></div></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a name="d0e24760"></a>Invoking a static method</h5></div></div></div><div class="informalexample"><script type="syntaxhighlighter" class="brush: xml;toolbar: false">
<![CDATA[<Call class="com.acme.Foo" name="setString">
<Arg>somestring</Arg>
</Call> ]]>
</script></div><p>which is equivalent to:</p><div class="informalexample"><script type="syntaxhighlighter" class="brush: java;toolbar: false">
<![CDATA[com.acme.Foo.setString("somestring"); ]]>
</script></div></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a name="d0e24771"></a>Invoking the Actual MethodInstead of Relying on Getter/Setter
Magic</h5></div></div></div><div class="informalexample"><script type="syntaxhighlighter" class="brush: xml;toolbar: false">
<![CDATA[<Configure id="Server" class="org.eclipse.jetty.server.Server">
<Call name="getPort" id="port" />
<Call class="com.acme.Environment" name="setPort">
<Arg>
<Ref refid="port"/>
</Arg>
</Call>
</Configure> ]]>
</script></div><p>which is equivalent to:</p><div class="informalexample"><script type="syntaxhighlighter" class="brush: java;toolbar: false">
<![CDATA[org.mortbay.jetty.Server server = new org.mortbay.jetty.Server();
com.acme.Environment.setPort( server.getPort() ); ]]>
</script></div></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="jetty-xml-arg"></a>&lt;Arg&gt;</h3></div></div></div><p>An Arg element can be an argument of either a method or a
constructor. Use it within <a class="xref" href="">???</a> and <a class="xref" href="">???</a>.</p><p>It can contain text and/or elements, such as Call, New,
SystemProperty, etc., as values. The optional type attribute can force the
type of the value. If you don't specify a type, white space is trimmed out
of the value. If it contains multiple elements as values, they are added
as strings before being converted to any specified type. Simple String
arguments can also be specified as a string separated arg attribute on the
parent element.</p><div class="informaltable"><table border="1"><colgroup><col><col><col></colgroup><thead><tr><th align="left">Attribute</th><th align="center">Required</th><th align="left">Description</th></tr></thead><tbody><tr><td>type</td><td>no</td><td>force the type of the argument. If you do not provide a
value for the element, if you use type of "String", the value will
be the empty string (""), otherwise it is null.</td></tr></tbody></table></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="d0e24811"></a>Can Contain</h4></div></div></div><p>value text, <a class="link" href="reference-section.html#jetty-xml-get" title="<Get&gt;">Get element</a>,
<a class="link" href="reference-section.html#jetty-xml-call" title="<Call&gt;">Call element</a>, <a class="link" href="reference-section.html#jetty-xml-new" title="<New&gt;">New element</a>, <a class="link" href="reference-section.html#jetty-xml-ref" title="<Ref&gt;">Ref element</a>, <a class="link" href="reference-section.html#jetty-xml-array" title="<Array&gt;">Array element</a>, <a class="link" href="reference-section.html#jetty-xml-map" title="<Map&gt;">Map element</a>, <a class="link" href="reference-section.html#jetty-xml-system-property" title="<SystemProperty&gt;">System Property element</a>,
<a class="link" href="reference-section.html#jetty-xml-property" title="<Property&gt;">Property element</a></p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="d0e24840"></a>Examples</h4></div></div></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a name="d0e24843"></a>Basic examples</h5></div></div></div><div class="informalexample"><script type="syntaxhighlighter" class="brush: xml;toolbar: false">
<![CDATA[<Arg>foo</Arg> <!-- String -->
<Arg>true</Arg> <!-- Boolean -->
<Arg>1</Arg> <!-- int, long, short, float, double -->
<Arg><Ref refid="foo" /></Arg> <!-- any object; reference a previously created object with id "foo", and pass it as a parameter -->
<Arg></Arg> <!-- null value -->
<Arg type="String"></Arg> <!-- empty string "" -> ]]>
</script></div></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a name="d0e24849"></a>Coercing Type</h5></div></div></div><p>This explicitly coerces the type to a boolean:</p><div class="informalexample"><script type="syntaxhighlighter" class="brush: xml;toolbar: false">
<![CDATA[<Arg type="boolean">False</Arg> ]]>
</script></div></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a name="d0e24857"></a>As a Parameter</h5></div></div></div><p>Here are a couple of examples of <a class="link" href="reference-section.html#jetty-xml-arg" title="<Arg&gt;">Arg element</a> being used as a parameter
to methods and to constructors:</p><div class="informalexample"><script type="syntaxhighlighter" class="brush: xml;toolbar: false">
<![CDATA[<Call class="com.acme.Environment" name="setFoo">
<Arg>
<New class="com.acme.Foo">
<Arg>bar</Arg>
</New>
</Arg>
</Call> ]]>
</script></div><p>This is equivalent to:</p><div class="informalexample"><script type="syntaxhighlighter" class="brush: java;toolbar: false">
<![CDATA[com.acme.Environment.setFoo(new com.acme.Foo("bar")); ]]>
</script></div><div class="informalexample"><script type="syntaxhighlighter" class="brush: xml;toolbar: false">
<![CDATA[<New class="com.acme.Baz">
<Arg>
<Call id="bar" class="com.acme.MyStaticObjectFactory" name="createObject">
<Arg>2</Arg>
</Call>
</Arg>
</New> ]]>
</script></div><p>This is equivalent to:</p><div class="informalexample"><script type="syntaxhighlighter" class="brush: java;toolbar: false">
<![CDATA[new com.acme.Baz(com.acme.MyStaticObjectFactory.createObject(2)); ]]>
</script></div></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="jetty-xml-new"></a>&lt;New&gt;</h3></div></div></div><p>Instantiates an object. Equivalent to new in Java, and allows the
creation of a new object. A New element can contain a sequence of <a class="link" href="reference-section.html#jetty-xml-arg" title="<Arg&gt;">Arg element</a>'s, followed by a sequence of
configuration elements (Set, Put, etc). <a class="link" href="reference-section.html#jetty-xml-arg" title="<Arg&gt;">Arg
element</a>'s are used to select a constructor for the object to be
created. The sequence of configuration elements then acts on the
newly-created object.</p><div class="informaltable"><table border="1"><colgroup><col><col><col></colgroup><thead><tr><th align="left">Attribute</th><th align="center">Required</th><th align="left">Description</th></tr></thead><tbody><tr><td>class</td><td>yes</td><td>fully qualified classname, which determines the type of the
new object that is instantiated.</td></tr><tr><td>id</td><td>no</td><td>gives a unique name to the object which can be referenced
later by Ref elements.</td></tr><tr><td>arg</td><td>no</td><td>comma separated list of arguments may be used for simple
string values rather than Arg elements</td></tr></tbody></table></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="d0e24924"></a>Can Contain</h4></div></div></div><p>Attributes as elements (Id, Class) plus <a class="link" href="reference-section.html#jetty-xml-arg" title="<Arg&gt;">Arg element</a>, <a class="link" href="reference-section.html#jetty-xml-set" title="<Set&gt;">Set element</a>, <a class="link" href="reference-section.html#jetty-xml-get" title="<Get&gt;">Get element</a>, <a class="link" href="reference-section.html#jetty-xml-put" title="<Put&gt;">Put element</a>, <a class="link" href="reference-section.html#jetty-xml-call" title="<Call&gt;">Call element</a>, <a class="link" href="reference-section.html#jetty-xml-new" title="<New&gt;">New element</a>, <a class="link" href="reference-section.html#jetty-xml-ref" title="<Ref&gt;">Ref element</a>, <a class="link" href="reference-section.html#jetty-xml-array" title="<Array&gt;">Array element</a>, <a class="link" href="reference-section.html#jetty-xml-map" title="<Map&gt;">Map element</a>, <a class="link" href="reference-section.html#jetty-xml-property" title="<Property&gt;">Property element</a></p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="d0e24959"></a>Examples</h4></div></div></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a name="d0e24962"></a>Basic example</h5></div></div></div><div class="informalexample"><script type="syntaxhighlighter" class="brush: xml;toolbar: false">
<![CDATA[<New class="com.acme.Foo">
<Arg>bar</Arg>
</New> ]]>
</script></div><p>which is equivalent to:</p><div class="informalexample"><script type="syntaxhighlighter" class="brush: java;toolbar: false">
<![CDATA[com.acme.Foo foo = new com.acme.Foo("bar"); ]]>
</script></div></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a name="d0e24973"></a>Instantiate with the Default Constructor</h5></div></div></div><div class="informalexample"><script type="syntaxhighlighter" class="brush: xml;toolbar: false">
<![CDATA[<New class="com.acme.Foo" /> ]]>
</script></div><p>which is equivalent to:</p><div class="informalexample"><script type="syntaxhighlighter" class="brush: java;toolbar: false">
<![CDATA[com.acme.Foo foo = new com.acme.Foo(); ]]>
</script></div></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a name="d0e24984"></a>Instantiate with Multiple Arguments, Then Configuring
Further</h5></div></div></div><div class="informalexample"><script type="syntaxhighlighter" class="brush: xml;toolbar: false">
<![CDATA[<New id="foo" class="com.acme.Foo">
<Arg>bar</Arg>
<Arg>baz</Arg>
<Set name="test">1, 2, 3</Set>
</New> ]]>
</script></div><p>which is equivalent to:</p><div class="informalexample"><script type="syntaxhighlighter" class="brush: java;toolbar: false">
<![CDATA[Object foo = new com.acme.Foo("bar", "baz");
foo.setTest("1, 2, 3");]]>
</script></div></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="jetty-xml-ref"></a>&lt;Ref&gt;</h3></div></div></div><p>A Ref element allows a previously created object to be referenced by
a unique id. It can contain a sequence of elements, such as Set or Put
which then act on the referenced object. You can also use a Ref element as
a value for other elements such as Set and Arg.</p><p>The Ref element provides convenience and eases readability. You can
usually achieve the effect of the Ref by nesting elements (method calls),
but this can get complicated very easily. The Ref element makes it
possible to refer to the same object if you're using it multiple times, or
passing it into multiple methods. It also makes it possible to split up
configuration across multiple files.</p><div class="informaltable"><table border="1"><colgroup><col><col><col></colgroup><thead><tr><th align="left">Attribute</th><th align="center">Required</th><th align="left">Description</th></tr></thead><tbody><tr><td>refid</td><td>yes</td><td>the unique identifier used to name a previously created
object.</td></tr></tbody></table></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="d0e25020"></a>Can Contain</h4></div></div></div><p><a class="link" href="reference-section.html#jetty-xml-set" title="<Set&gt;">Set element</a>, <a class="link" href="reference-section.html#jetty-xml-get" title="<Get&gt;">Get element</a>, <a class="link" href="reference-section.html#jetty-xml-put" title="<Put&gt;">Put element</a>, <a class="link" href="reference-section.html#jetty-xml-call" title="<Call&gt;">Call element</a>, <a class="link" href="reference-section.html#jetty-xml-new" title="<New&gt;">New element</a>, <a class="link" href="reference-section.html#jetty-xml-ref" title="<Ref&gt;">Ref element</a>, <a class="link" href="reference-section.html#jetty-xml-array" title="<Array&gt;">Array element</a>, <a class="link" href="reference-section.html#jetty-xml-map" title="<Map&gt;">Map element</a>, <a class="link" href="reference-section.html#jetty-xml-property" title="<Property&gt;">Property element</a></p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="d0e25051"></a>Examples</h4></div></div></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a name="d0e25054"></a>Basic example</h5></div></div></div><p>Use the referenced object as an argument to a method call or
constructor:</p><div class="informalexample"><script type="syntaxhighlighter" class="brush: xml;toolbar: false">
<![CDATA[<Get id="foo" name="xFoo" />
<Set name="test"><Ref refid="foo"/></Set> ]]>
</script></div><p>This is equivalent to:</p><div class="informalexample"><script type="syntaxhighlighter" class="brush: java;toolbar: false">
<![CDATA[foo = getXFoo();
setSomeMethod(foo); ]]>
</script></div></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a name="d0e25067"></a>Manipulating the Object Returned by Ref</h5></div></div></div><div class="informalexample"><script type="syntaxhighlighter" class="brush: xml;toolbar: false">
<![CDATA[<Get id="foo" name="xFoo" />
<Ref refid="foo">
<Set name="test">1, 2, 3</Set>
</Ref> ]]>
</script></div><p>This is equivalent to:</p><div class="informalexample"><script type="syntaxhighlighter" class="brush: java;toolbar: false">
<![CDATA[foo = getXFoo();
foo.setTest("1, 2, 3"); ]]>
</script></div></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a name="d0e25078"></a>Ref vs. Nested Elements</h5></div></div></div><p>Here is an example of the difference in syntax between using the
Ref element, and nesting method calls. They are exactly
equivalent:</p><div class="informalexample"><script type="syntaxhighlighter" class="brush: xml;toolbar: false">
<![CDATA[<!-- using Ref in conjunction with Get -->
<Configure id="Server" class="org.eclipse.jetty.server.Server">
<Get id="Logger" class="org.eclipse.jetty.util.log.Log" name="log"/>
<Ref refid="Logger">
<Set name="debugEnabled">true</Set>
</Ref>
</Configure>
<!-- calling the setter directly on the object returned by Get -->
<Configure id="Server" class="org.eclipse.jetty.server.Server">
<Get class="org.eclipse.jetty.util.log.Log" name="log">
<Set name="debugEnabled">true</Set>
</Get>
</Configure> ]]>
</script></div><p>Here is a more practical example, taken from the handler
configuration section in <code class="code"> etc/jetty.xml</code>:</p><div class="informalexample"><script type="syntaxhighlighter" class="brush: xml;toolbar: false">
<![CDATA[<Set name="handler">
<New id="Handlers" class="org.eclipse.jetty.server.handler.HandlerCollection">
<Set name="handlers">
<Array type="org.eclipse.jetty.server.Handler">
<Item>
<!-- create a new instance of a ContextHandlerCollection named "Contexts" -->
<New id="Contexts" class="org.eclipse.jetty.server.handler.ContextHandlerCollection"/>
</Item>
<Item>
<New id="DefaultHandler" class="org.eclipse.jetty.server.handler.DefaultHandler"/>
</Item>
<Item>
<!-- create a new instance of a RequestLogHandler named "RequestLog" -->
<New id="RequestLog" class="org.eclipse.jetty.server.handler.RequestLogHandler"/>
</Item>
</Array>
</Set>
</New>
</Set>
<Call name="addBean">
<Arg>
<New class="org.eclipse.jetty.deploy.ContextDeployer">
<!-- pass in the ContextHandlerCollection object ("Contexts") that was created earlier, as an argument -->
<Set name="contexts"><Ref refid="Contexts"/></Set>
</New>
</Arg>
</Call>
<!-- configure the RequestLogHandler object ("RequestLog") that we created earlier -->
<Ref refid="RequestLog">
....
</Ref> ]]>
</script></div></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="jetty-xml-array"></a>&lt;Array&gt;</h3></div></div></div><p>An Array element allows the creation of a new array.</p><div class="informaltable"><table border="1"><colgroup><col><col><col></colgroup><thead><tr><th align="left">Attribute</th><th align="center">Required</th><th align="left">Description</th></tr></thead><tbody><tr><td>type</td><td>no</td><td>specify what types of items the array can contain.</td></tr><tr><td>id</td><td>no</td><td>unique identifier you can use to refer to the array
later.</td></tr></tbody></table></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="d0e25124"></a>Can Contain</h4></div></div></div><p><a class="link" href="reference-section.html#jetty-xml-item" title="<Item&gt;">Item element</a></p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="d0e25131"></a>Example</h4></div></div></div><div class="informalexample"><script type="syntaxhighlighter" class="brush: xml;toolbar: false">
<![CDATA[<Array type="java.lang.String">
<Item>value0</Item>
<Item><New class="java.lang.String"><Arg>value1</Arg></New></Item>
</Array>]]>
</script></div><p>This is equivalent to:</p><div class="informalexample"><script type="syntaxhighlighter" class="brush: java;toolbar: false">
<![CDATA[String[] a = new String[] { "value0", new String("value1") }; ]]>
</script></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="jetty-xml-item"></a>&lt;Item&gt;</h3></div></div></div><p>An Item element defines an entry for Array and Map elements.</p><div class="informaltable"><table border="1"><colgroup><col><col><col></colgroup><thead><tr><th align="left">Attribute</th><th align="center">Required</th><th align="left">Description</th></tr></thead><tbody><tr><td>type</td><td>no</td><td>force the types of value.</td></tr><tr><td>id</td><td>no</td><td>unique identifier that you can use to refer to the array
later.</td></tr></tbody></table></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="d0e25172"></a>Can Contain</h4></div></div></div><p><a class="link" href="reference-section.html#jetty-xml-get" title="<Get&gt;">Get element</a>, <a class="link" href="reference-section.html#jetty-xml-call" title="<Call&gt;">Call element</a>, <a class="link" href="reference-section.html#jetty-xml-new" title="<New&gt;">New element</a>, <a class="link" href="reference-section.html#jetty-xml-ref" title="<Ref&gt;">Ref element</a>, <a class="link" href="reference-section.html#jetty-xml-array" title="<Array&gt;">Array element</a>, <a class="link" href="reference-section.html#jetty-xml-map" title="<Map&gt;">Map element</a>, <a class="link" href="reference-section.html#jetty-xml-system-property" title="<SystemProperty&gt;">System Property element</a>,
<a class="link" href="reference-section.html#jetty-xml-property" title="<Property&gt;">Property element</a></p></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="jetty-xml-map"></a>&lt;Map&gt;</h3></div></div></div><p>A Map element allows the creation of a new HashMap and to populate
it with (key, value) pairs.</p><div class="informaltable"><table border="1"><colgroup><col><col><col></colgroup><thead><tr><th align="left">Attribute</th><th align="center">Required</th><th align="left">Description</th></tr></thead><tbody><tr><td>id</td><td>no</td><td>unique identifier you can use to refer to the map
later.</td></tr></tbody></table></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="d0e25223"></a>Can Contain</h4></div></div></div><p><a class="link" href="reference-section.html#jetty-xml-entry" title="<Entry&gt;">Entry element</a></p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="d0e25229"></a>Example</h4></div></div></div><div class="informalexample"><script type="syntaxhighlighter" class="brush: xml;toolbar: false">
<![CDATA[<Map>
<Entry>
<Item>keyName</Item>
<Item><New class="java.lang.String"><Arg>value1</Arg></New></Item>
</Entry>
</Map> ]]>
</script></div><p>This is equivalent to:</p><div class="informalexample"><script type="syntaxhighlighter" class="brush: java;toolbar: false">
<![CDATA[Map m = new HashMap();
m.put("keyName", new String("value1")); ]]>
</script></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="jetty-xml-entry"></a>&lt;Entry&gt;</h3></div></div></div><p>An Entry element contains a key-value <a class="link" href="reference-section.html#jetty-xml-item" title="<Item&gt;">Item element</a> pair for a Map.</p><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="d0e25248"></a>Can Contain</h4></div></div></div><p><a class="link" href="reference-section.html#jetty-xml-item" title="<Item&gt;">Item element</a></p></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="jetty-xml-system-property"></a>&lt;SystemProperty&gt;</h3></div></div></div><p>A SystemProperty element gets the value of a JVM system property. It
can be used within elements that accept values, such as Set, Put,
Arg.</p><div class="informaltable"><table border="1"><colgroup><col><col><col></colgroup><thead><tr><th align="left">Attribute</th><th align="center">Required</th><th align="left">Description</th></tr></thead><tbody><tr><td>name</td><td>yes</td><td>property name</td></tr><tr><td>default</td><td>no</td><td>a default value as a fallback</td></tr><tr><td>id</td><td>no</td><td>unique identifier which you can use to refer to the array
later.</td></tr></tbody></table></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="d0e25291"></a>Can Contain</h4></div></div></div><p>Only attributes as Elements (Id, Name, Default).</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="d0e25296"></a>Example</h4></div></div></div><div class="informalexample"><script type="syntaxhighlighter" class="brush: xml;toolbar: false">
<![CDATA[<SystemProperty name="jetty.http.port" default="8080"/> ]]>
</script></div><p>That is equivalent to:</p><div class="informalexample"><script type="syntaxhighlighter" class="brush: java;toolbar: false">
<![CDATA[System.getProperty("jetty.http.port", "8080"); ]]>
</script></div><p>Both try to retrieve the value of jetty.http.port. If jetty.http.port is not
set, then 8080 is used.</p></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="jetty-xml-property"></a>&lt;Property&gt;</h3></div></div></div><p>A Property element allows arbitrary properties to be retrieved by
name. It can contain a sequence of elements, such as Set, Put, Call that
act on the retrieved object.</p><div class="informaltable"><table border="1"><colgroup><col><col><col></colgroup><thead><tr><th align="left">Attribute</th><th align="center">Required</th><th align="left">Description</th></tr></thead><tbody><tr><td>name</td><td>yes</td><td>property name</td></tr><tr><td>default</td><td>no</td><td>a default value as a fallback</td></tr><tr><td>id</td><td>no</td><td>unique identifier which you can use to refer to the array
later.</td></tr></tbody></table></div><p>The <code class="code">name</code> attribute may be a comma separated list of
property names, with the first property name being the "official" name,
and the others names being old, deprecated property names that are kept
for backward compatibility. A warning log is issued when deprecated
property names are used. The <code class="code">default</code> attribute contains the
value to use in case none of the property names is found.</p><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="d0e25354"></a>Can Contain</h4></div></div></div><p>The attributes may be expressed as contained Elements (Id, Name,
Default).</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="d0e25359"></a>Example</h4></div></div></div><div class="informalexample"><script type="syntaxhighlighter" class="brush: xml;toolbar: false">
<![CDATA[<Property name="Server">
<Call id="jdbcIdMgr" name="getAttribute">
<Arg>jdbcIdMgr</Arg>
</Call>
</Property> ]]>
</script></div></div></div></div></div><script type="text/javascript">
SyntaxHighlighter.all()
</script><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="release-testing.html"><i class="icon-chevron-left"></i> Previous</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="reference.html"><i class="icon-chevron-up"></i> Top</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="jetty-xml-usage.html">Next <i class="icon-chevron-right"></i></a></td></tr><tr><td width="40%" align="left" valign="top">Testing a Jetty Release&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html"><i class="icon-home"></i> Home</a></td><td width="40%" align="right" valign="top">&nbsp;Jetty XML Usage</td></tr></table></div><p xmlns:jfetch="java:org.eclipse.jetty.xslt.tools.JavaSourceFetchExtension" xmlns:fetch="java:org.eclipse.jetty.xslt.tools.SourceFetchExtension" xmlns:d="http://docbook.org/ns/docbook" xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" xmlns:xslthl="http://xslthl.sf.net" xmlns:gcse="http://www.google.com" xmlns:date="http://exslt.org/dates-and-times"><div class="jetty-callout">
See an error or something missing?
<span class="callout"><a href="http://github.com/jetty-project/jetty-documentation">Contribute to this documentation at
<span class="website"><i class="icon-github"></i> Github!</span></a></span><span style="float: right"><i>(Generated: 2015-06-15T13:18:56-05:00)</i></span></div></p><script xmlns:jfetch="java:org.eclipse.jetty.xslt.tools.JavaSourceFetchExtension" xmlns:fetch="java:org.eclipse.jetty.xslt.tools.SourceFetchExtension" xmlns:d="http://docbook.org/ns/docbook" xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" xmlns:xslthl="http://xslthl.sf.net" xmlns:gcse="http://www.google.com" xmlns:date="http://exslt.org/dates-and-times" type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-1149868-7']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script></body></html>