@ -765,7 +765,7 @@ public class Main {
@@ -765,7 +765,7 @@ public class Main {
Actually making use of a <interfacename>GroovyObjectCustomizer</interfacename>
is easy if you are using the Spring 2.0 namespace support.
</para>
<programlisting><lineannotation><!-- define the <interfacename>GroovyObjectCustomizer</interfacename> just like any other bean --></lineannotation>
<programlistinglanguage="xml"><lineannotation><!-- define the <interfacename>GroovyObjectCustomizer</interfacename> just like any other bean --></lineannotation>
]]><lineannotation><!-- ... and plug it into the desired Groovy bean via the '<literal>customizer-ref</literal>' attribute --></lineannotation><![CDATA[
@ -776,7 +776,7 @@ public class Main {
@@ -776,7 +776,7 @@ public class Main {
If you are not using the Spring 2.0 namespace support, you can still
use the <interfacename>GroovyObjectCustomizer</interfacename> functionality.
@ -546,7 +546,7 @@ public class ExampleListener implements MessageListener {
@@ -546,7 +546,7 @@ public class ExampleListener implements MessageListener {
<para>Find below an example of how to define and configure one of the message listener
containers that ships with Spring (in this case the
]]><lineannotation><!-- and this is the message listener container --></lineannotation><![CDATA[
@ -566,7 +566,7 @@ public class ExampleListener implements MessageListener {
@@ -566,7 +566,7 @@ public class ExampleListener implements MessageListener {
<interfacename>MessageListener</interfacename> interface, but also provides
the message handling method with access to the JMS <interfacename>Session</interfacename>
from which the <interfacename>Message</interfacename> was received.</para>
public class JmxTestBean implements IJmxTestBean {
@ -98,7 +98,7 @@ public class JmxTestBean implements IJmxTestBean {
@@ -98,7 +98,7 @@ public class JmxTestBean implements IJmxTestBean {
<classname>MBeanExporter</classname> class in your configuration file and
pass in the bean as shown below:</para>
<programlisting><![CDATA[<beans>
<programlistinglanguage="xml"><![CDATA[<beans>
]]><lineannotation><!-- this bean must <emphasisrole="bold">not</emphasis> be lazily initialized if the exporting is to happen --></lineannotation><![CDATA[
@ -644,7 +644,7 @@ public class AnnotationTestBean implements IJmxTestBean {
@@ -644,7 +644,7 @@ public class AnnotationTestBean implements IJmxTestBean {
<para>As you can see little has changed, other than the basic syntax of
@ -910,7 +910,7 @@ public class AnnotationTestBean implements IJmxTestBean {
@@ -910,7 +910,7 @@ public class AnnotationTestBean implements IJmxTestBean {
<classname>ObjectName</classname> which results in a configuration like
]]><lineannotation><!-- notice how no <literal>'beans'</literal> are explicitly configured here --></lineannotation><![CDATA[
@ -975,7 +975,7 @@ public class AnnotationTestBean implements IJmxTestBean {
@@ -975,7 +975,7 @@ public class AnnotationTestBean implements IJmxTestBean {
interface for the <classname>JmxTestBean</classname> class that you saw
@ -995,7 +995,7 @@ public class AnnotationTestBean implements IJmxTestBean {
@@ -995,7 +995,7 @@ public class AnnotationTestBean implements IJmxTestBean {
shows how to configure Spring JMX to use this interface as the
@ -1055,7 +1055,7 @@ public class AnnotationTestBean implements IJmxTestBean {
@@ -1055,7 +1055,7 @@ public class AnnotationTestBean implements IJmxTestBean {
as attributes and operations. The code below shows a sample
@ -1120,7 +1120,7 @@ public class AnnotationTestBean implements IJmxTestBean {
@@ -1120,7 +1120,7 @@ public class AnnotationTestBean implements IJmxTestBean {
<para>The code below shows a sample configuration for the
@ -1174,7 +1174,7 @@ public class AnnotationTestBean implements IJmxTestBean {
@@ -1174,7 +1174,7 @@ public class AnnotationTestBean implements IJmxTestBean {
@ -1208,7 +1208,7 @@ public class AnnotationTestBean implements IJmxTestBean {
@@ -1208,7 +1208,7 @@ public class AnnotationTestBean implements IJmxTestBean {
following bean would be: <emphasis>com.foo:type=MyClass,name=myBean</emphasis>.
@ -1225,7 +1225,7 @@ public class AnnotationTestBean implements IJmxTestBean {
@@ -1225,7 +1225,7 @@ public class AnnotationTestBean implements IJmxTestBean {
'<literal>context</literal>' namespace in Spring 2.5. Rather than defining an
<classname>MBeanExporter</classname> bean, provide this single element:</para>
<para>You can provide a reference to a particular MBean server if
necessary, and the <literal>defaultDomain</literal> attribute
@ -1237,7 +1237,7 @@ public class AnnotationTestBean implements IJmxTestBean {
@@ -1237,7 +1237,7 @@ public class AnnotationTestBean implements IJmxTestBean {
<para>Do not use interface-based AOP proxies in combination with autodetection of
@ -1266,7 +1266,7 @@ public class AnnotationTestBean implements IJmxTestBean {
@@ -1266,7 +1266,7 @@ public class AnnotationTestBean implements IJmxTestBean {
<classname>JMXConnectorServer</classname> use the following
<para>By default <literal>ConnectorServerFactoryBean</literal> creates a
<classname>JMXConnectorServer</classname> bound to
@ -1283,7 +1283,7 @@ public class AnnotationTestBean implements IJmxTestBean {
@@ -1283,7 +1283,7 @@ public class AnnotationTestBean implements IJmxTestBean {
<interfacename>MBeanServer</interfacename> use the <literal>serviceUrl</literal>
and <classname>ObjectName</classname> properties respectively:</para>
@ -1298,7 +1298,7 @@ public class AnnotationTestBean implements IJmxTestBean {
@@ -1298,7 +1298,7 @@ public class AnnotationTestBean implements IJmxTestBean {
<classname>ConnectorServerFactoryBean</classname> when creating a
@ -1319,7 +1319,7 @@ public class AnnotationTestBean implements IJmxTestBean {
@@ -1319,7 +1319,7 @@ public class AnnotationTestBean implements IJmxTestBean {
RMI registry. If not, you can easily start a registry using the
@ -1332,7 +1332,7 @@ public class AnnotationTestBean implements IJmxTestBean {
@@ -1332,7 +1332,7 @@ public class AnnotationTestBean implements IJmxTestBean {
<classname>MBeanServerConnectionFactoryBean</classname> as shown
@ -1349,7 +1349,7 @@ public class AnnotationTestBean implements IJmxTestBean {
@@ -1349,7 +1349,7 @@ public class AnnotationTestBean implements IJmxTestBean {
of protocols like SOAP, Hessian, Burlap over simple HTTP or SSL and
@ -1369,7 +1369,7 @@ public class AnnotationTestBean implements IJmxTestBean {
@@ -1369,7 +1369,7 @@ public class AnnotationTestBean implements IJmxTestBean {
@ -1391,7 +1391,7 @@ public class AnnotationTestBean implements IJmxTestBean {
@@ -1391,7 +1391,7 @@ public class AnnotationTestBean implements IJmxTestBean {
pointing to a remote <interfacename>MBeanServer</interfacename> to cater for
@ -1429,7 +1429,7 @@ public class AnnotationTestBean implements IJmxTestBean {
@@ -1429,7 +1429,7 @@ public class AnnotationTestBean implements IJmxTestBean {
would like to be informed (via a <classname>Notification</classname>)
each and every time an attribute of a target MBean changes.</para>
@ -101,7 +101,7 @@ public class SimpleOrderManager implements OrderManager {
@@ -101,7 +101,7 @@ public class SimpleOrderManager implements OrderManager {
}]]></programlisting>
<para>Find below the bean definitions for the above code:</para>
@ -126,7 +126,7 @@ public class SimpleOrderManager implements OrderManager {
@@ -126,7 +126,7 @@ public class SimpleOrderManager implements OrderManager {
<interfacename>JavaMailSender</interfacename> so that we are able to use the JavaMail
@ -199,7 +199,7 @@ public class SimpleOrderManager implements OrderManager {
@@ -199,7 +199,7 @@ public class SimpleOrderManager implements OrderManager {
which shields you from having to use the verbose JavaMail API. Using
the <classname>MimeMessageHelper</classname> it is pretty easy to
create a <classname>MimeMessage</classname>:</para>
<programlisting><lineannotation>// of course you would use DI in any real-world cases</lineannotation><![CDATA[
<programlistinglangauge="java"><lineannotation>// of course you would use DI in any real-world cases</lineannotation><![CDATA[
JavaMailSenderImpl sender = new JavaMailSenderImpl();
@ -371,7 +371,7 @@ public class SimpleRegistrationService implements RegistrationService {
@@ -371,7 +371,7 @@ public class SimpleRegistrationService implements RegistrationService {
<para>The best way to illustrate the usage of this annotation is to
show an example:</para>
<programlisting><![CDATA[public class SimpleMovieLister {
<programlistinglanguage="java"><![CDATA[public class SimpleMovieLister {
]]><lineannotation>// the <classname>SimpleMovieLister</classname> has a dependency on the <interfacename>MovieFinder</interfacename></lineannotation><![CDATA[
]]><lineannotation><!-- whoops, no MovieFinder is set (and this property is <interfacename>@Required</interfacename>) --></lineannotation><![CDATA[
public void insertAccount(Account account) throws RemoteException;
public List getAccounts(String name) throws RemoteException;
}]]></programlisting>
<programlisting><lineannotation>// the implementation doing nothing at the moment</lineannotation><![CDATA[
<programlistinglanguage="java"><lineannotation>// the implementation doing nothing at the moment</lineannotation><![CDATA[
public class AccountServiceImpl implements AccountService {
public void insertAccount(Account acc) {
@ -110,11 +110,11 @@ public class AccountServiceImpl implements AccountService {
@@ -110,11 +110,11 @@ public class AccountServiceImpl implements AccountService {
exposing of any non-RMI services via RMI invokers.
</para>
<para>Of course, we first have to set up our service in the Spring container:</para>
@ -138,7 +138,7 @@ public class AccountServiceImpl implements AccountService {
@@ -138,7 +138,7 @@ public class AccountServiceImpl implements AccountService {
<title>Linking in the service at the client</title>
<para>Our client is a simple object using the <interfacename>AccountService</interfacename>
to manage accounts:</para>
<programlisting><![CDATA[public class SimpleObject {
<programlistinglanguage="java"><![CDATA[public class SimpleObject {
private AccountService accountService;
@ -148,7 +148,7 @@ public class AccountServiceImpl implements AccountService {
@@ -148,7 +148,7 @@ public class AccountServiceImpl implements AccountService {
}]]></programlisting>
<para>To link in the service on the client, we'll create a separate Spring container,
containing the simple object and the service linking configuration bits:</para>
@ -176,7 +176,7 @@ public class AccountServiceImpl implements AccountService {
@@ -176,7 +176,7 @@ public class AccountServiceImpl implements AccountService {
from Spring Web MVC usage, you can easily wire up such a servlet exposing
your services. First we'll have to create a new servlet in your application
(this an excerpt from <filename>'web.xml'</filename>):</para>
@ -203,7 +203,7 @@ public class AccountServiceImpl implements AccountService {
@@ -203,7 +203,7 @@ public class AccountServiceImpl implements AccountService {
<title>Exposing your beans by using the <classname>HessianServiceExporter</classname></title>
<para>In the newly created application context called <literal>remoting-servlet.xml</literal>,
we'll create a <classname>HessianServiceExporter</classname> exporting your services:</para>
]]><lineannotation><!-- any additional properties, maybe a DAO? --></lineannotation><![CDATA[
</bean>
@ -219,7 +219,7 @@ public class AccountServiceImpl implements AccountService {
@@ -219,7 +219,7 @@ public class AccountServiceImpl implements AccountService {
</para>
<para>Alternatively, create a <classname>HessianServiceExporter</classname> in your
root application context (e.g. in <filename>'WEB-INF/applicationContext.xml'</filename>):</para>
@ -227,7 +227,7 @@ public class AccountServiceImpl implements AccountService {
@@ -227,7 +227,7 @@ public class AccountServiceImpl implements AccountService {
in <filename>'web.xml'</filename>, with the same end result: The exporter
getting mapped to the request path <literal>/remoting/AccountService</literal>.
Note that the servlet name needs to match the bean name of the target exporter.</para>
@ -245,7 +245,7 @@ public class AccountServiceImpl implements AccountService {
@@ -245,7 +245,7 @@ public class AccountServiceImpl implements AccountService {
a separate bean factory or application context and mention the following beans
where the <classname>SimpleObject</classname> is using the
<interfacename>AccountService</interfacename> to manage accounts:</para>
@ -271,7 +271,7 @@ public class AccountServiceImpl implements AccountService {
@@ -271,7 +271,7 @@ public class AccountServiceImpl implements AccountService {
features, for example. Usually, you don't use per-user security credentials here, but
rather shared credentials defined at the <literal>Hessian/BurlapProxyFactoryBean</literal> level
(similar to a JDBC <interfacename>DataSource</interfacename>).</para>
@ -315,7 +315,7 @@ public class AccountServiceImpl implements AccountService {
@@ -315,7 +315,7 @@ public class AccountServiceImpl implements AccountService {
<para>To expose the <literal>AccountService</literal> (mentioned above) within a
Spring Web MVC <classname>DispatcherServlet</classname>, the following configuration
needs to be in place in the dispatcher's application context:</para>
@ -325,14 +325,14 @@ public class AccountServiceImpl implements AccountService {
@@ -325,14 +325,14 @@ public class AccountServiceImpl implements AccountService {
as explained in the section on Hessian.</para>
<para>Alternatively, create an <classname>HttpInvokerServiceExporter</classname> in your
root application context (e.g. in <filename>'WEB-INF/applicationContext.xml'</filename>):</para>
@ -349,7 +349,7 @@ public class AccountServiceImpl implements AccountService {
@@ -349,7 +349,7 @@ public class AccountServiceImpl implements AccountService {
do it when using Hessian or Burlap. Using a proxy, Spring will be able to
translate your calls to HTTP POST requests to the URL pointing to the exported
@ -358,7 +358,7 @@ public class AccountServiceImpl implements AccountService {
@@ -358,7 +358,7 @@ public class AccountServiceImpl implements AccountService {
By default, the <classname>HttpInvokerProxy</classname> uses the J2SE HTTP functionality, but
you can also use the Commons <classname>HttpClient</classname> by setting the
@ -404,7 +404,7 @@ public class AccountServiceImpl implements AccountService {
@@ -404,7 +404,7 @@ public class AccountServiceImpl implements AccountService {
<interfacename>AccountService</interfacename> we extend Spring's
<classname>ServletEndpointSupport</classname> class and implement our business
logic here, usually delegating the call to the business layer.</para>
* JAX-RPC compliant RemoteAccountService implementation that simply delegates
* to the AccountService implementation in the root web application context.
*
@ -455,7 +455,7 @@ public class AccountServiceEndpoint extends ServletEndpointSupport implements Re
@@ -455,7 +455,7 @@ public class AccountServiceEndpoint extends ServletEndpointSupport implements Re
in the previous section. You will see that Spring has great support for web services
requiring little coding efforts - most of the setup is done in the Spring configuration
@ -470,13 +470,13 @@ public class AccountServiceEndpoint extends ServletEndpointSupport implements Re
@@ -470,13 +470,13 @@ public class AccountServiceEndpoint extends ServletEndpointSupport implements Re
</para>
<para>Accessing the web service is now very easy as we have a bean factory for it that will expose it
as <literal>RemoteAccountService</literal> interface. We can wire this up in Spring:</para>
<para>From the client code we can access the web service just as if it
was a normal class, except that it throws <exceptionname>RemoteException</exceptionname>.</para>
<programlisting><![CDATA[public class AccountClientImpl {
<programlistinglanguage="java"><![CDATA[public class AccountClientImpl {
private RemoteAccountService service;
@ -498,14 +498,14 @@ public class AccountServiceEndpoint extends ServletEndpointSupport implements Re
@@ -498,14 +498,14 @@ public class AccountServiceEndpoint extends ServletEndpointSupport implements Re
Spring supports automatic conversion to its corresponding unchecked
<exceptionname>RemoteException</exceptionname>. This requires that we provide a non-RMI
<para>Where <literal>serviceInterface</literal> is changed to our non RMI interface. Our RMI
interface is now defined using the property <literal>portInterface</literal>. Our client
code can now avoid handling <exceptionname>java.rmi.RemoteException</exceptionname>:</para>
<programlisting><![CDATA[public class AccountClientImpl {
<programlistinglanguage="java"><![CDATA[public class AccountClientImpl {
private AccountService service;
@ -538,7 +538,7 @@ public class AccountServiceEndpoint extends ServletEndpointSupport implements Re
@@ -538,7 +538,7 @@ public class AccountServiceEndpoint extends ServletEndpointSupport implements Re
</note>
<para>We will use Axis to register bean mappings on the client side. To do this we need to
register the bean mappings programmatically:</para>
<programlisting><![CDATA[public class AxisPortProxyFactoryBean extends JaxRpcPortProxyFactoryBean {
<programlistinglanguage="java"><![CDATA[public class AxisPortProxyFactoryBean extends JaxRpcPortProxyFactoryBean {
@ -564,7 +564,7 @@ public class AccountServiceEndpoint extends ServletEndpointSupport implements Re
@@ -564,7 +564,7 @@ public class AccountServiceEndpoint extends ServletEndpointSupport implements Re
The <interfacename>Handler</interfacename> is a callback interface. There is a convenience
base class provided in <filenameclass="libraryfile">jaxrpc.jar</filename>, namely
<classname>javax.rpc.xml.handler.GenericHandler</classname> that we will extend:</para>
<programlisting><![CDATA[public class AccountHandler extends GenericHandler {
<programlistinglanguage="java"><![CDATA[public class AccountHandler extends GenericHandler {
public QName[] getHeaders() {
return null;
@ -590,7 +590,7 @@ public class AccountServiceEndpoint extends ServletEndpointSupport implements Re
@@ -590,7 +590,7 @@ public class AccountServiceEndpoint extends ServletEndpointSupport implements Re
use the programmatic approach. However Spring has made it very easy for us to do this as we can
override the <methodname>postProcessJaxRpcService(..)</methodname> method that is designed for
this:</para>
<programlisting><![CDATA[public class AccountHandlerJaxRpcPortProxyFactoryBean extends JaxRpcPortProxyFactoryBean {
<programlistinglanguage="java"><![CDATA[public class AccountHandlerJaxRpcPortProxyFactoryBean extends JaxRpcPortProxyFactoryBean {
QName port = new QName(this.getNamespaceUri(), this.getPortName());
@ -601,7 +601,7 @@ public class AccountServiceEndpoint extends ServletEndpointSupport implements Re
@@ -601,7 +601,7 @@ public class AccountServiceEndpoint extends ServletEndpointSupport implements Re
}]]></programlisting>
<para>The last thing we must remember to do is to change the Spring configuration to use our
@ -615,7 +615,7 @@ public class AccountServiceEndpoint extends ServletEndpointSupport implements Re
@@ -615,7 +615,7 @@ public class AccountServiceEndpoint extends ServletEndpointSupport implements Re
logic here, usually delegating the call to the business layer.
We'll simply use Spring 2.5's <literal>@Autowired</literal>
annotation for expressing such dependencies on Spring-managed beans.</para>
* JAX-WS compliant AccountService implementation that simply delegates
* to the AccountService implementation in the root web application context.
*
@ -669,7 +669,7 @@ public class AccountServiceEndpoint extends SpringBeanAutowiringSupport {
@@ -669,7 +669,7 @@ public class AccountServiceEndpoint extends SpringBeanAutowiringSupport {
Of course, annotation-driven injection through <literal>@Autowired</literal>
@ -684,7 +684,7 @@ public class AccountServiceEndpoint extends SpringBeanAutowiringSupport {
@@ -684,7 +684,7 @@ public class AccountServiceEndpoint extends SpringBeanAutowiringSupport {
This means that the endpoint implementation may look like as follows,
without any superclass declared - and Spring's <literal>@Autowired</literal>
configuration annotation still being honored:</para>
public class SimpleCheckingAccountService implements CheckingAccountService {
@ -845,7 +845,7 @@ public class SimpleCheckingAccountService implements CheckingAccountService {
@@ -845,7 +845,7 @@ public class SimpleCheckingAccountService implements CheckingAccountService {
}]]></programlisting>
<para>This configuration file contains the JMS-infrastructure beans that are shared on both
@ -865,7 +865,7 @@ public class SimpleCheckingAccountService implements CheckingAccountService {
@@ -865,7 +865,7 @@ public class SimpleCheckingAccountService implements CheckingAccountService {
<title>Server-side configuration</title>
<para>On the server, you just need to expose the service object using the
@ -887,7 +887,7 @@ public class SimpleCheckingAccountService implements CheckingAccountService {
@@ -887,7 +887,7 @@ public class SimpleCheckingAccountService implements CheckingAccountService {
@ -172,7 +172,7 @@ public class MyNamespaceHandler extends NamespaceHandlerSupport {
@@ -172,7 +172,7 @@ public class MyNamespaceHandler extends NamespaceHandlerSupport {
responsible for parsing <emphasis>one</emphasis> distinct top-level XML element defined in the
schema. In the parser, we'll have access to the XML element (and thus its subelements too)
so that we can parse our custom XML content, as can be seen in the following example:</para>
@ -258,7 +258,7 @@ public class SimpleDateFormatBeanDefinitionParser extends AbstractSingleBeanDefi
@@ -258,7 +258,7 @@ public class SimpleDateFormatBeanDefinitionParser extends AbstractSingleBeanDefi
using one of the 'custom' extensions that Spring provides straight out of the box. Find below
an example of using the custom <literal><dateformat/></literal> element developed in the
previous steps in a Spring XML configuration file.</para>
@ -378,7 +378,7 @@ public class ComponentFactoryBean implements FactoryBean {
@@ -378,7 +378,7 @@ public class ComponentFactoryBean implements FactoryBean {
Spring plumbing. If we stick to <linklinkend="extensible-xml-introduction">the steps described
previously</link>, we'll start off by creating the XSD schema to define the structure of
@ -399,7 +399,7 @@ public class ComponentFactoryBean implements FactoryBean {
@@ -399,7 +399,7 @@ public class ComponentFactoryBean implements FactoryBean {
</xsd:schema>
]]></programlisting>
<para>We'll then create a custom <interfacename>NamespaceHandler</interfacename>.</para>
@ -412,7 +412,7 @@ public class ComponentNamespaceHandler extends NamespaceHandlerSupport {
@@ -412,7 +412,7 @@ public class ComponentNamespaceHandler extends NamespaceHandlerSupport {
<para>Next up is the custom <interfacename>BeanDefinitionParser</interfacename>. Remember
that what we are creating is a <interfacename>BeanDefinition</interfacename> describing
a <classname>ComponentFactoryBean</classname>.</para>
@ -524,7 +524,7 @@ public class JCacheNamespaceHandler extends NamespaceHandlerSupport {
@@ -524,7 +524,7 @@ public class JCacheNamespaceHandler extends NamespaceHandlerSupport {
<para>Next, the parser. Note that in this case, because we are going to be parsing an XML
attribute, we write a <interfacename>BeanDefinitionDecorator</interfacename> rather than a
using the <ulinkurl="http://static.springframework.org/spring/docs/2.5.x/api/org/springframework/beans/factory/config/FieldRetrievingFactoryBean.html#setStaticField(java.lang.String)"><literal>staticField</literal></ulink>
@ -274,7 +274,7 @@ public class Client {
@@ -274,7 +274,7 @@ public class Client {
<propertyname="propertyPath"value="spouse.age"/>
</bean>]]></programlisting>
<para>In this example, a path is evaluated against an inner bean:</para>
<programlisting><lineannotation><!-- will result in 12, which is the value of property 'age' of the inner bean --></lineannotation><![CDATA[
<programlistinglanguage="xml"><lineannotation><!-- will result in 12, which is the value of property 'age' of the inner bean --></lineannotation><![CDATA[
@ -285,14 +285,14 @@ public class Client {
@@ -285,14 +285,14 @@ public class Client {
<propertyname="propertyPath"value="age"/>
</bean>]]></programlisting>
<para>There is also a shortcut form, where the bean name is the property path.</para>
<programlisting><lineannotation><!-- will result in 10, which is the value of property 'age' of bean 'person' --></lineannotation><![CDATA[
<programlistinglanguage="xml"><lineannotation><!-- will result in 10, which is the value of property 'age' of bean 'person' --></lineannotation><![CDATA[
<programlisting><lineannotation><!-- creates a <classname>java.util.Properties</classname> instance with values loaded from the supplied location --></lineannotation><![CDATA[
<programlistinglanguage="xml"><lineannotation><!-- creates a <classname>java.util.Properties</classname> instance with values loaded from the supplied location --></lineannotation><![CDATA[
@ -316,13 +316,13 @@ public class Client {
@@ -316,13 +316,13 @@ public class Client {
the supplied <linklinkend="resources"><interfacename>Resource</interfacename></link> location).
</para>
<para>After...</para>
<programlisting><lineannotation><!-- creates a <classname>java.util.Properties</classname> instance with values loaded from the supplied location --></lineannotation><![CDATA[
<programlistinglanguage="xml"><lineannotation><!-- creates a <classname>java.util.Properties</classname> instance with values loaded from the supplied location --></lineannotation><![CDATA[
<programlisting><lineannotation><!-- creates a <classname>java.util.List</classname> instance with values loaded from the supplied <literal>'sourceList'</literal> --></lineannotation><![CDATA[
<programlistinglanguage="xml"><lineannotation><!-- creates a <classname>java.util.List</classname> instance with values loaded from the supplied <literal>'sourceList'</literal> --></lineannotation><![CDATA[
@ -339,7 +339,7 @@ public class Client {
@@ -339,7 +339,7 @@ public class Client {
with values taken from the supplied <literal>'sourceList'</literal>.
</para>
<para>After...</para>
<programlisting><lineannotation><!-- creates a <classname>java.util.List</classname> instance with values loaded from the supplied <literal>'sourceList'</literal> --></lineannotation><![CDATA[
<programlistinglanguage="xml"><lineannotation><!-- creates a <classname>java.util.List</classname> instance with values loaded from the supplied <literal>'sourceList'</literal> --></lineannotation><![CDATA[
<util:listid="emails">
<value>pechorin@hero.org</value>
<value>raskolnikov@slums.org</value>
@ -351,7 +351,7 @@ public class Client {
@@ -351,7 +351,7 @@ public class Client {
attribute on the <literal><util:list/></literal> element. For example, if we
really need a <classname>java.util.LinkedList</classname> to be instantiated, we could
<programlisting><lineannotation><!-- creates a <classname>java.util.Map</classname> instance with values loaded from the supplied <literal>'sourceMap'</literal> --></lineannotation><![CDATA[
<programlistinglanguage="xml"><lineannotation><!-- creates a <classname>java.util.Map</classname> instance with values loaded from the supplied <literal>'sourceMap'</literal> --></lineannotation><![CDATA[
@ -384,7 +384,7 @@ public class Client {
@@ -384,7 +384,7 @@ public class Client {
with key-value pairs taken from the supplied <literal>'sourceMap'</literal>.
</para>
<para>After...</para>
<programlisting><lineannotation><!-- creates a <classname>java.util.Map</classname> instance with values loaded from the supplied <literal>'sourceMap'</literal> --></lineannotation><![CDATA[
<programlistinglanguage="xml"><lineannotation><!-- creates a <classname>java.util.Map</classname> instance with values loaded from the supplied <literal>'sourceMap'</literal> --></lineannotation><![CDATA[
<programlisting><lineannotation><!-- creates a <classname>java.util.Set</classname> instance with values loaded from the supplied <literal>'sourceSet'</literal> --></lineannotation><![CDATA[
<programlistinglanguage="xml"><lineannotation><!-- creates a <classname>java.util.Set</classname> instance with values loaded from the supplied <literal>'sourceSet'</literal> --></lineannotation><![CDATA[
@ -429,7 +429,7 @@ public class Client {
@@ -429,7 +429,7 @@ public class Client {
with values taken from the supplied <literal>'sourceSet'</literal>.
</para>
<para>After...</para>
<programlisting><lineannotation><!-- creates a <classname>java.util.Set</classname> instance with values loaded from the supplied <literal>'sourceSet'</literal> --></lineannotation><![CDATA[
<programlistinglanguage="xml"><lineannotation><!-- creates a <classname>java.util.Set</classname> instance with values loaded from the supplied <literal>'sourceSet'</literal> --></lineannotation><![CDATA[
<util:setid="emails">
<value>pechorin@hero.org</value>
<value>raskolnikov@slums.org</value>
@ -441,7 +441,7 @@ public class Client {
@@ -441,7 +441,7 @@ public class Client {
attribute on the <literal><util:set/></literal> element. For example, if we
really need a <classname>java.util.TreeSet</classname> to be instantiated, we could