Author: jruzzi
Date: Tue Jul 26 14:51:24 2005
New Revision: 225404
URL: http://svn.apache.org/viewcvs?rev=225404&view=rev
Log:
updated tutorial
Added:
webservices/muse/trunk/src/site/content/xdocs/dev_guide/client.xml
webservices/muse/trunk/src/site/content/xdocs/dev_guide/debug.xml
webservices/muse/trunk/src/site/content/xdocs/dev_guide/deploy.xml
webservices/muse/trunk/src/site/content/xdocs/dev_guide/wsdl.xml
webservices/muse/trunk/src/site/content/xdocs/dev_guide/wsdl_tool.xml
Added: webservices/muse/trunk/src/site/content/xdocs/dev_guide/client.xml
URL:
http://svn.apache.org/viewcvs/webservices/muse/trunk/src/site/content/xdocs/dev_guide/client.xml?rev=225404&view=auto
==============================================================================
--- webservices/muse/trunk/src/site/content/xdocs/dev_guide/client.xml (added)
+++ webservices/muse/trunk/src/site/content/xdocs/dev_guide/client.xml Tue Jul
26 14:51:24 2005
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V2.0//EN"
+ "http://forrest.apache.org/dtd/document-v20.dtd">
+<document>
+ <header>
+ <title>SOAP Client</title>
+ </header>
+ <body>
+ <section id="intro">
+ <title>Introduction</title>
+ <p>MUSE includes a lightweight SOAP client that is used
to test your services. The client is invoked using an Ant script, which is
located in
+ <code>INSTALL_DIR/template/soapclient.xml</code>.
Request and response messages are viewed in the Ant output. This section
explains how to use the client and
+ how to build request SOAP messages for the client.</p>
+ </section>
+ <section>
+ <title>SOAP Files</title>
+ <p>The client reads a <code>.soap</code> file which
contains the SOAP envelope to be sent. Examples of SOAP files are located in
+ <code>INSTALL_DIR/examples/filesystem/requests/</code>.
Each file is named appropriately based on the operation it contains. Use these
files as models when
+ creating your own .soap files. Make sure you modify the
WS-Addressing header for the resource id to match the entry that is in the JNDI
+ configuration file and the resource id number for the
instance you would like to invoke. This has to do with the home's
implementation of <code>getInstance()</code>
+ and allows you to decide which instances are valid for
sending requests. </p>
+ </section>
+ <section>
+ <title>Running the Client</title>
+ <p>To invoke the script:</p>
+ <ol>
+ <li>Make sure your WS Resource is deployed.</li>
+ <li>open a command prompt and change
directories to <code>INSTALL_DIR/template/soapclient.xml</code>.</li>
+ <li>Run:
+ <source>ant -f soapclient.xml sendRequest
-Durl=http://localhost:8080/muse/services/<em>your_service</em>
-Dxml=./requests/Subscribe_updateMountPointProp.soap</source>
+ <p>Where <em>your_service</em>
represents your WS Resource endpoint name, and the script name should be the
name (including the path) of your .soap file.
+ </p>
+ </li>
+ </ol>
+ <note>You can add an entry to
<code>build.properties</code> for <code>url</code> which will alleviate the need
+ to specify it on the command line.</note>
+ </section>
+ </body>
+</document>
Added: webservices/muse/trunk/src/site/content/xdocs/dev_guide/debug.xml
URL:
http://svn.apache.org/viewcvs/webservices/muse/trunk/src/site/content/xdocs/dev_guide/debug.xml?rev=225404&view=auto
==============================================================================
--- webservices/muse/trunk/src/site/content/xdocs/dev_guide/debug.xml (added)
+++ webservices/muse/trunk/src/site/content/xdocs/dev_guide/debug.xml Tue Jul
26 14:51:24 2005
@@ -0,0 +1,34 @@
+<?xml version="1.0"?>
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V2.0//EN"
+ "http://forrest.apache.org/dtd/document-v20.dtd">
+<document>
+ <header>
+ <title>Logging</title>
+ </header>
+ <body>
+ <section>
+ <title>Introduction</title>
+ <p>MUSE uses the Apache Commons Logging Framework with
Log4j as the underlying logging system. You can configure Log4j using the
log4j.properties
+ file. This includes changing log levels or where the
output is emitted (e.g. stdout, log file, etc...). The properties file is
located in the MUSE Web application in
+ the WEB-INF/classes directory.
+ </p>
+ </section>
+ <section>
+ <title>Changing Log Levels</title>
+ <p>Log4j uses the following log levels: DEBUG, INFO,
WARN, ERROR, and FATAL. By default, MUSE is configured to emit INFO messages.
To see more
+ detailed log messages, you must change the log level.
The following example assumes Tomcat.</p>
+ <p>To change the logging level:</p>
+ <ol>
+ <li>Using a text editor, open the
log4j.properties file located in the WEB-INF/classes directory of the deployed
MUSE Web application.</li>
+ <li>Change the log level associated with the
<code>log4j.category.org.apache.ws</code> package. For example:<source>
+log4j.category.org.apache.ws=DEBUG</source>
+ </li>
+ <li>Save the log4j.properties file.</li>
+ <li>Restart Tomcat.
+ <note>Log messages are displayed in Tomcat's
standard output. If you are not using Tomcat, you may need to configure your
Web container to include the output
+ in its standard output.</note>
+ </li>
+ </ol>
+ </section>
+ </body>
+</document>
Added: webservices/muse/trunk/src/site/content/xdocs/dev_guide/deploy.xml
URL:
http://svn.apache.org/viewcvs/webservices/muse/trunk/src/site/content/xdocs/dev_guide/deploy.xml?rev=225404&view=auto
==============================================================================
--- webservices/muse/trunk/src/site/content/xdocs/dev_guide/deploy.xml (added)
+++ webservices/muse/trunk/src/site/content/xdocs/dev_guide/deploy.xml Tue Jul
26 14:51:24 2005
@@ -0,0 +1,130 @@
+<?xml version="1.0"?>
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V2.0//EN"
+ "http://forrest.apache.org/dtd/document-v20.dtd">
+<document>
+ <header>
+ <title>Deploy the service to the MUSE Web Application</title>
+ </header>
+ <body>
+ <section id="intro">
+ <title>Introduction</title>
+ <p>The quickest way to deploy your WS Resource is to
use the generated build scripts. The scripts compile and delploy your WS
+ Resource to the MUSE Web application, which is an
Apache-Axis Web application. This section describes how to use the
+ generated build scripts and also how the script works
so you can build your own scripts.</p>
+ </section>
+ <section>
+ <title>Using the generated build scripts</title>
+ <p>The Wsdl2Java tool generates an Ant build script
that is used to compile and deploy your WS Resource. The script is located in
the
+ output directory under the subdirectory for you WS
Resource (e.g., <code>generated/</code>
+ <em>
+ <code>service_name</code>
+ </em>).</p>
+ <p>To compile and deploy using the Ant script</p>
+ <ol>
+ <li>In your output directory, edit
build.properties and modify the <code>muse.webapp.dir</code>. If you are using
+ Tomcat and have <code>CATALINA_HOME</code> set,
you do not need to modify this property.</li>
+ <li>From a command prompt, change directories
to <code>generated/</code>
+ <em>
+ <code>service_name</code>
+ </em>
+ </li>
+ <li>Run:</li>
+ </ol>
+ <source><![CDATA[
+ ant compile deploy ]]></source>
+ <p>Start Tomcat and verify that the service is deployed
by going to
+ <a
href="http://localhost:8080/muse/servlet/AxisServlet">http://localhost:8080/muse/servlet/AxisServlet</a>
+ </p>
+ </section>
+ <section id="steps">
+ <title>Manually Deploying your Service</title>
+ <p>In this section we will describe how to manually
deploy your service. We will describe each step in the process.</p>
+ <ol>
+ <li>
+ <strong>Copy your WSDL file.</strong>
+ <p>Your WSDL file needs to be copied to
an appropriate location in the webapp. We recommend you put it in the
+ <code>muse/WEB-INF/classes/wsdl</code>
directory. This allows Axis to reference it from the classpath and avoids the
need to
+ hard-code a location on your file
system. This location is used when registering the service in the
+ <code>server-config.wsdd</code> file.
+ </p>
+ </li>
+ <li>
+ <strong>Copy your classes.</strong>
+ <p>You will need to copy any .class
files, generated by Wsdl2Java or hand written, to the
<code>muse/WEB-INF/classes/</code> directory so that your service
+ can be created by Axis and MUSE.</p>
+ </li>
+ <li>
+ <strong>Update the jndi-config.xml
file.</strong>
+ <p>The jndi-config.xml contains
information about your service, resource, home and resource identifier. This
information is necessary for
+ MUSE to create your home and handle
requests for your service. It will setup the in-memory JNDI context for your
classes.
+ Here is the entry that was used for the
FileSystem example:</p>
+ <source><![CDATA[ <service
name="filesystem">
+ <resource name="home" type="example.filesystem.FileSystemHome">
+ <resourceParams>
+ <parameter>
+ <name>serviceClassName</name>
+ <value>example.filesystem.FileSystemService</value>
+ </parameter>
+ <parameter>
+ <name>resourceClassName</name>
+ <value>example.filesystem.FileSystemResource</value>
+ </parameter>
+ <parameter>
+ <name>wsdlTargetNamespace</name>
+ <value>http://ws.apache.org/resource/example/filesystem</value>
+ </parameter>
+ <parameter>
+ <name>resourceIdentifierReferenceParameterName</name>
+
<value>{http://ws.apache.org/resource/example/filesystem}ResourceIdentifier</value>
+ </parameter>
+ </resourceParams>
+ </resource>
+ </service>]]></source>
+ <p>The<code> name</code> attribute is a
unique name in the config file to denote your service in JNDI. The resource
"name" attribute is used for locating your home
+ instance, and is named
<code>home</code>. Notice <code>serviceClassName</code> points to the clasname
for the service class. The same is said for the
+ <code>resourceClassName</code>. The
<code>wsdlTargetNamespace </code> is the target namespace from your WSDL.
+ </p>
+ <p>The
<code>resourceIdentifierReferenceParameterName</code> represents the name of
the WS-Addressing-header that is used to
+ extract a unique resource identifier to
lookup a specific WS resource instance. This value should be a QName that
includes the local
+ reference parameter name in the format
<em>
+ <code>{target
namespace}qualified name of a reference parameter</code>
+ </em>. If you omit
+ this entry, it is assumed that the
service is a <strong>
+ <code>SINGLETON</code>
+ </strong> service and no
resource id is expected in the
+ WS-Addressing headers.
+ </p>
+ </li>
+ <li>
+ <strong>Update the server-config.wsdd
file</strong>
+ <p>The <code>server-config.wsdd</code>
file is the configuration file for the Axis SOAP engine,
+ which is bundled with MUSE. This file
is located in the <code>muse/WEB-INF/</code> directory.
+ See the <a
href="ext:ws.apache.org/axis">Axis</a> documentation for complete instructions
about <code>server-config.wsdd</code>
+ </p>
+ <p>The file contains a deployment entry
for each Web service. For example, the FileSystem service example is:
+ </p>
+ <source><![CDATA[ <service
name="filesystem" provider="java:WSRF" style="document" use="literal">
+ <wsdlFile>/wsdl/FileSystem.wsdl</wsdlFile>
+ <requestFlow>
+ <handler type="java:org.apache.axis.handlers.JAXRPCHandler">
+ <parameter name="className"
value="org.apache.axis.message.addressing.handler.AxisServerSideAddressingHandler"/>
+ <parameter name="referencePropertyNames" value="*"/>
+ </handler>
+ </requestFlow>
+ </service>]]></source>
+ <p>The service <code>name</code>
attribute is the endpoint name and should be the same as the port's
<code>name</code> attribute
+ from your WSDL file. This will ensure
people consuming your WSDL will be able to invoke your service.
+ </p>
+ <p>Notice the entry for
<code>wsdlFile</code> which points to the <code>/wsdl/FileSystem.wsdl</code>.
+ This translates to the wsdl directory
under the <code>WEB-INF/classes</code> directory.
+ </p>
+ <p>The last part is the
<code>requestFlow</code>. This xml fragment is necessary to ensure the
+ requests are routed through the
WS-Addressing handler. This is static and should
+ always be present. We did not define
it globally in case there were other services
+ defined which will not use
WS-Addressing.
+ </p>
+ </li>
+ </ol>
+ </section>
+ </body>
+</document>
Added: webservices/muse/trunk/src/site/content/xdocs/dev_guide/wsdl.xml
URL:
http://svn.apache.org/viewcvs/webservices/muse/trunk/src/site/content/xdocs/dev_guide/wsdl.xml?rev=225404&view=auto
==============================================================================
--- webservices/muse/trunk/src/site/content/xdocs/dev_guide/wsdl.xml (added)
+++ webservices/muse/trunk/src/site/content/xdocs/dev_guide/wsdl.xml Tue Jul 26
14:51:24 2005
@@ -0,0 +1,99 @@
+<?xml version="1.0"?>
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V2.0//EN"
+ "http://forrest.apache.org/dtd/document-v20.dtd">
+<document>
+ <header>
+ <title>Composing a MUWS WSDL</title>
+ </header>
+ <body>
+ <section>
+ <title>Using the MUWS Template</title>
+ <p>The Web Services Description Language (WSDL) is used
to expose resources and notifications as WS-Resources and also includes
optional fields, operations, and
+ notifications that may be included in the definition of
a resource that allow management applications to manage the resource in a
standardized fashion. The WSDL must
+ conform to the conventions as described in the MUWS
specification as well as the conventions described in the <a
href="ext:spec">WSRF</a> and <a href="ext:wsn">WSN</a>
+ Specifications. To make it easier to write a MUWS WSDL,
MUSE provides a template WSDL that can be used as a starting point. The
template saves a good deal of time
+ and is less error-prone than writing a MUWS-compliant
WSDL from scratch.
+ </p>
+ <p>To use the template:</p>
+ <ol>
+ <li>Using a text or XML editor, open
<code>INSTALL_DIR/template/_TEMPLATE_.wsdl</code>.</li>
+ <li>Save the file with a new name (e.g.,
<em>nameOfYourService</em>.wsdl).</li>
+ <li>Modify your WSDL based on the instructions
in the template and the information below.</li>
+ </ol>
+ <warning>Do not modify the original template
file.</warning>
+ </section>
+ <section>
+ <title>Defining the MUWS PortType</title>
+ <p>A MUWS WSDL should contain only one portType. The
portType aggregates operations from the WSRF, WSN, and MUWS
specification-defined portTypes
+ as well as custom resource-specific operations. If you
copied the WSDL template file as described above, your WSDL file
+ already contains a MUWS-compliant portType. You simply
have to rename the portType (<code>MyPortType</code>) and the binding
(MySoapHttpBinding) and
+ uncomment the blocks corresponding to whichever
optional portTypes you want your WS-Resource to support.
+ </p>
+ <note>The WSRF portTypes - from WS-ResourceProperties
(WSRF-RP) and WS-ResourceLifetime (WSRF-RL)- and their associated operations
are described in the Apache
+ WSRF <a href="ext:wsrfwsdl">WSDL Documentation</a>. The
instructions include defining the resource properties document, custom
properties, and custom
+ operations. The WSN portTypes - from
WS-BaseNotification - and their associated operations are described in the
Apache Pubscribe
+ <a href="ext:pubwsdl">WSDL Documentation</a>. The
instructions include defining notification producers and notification consumers.
+ </note>
+ <section>
+ <title>MUWS PortTypes</title>
+ <p>The MUWS specification defines eight
portTypes. However, only the <code>Relationships</code> portType contains an
operation that can be added to the portType of your
+ WSDL. The other portTypes are used to organize
and expose resource properties and need to be defined in the
<code>schema</code> section of a WSDL as you would
+ any other resource property. Among these
properties, the ResourceID property is required and must be included in a MUWS
compliant WSDL.
+ </p>
+ <table>
+ <tr>
+ <th>PortType</th>
+ <th>Operations</th>
+ <th>Properties</th>
+ </tr>
+ <tr>
+ <td>Identity</td>
+ <td/>
+ <td>ResourceId</td>
+ </tr>
+ <tr>
+
<td>ManageabilityCharacteristics</td>
+ <td/>
+ <td>ManageabilityCapability</td>
+ </tr>
+ <tr>
+ <td>CorrelatableProperties</td>
+ <td/>
+ <td>CorrelatableProperties</td>
+ </tr>
+ <tr>
+ <td>Description</td>
+ <td/>
+ <td>Caption, Description,
Version</td>
+ </tr>
+ <tr>
+ <td>OperationalStatus</td>
+ <td/>
+ <td>OperationalStatus</td>
+ </tr>
+ <tr>
+ <td>Metrics</td>
+ <td/>
+ <td>CurrentTime</td>
+ </tr>
+ <tr>
+ <td>Relationships</td>
+
<td>QueryRelationshipsByType</td>
+ <td>Relationship</td>
+ </tr>
+ <tr>
+ <td>RelationshipResource</td>
+ <td/>
+ <td>Name, Type, Participant</td>
+ </tr>
+ </table>
+ </section>
+ <section>
+ <title>WS-MetadataExchange PortType</title>
+ </section>
+ <p>Apache MUWS also includes implementations for two
operations that are defined in the WS Metadata Exchange Specification. This
specification is not part of MUWS. See the
+ Including Metadata section for more information
on how to implement metadata for your resources.
+ </p>
+ </section>
+ </body>
+</document>
Added: webservices/muse/trunk/src/site/content/xdocs/dev_guide/wsdl_tool.xml
URL:
http://svn.apache.org/viewcvs/webservices/muse/trunk/src/site/content/xdocs/dev_guide/wsdl_tool.xml?rev=225404&view=auto
==============================================================================
--- webservices/muse/trunk/src/site/content/xdocs/dev_guide/wsdl_tool.xml
(added)
+++ webservices/muse/trunk/src/site/content/xdocs/dev_guide/wsdl_tool.xml Tue
Jul 26 14:51:24 2005
@@ -0,0 +1,141 @@
+<?xml version="1.0"?>
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V2.0//EN"
+ "http://forrest.apache.org/dtd/document-v20.dtd">
+<document>
+ <header>
+ <title>Using Wsdl2Java</title>
+ </header>
+ <body>
+ <section>
+ <title>Introduction</title>
+ <p>The Wsdl2Java tool is used to generate a set of
artificats for a MUWS WS Resource. The artifiacts include:</p>
+ <ul>
+ <li>A set of Java classes based on the WSDL
definition. This includes a service, resource, and
+ home class. Some of the Java code will need to
be manually edited after the files are generated.</li>
+ <li>Interfaces for custom operations.</li>
+ <li>Java bindings for all Types that are
defined in the WSDL. The interfaces and classes are
+ created using the <a
href="ext:xmlbeans.apache.org">XMLBeans</a> schema compiler</li>
+ <li>an Axis Web Service Deployment Descriptor
(WSDD) for your service (<em>service</em>_deploy.wsdd). This file is used to
deploy your service to
+ Axis.</li>
+ <li>A JNDI Resource configuration file for your
service (<em>service</em>_jndi-config.xml). The file is used to setup the
in-memory JNDI context for
+ your generated service, resource, and home
classes.</li>
+ </ul>
+ <p>The tool saves you a great deal of time, since these
files do not have to be created from scratch. You simply pass the tool a MUWS
WSDL and the files
+ are automatically generated. You can use the tool
directly or you can use an Ant task.
+ </p>
+ </section>
+ <section>
+ <title>Ant Task</title>
+ <p>The Wsdl2Java tool can be invoked using the
<code>wsdl2Java</code> Ant task
(<code>org.apache.ws.muws.tool.MuwsWsdl2JavaTask</code>) which extends the
+ Apache Pubscribe Ant task
(<code>org.apache.ws.notification.tool.WsnWsdl2JavaTask</code>). The
+ <code>INSTALL_DIR/template/build.xml</code> script
contains a target that already implements this task.</p>
+ <p>To use the target:</p>
+ <ol>
+ <li>Copy INSTALL_DIR/template/build.xml and
build.properties to any directory. This directory will be referred to as
<code>WORK_DIR</code>.</li>
+ <li>Modify build.properties and modify the
<code>muse.webapp.dir</code> property and any proxy settings if applicable.</li>
+ <li>Copy your MUWS WSDL to
<code>WORK_DIR</code>. If your WSDL depends on a schema that is not accessible
over the network, you must copy the
+ schema to this directory as well.</li>
+ <li>From a command prompt, change directories
to <code>WORK_DIR</code>.</li>
+ <li>Run the following command.
+ <source>ant generate</source>
+ <p>Check
<code>WORK_DIR/generated</code> to see the generated files.
+ </p>
+ </li>
+ </ol>
+ <section>
+ <title>Task Definition</title>
+ <p>The task is defined as follows :</p>
+ <source><![CDATA[
+<taskdef name="MuwsWsdl2JavaTask"
+ classname="org.apache.ws.muws.tool.MuwsWsdl2JavaTask"
+ classpath="path/to/muse.jar" /> ]]></source>
+ <p>
+ <strong>Parameters</strong>
+ </p>
+ <p>The task takes the following parameters:</p>
+ <table>
+ <tr>
+ <th>Attribute</th>
+ <th>Description</th>
+ <th>Required</th>
+ </tr>
+ <tr>
+ <td>wsdl</td>
+ <td>Enter the full path to a
WSRF WSDL file.</td>
+ <td>Yes, unless a
<code>wsdls</code> parameter is used. </td>
+ </tr>
+ <tr>
+ <td>wsdls</td>
+ <td>Entered as a nested element
following the rules of fileset. This parameter is used instead of the
<code>wsdl</code> parameter to indicate multiple
+ WSRF WSDLs to be converted.</td>
+ <td>No</td>
+ </tr>
+ <tr>
+ <td>classpath</td>
+ <td>The classpath to be passed
to the XMLBeans schema compiler. The classpath should reference the
<code>INSTALL_DIR/wsrf/webapp/lib</code>
+ and <code>/classes</code>
directories.</td>
+ <td>Yes</td>
+ </tr>
+ <tr>
+ <td>classpathref</td>
+ <td>Adds a classpath, given as
reference to a path defined elsewhere.</td>
+ <td>No</td>
+ </tr>
+ <tr>
+ <td>outputdir</td>
+ <td>Enter a directory where the
generated files will be placed.</td>
+ <td>Yes</td>
+ </tr>
+ <tr>
+ <td>verbose</td>
+ <td>Enter <code>true</code> to
increase build message output.</td>
+ <td>No, default is
<code>false</code>
+ </td>
+ </tr>
+ <tr>
+ <td>proxyHost</td>
+ <td>Enter the Host IP address
of a proxy that is used to connect to the Internet.</td>
+ <td>No</td>
+ </tr>
+ <tr>
+ <td>proxyPort</td>
+ <td>Enter the Port number of a
proxy that is used to connect to the Internet.</td>
+ <td>No</td>
+ </tr>
+ <tr>
+ <td>nonProxyHosts</td>
+ <td>Enter the Host IP address
separated by "|" to indicate Hosts that do not require a proxy.</td>
+ <td>No</td>
+ </tr>
+ </table>
+ <p>
+ <strong>Example</strong>
+ </p>
+ <p>The following example generates files for a
single WSDL and places the generated files in a directory
+ named <code>/generated</code>. To simplify the
example, the classpath is referenced. You must set the
<code>${muse.home}</code> Ant property to <code>
+ INSTALL_DIR</code> (e.g. /opt/muse-1.0beta).</p>
+ <source><![CDATA[
+
+ <property name="muse.webapp.dir" location="${muse.home}/webapps/muse" />
+ <path id="muse.classpath.id">
+ <pathelement location="${muse.webapp.dir}/WEB-INF/classes" />
+ <fileset dir="${muse.webapp.dir}/WEB-INF/lib" includes="*.jar" />
+ </path>
+
+ <taskdef name="wsdl2Java"
classname="org.apache.ws.muws.tool.MuwsWsdl2JavaTask"
classpath="muse.classpath.id" />
+
+ <wsdl2Java wsdl="path/to/your.wsdl"
+ outputdir="generated"
+ classpath="muse.classpath.id" />]]></source>
+ <p>If you want to generate the files for
multiple WSDLs, you can use:</p>
+ <source><![CDATA[
+
+ <wsdl2Java outputdir="generated" classpath="muse.classpath.id" />
+ <wsdls dir="path/to/wsdls/">
+ <include name="**/*.wsdl" />
+ </wsdls>
+ </wsdl2Java>]]></source>
+ </section>
+ </section>
+ </body>
+</document>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]