<?xml version="1.0" encoding="UTF-8"?>
<!-- $Id: soapjms-2012-REC.xml,v 1.3 2012-02-09 09:02:31 ylafon Exp $ -->
<!DOCTYPE spec PUBLIC "-//W3C//DTD Specification V2.10//EN" "xmlspec.dtd" [
<!ENTITY prefix "soapjms">
<!ENTITY % entities SYSTEM "entities-2012-REC.dtd" >
%entities;
<!ENTITY status SYSTEM "status-2012-REC.xml">
<!ENTITY document.status "Editors' copy $Date: 2012-02-09 09:02:31 $">
<!ENTITY title "&title;">
<!ENTITY prevloc "@@@">
<!ENTITY hellip "&#8230;">
<!ENTITY trade "&#x2122;">
<!ENTITY mdash "&#x2014;">
]>
<?xml-stylesheet type='text/xsl' href='xmlspec-soapjms.xsl'?>
<spec w3c-doctype="&doctype;" role="&document.role;">
  <header>
    <title>&title;</title>
    <w3c-designation>&w3c-designation;</w3c-designation>
    <w3c-doctype>&document.status;</w3c-doctype>
    <pubdate>
      <day>&draft.day;</day>
      <month>&draft.month;</month>
      <year>&draft.year;</year>
    </pubdate>
    <publoc>
      <loc href="&w3c-designation;">&w3c-designation;</loc>
    </publoc>

	<prevlocs>
	  <loc href="&prevloc;">&prevloc;</loc>
    </prevlocs>
    <latestloc>
      <loc href="&latest;">&latest;</loc>
    </latestloc>
    <authlist id="authors">
      <author>
      	<name>Phil Adams</name>
      	<affiliation>IBM</affiliation>
      </author>
      <author>
      	<name>Peter Easton</name>
      	<affiliation>Progress Software</affiliation>
      </author>
      <author>
      	<name>Eric Johnson</name>
      	<affiliation>TIBCO</affiliation>
      </author>
      <author>
      	<name>Roland Merrick</name>
      	<affiliation>IBM</affiliation>
      </author>
      <author>
        <name>Mark Phillips</name>
        <affiliation>IBM</affiliation>
      </author>

    </authlist>
    
    <abstract>
      <p>
	This document specifies how SOAP binds to a messaging
	system that supports the Java Message Service (JMS)
	[<bibref ref="jms" />]. Binding is specified for both SOAP 1.1
	[<bibref ref="soap11" />] and SOAP 1.2 [<bibref ref="soap12" />]
	using the SOAP 1.2 Protocol Binding Framework.  This specification
	also describes how to use WSDL documents to indicate and control
	the use of this binding.
    </p>
    
    </abstract>
 
<errataloc href="http://www.w3.org/2002/ws/soapjms/errata/&prefix;-&draft.date;-errata" />   
<translationloc href="http://www.w3.org/2003/03/Translations/byTechnology?technology=&prefix;" />

    &status;
    
    <langusage>
      <language id='en-us'>English</language>
    </langusage>
    <revisiondesc>
      <p>Last Modified: $Date: 2012-02-09 09:02:31 $</p>
    </revisiondesc>
  </header>
  
  <body>
    
    <div1 id="introduction">
      <head>Introduction</head>
      
      <div2 id="introduction-background">
	<head>Background</head>
	<p>The work described in this and related documents is aimed
	at a set of standards for the transport of SOAP messages over
	JMS [<bibref ref="jms" />]. The main purpose is to ensure
	interoperability between the implementations of different Web
	services vendors. This will also enable customers to implement
	their own Web services for part of their infrastructure, and
	to have this interoperate with vendor provided Web
	services. The main audience will be implementers of Web
	services stacks; in particular people who wish to extend a Web
	services stack with an implementation of SOAP/JMS. This will
	enable them to write a SOAP/JMS implementation that will
	interoperate with other SOAP/JMS implementations, and that
	will not be dependent on any specific JMS implementation.</p>

	<p>A motivational example is a customer who has different
	departments that use Web services infrastructure from two
	different vendors, VendorA and VendorB. The customer has a
	need for reliable Web services interaction between the
	departments. Where both these vendors provide support for
	SOAP/JMS according to this standard, it ought be possible for
	a client running using VendorA to interoperate with a service
	using VendorB.</p>

	<p>The standards will also be of interest to providers of Web
	services intermediary services such as routing gateways; or
	SOAP/HTTP to SOAP/JMS gateways. We do not discuss any details
	of how such gateways might be designed and configured, but
	adherence to the standard will help the gateway ensure proper
	interoperation with SOAP/JMS clients and services.</p>

	<p>The documents cover three major areas.</p>
	<ulist>
	  <item><p>The JMS calls that have to be made to construct and
	  interpret SOAP/JMS messages in <specref
	  ref='soap-binding'/>.</p></item>
	  <item><p>The WSDL binding that describes SOAP/JMS services in <specref
	  ref='wsdl-extensions'/>.</p></item>
	  <item><p>How SOAP over JMS uses the Uniform Resource Identifier (URI) [<bibref
	  ref='rfc3986' />]  specification for JMS endpoints (JMS URI) [<bibref
	  ref='jmsuri' />].</p></item>
	</ulist>

	<p>Note that the URI specification is in a separate document.</p>
      </div2>
      
      <div2 id="introduction-outofscope">
	<head>Out of Scope</head>
	<p>It is important to stress what this standard does NOT provide.</p>
	<ulist>
	  <item><p>It does NOT provide any mechanism for
	  interoperation between two different JMS providers.  In the
	  example above, VendorA and VendorB are different providers
	  of a Web services infrastructure, but the customer still needs
      to use a single implementation of JMS at both client and
	  service side.</p></item>
	  <item><p>It does NOT define any (wire) format for SOAP/JMS
	  messages.</p></item>
	  <item><p>It does NOT define how the Web services themselves
	  will be presented to the application programmer.  For
	  example, it does not describe how the programmer will
	  characterise a one-way message.</p></item>
	</ulist>
      </div2>

      <div2 id="introduction-context">
	<head>Context</head>
	<p>This document specifies how SOAP binds to a messaging
	system that supports JMS. Binding is specified for both SOAP 1.1
	[<bibref ref="soap11" />] and SOAP 1.2 [<bibref ref="soap12" />]
	using the SOAP 1.2 Protocol Binding Framework.</p>
		
	<p>The approach taken for this specification is to model it on
	the binding specifications that have been created for SOAP
	1.2. The first of these was for a SOAP HTTP Binding, described
	in section 7, <xspecref
	href="http://www.w3.org/TR/soap12-part2/#soapinhttp">SOAP HTTP
	binding</xspecref>, [<bibref ref="soap12p2" />]. A second
	binding for Email [<bibref ref="SOAP-EMAIL" />] is also
	available.</p>
		
      </div2>		
      <div2 id="introduction-notation">
	<head>Notational Conventions</head>
	
	<p>
	  The keywords "<rfc2119>MUST</rfc2119>", "<rfc2119>MUST
	  NOT</rfc2119>", "<rfc2119>REQUIRED</rfc2119>",
	  "<rfc2119>SHALL</rfc2119>", "<rfc2119>SHALL
	  NOT</rfc2119>", "<rfc2119>SHOULD</rfc2119>",
	  "<rfc2119>SHOULD NOT</rfc2119>",
	  "<rfc2119>RECOMMENDED</rfc2119>",
	  "<rfc2119>MAY</rfc2119>", and
	  "<rfc2119>OPTIONAL</rfc2119>" in this document are to be
	  interpreted as described in RFC 2119 [<bibref ref="rfc2119"/>].
	</p>

	<p>Parenthetic remarks about fault subcodes are mentioned throughout
	the document where a conformance issue could result in an error.
    The section <specref ref='binding-faults'/> discusses the treatment
    of these subcodes.</p>

	<div3 id="XML_Namespaces">
	    <head>XML Namespaces</head>

	    <p>
	      This specification uses a number of namespace prefixes
	      throughout; they are listed in <specref
	      ref="nsprefix"/>. Properties are named with <xspecref
	      href='http://www.w3.org/TR/xml-names/#ns-qualnames'>XML
	      qualified names</xspecref>. Property values are
	      determined by the Schema type of the property, as
	      defined in the specification which introduces the
	      property. Note that the choice of any namespace prefix
	      is arbitrary and not semantically significant (see
	      [<bibref ref="XML-NS" />]).
	    </p>
	  
	    <table summary="Namespace prefixes usage in this specification" id="nsprefix"
		 border="1" cellspacing="0" cellpadding="5">
	    <caption>Prefixes and Namespaces used in this specification</caption>
	    <thead>
	      <tr>
		<th>Prefix</th>
		<th>Namespace</th>
		<th>Specification</th>
	      </tr>
	    </thead>
	    <tbody>
	      <tr>
		<td><code>soapjms</code></td>
		<td><code>&nsuri;</code></td>
		<td>Defined by this specification</td>
	      </tr>
	      <tr>
		<td><code>xsd</code></td>
		<td><code>http://www.w3.org/2001/XMLSchema</code>
		</td>
		<td>[<bibref ref="XMLSchemaPart1"/>]</td>
	      </tr>
	      <tr>
		<td><code>wsdl11</code></td>
		<td><code>http://schemas.xmlsoap.org/wsdl/</code></td>
		<td>[<bibref ref="wsdl11"/>]</td>
	      </tr>
	      <tr>
		<td><code>wsdl20</code></td>
		<td><code>http://www.w3.org/ns/wsdl</code></td>
		<td>[<bibref ref="wsdl20"/>]</td>
	      </tr>
	      <tr>
		<td><code>wsoap</code></td>
		<td><code>http://www.w3.org/ns/wsdl/soap</code></td>
		<td>[<bibref ref="wsdl20forsoap"/>]</td>
	      </tr>
	      <tr>
		<td><code>wsdl11soap11</code></td>
	      <td><code>http://schemas.xmlsoap.org/wsdl/soap/</code></td>
	      <td>[<bibref ref="wsdl11"/>]</td>
	      </tr>
	      <tr>
		<td><code>wsdl11soap12</code></td>
		<td><code>http://schemas.xmlsoap.org/wsdl/soap12/</code></td>
		<td>[<bibref ref="wsdl11forsoap12" />]</td>
	      </tr>
	    </tbody>
	    </table>
	    <p>
	      The binding defined by this specification is identified
	      by the XML namespace URI [<bibref ref="XML-NS"/>]
	      <code>&nsuri;</code>.
	    </p>
	    
	    <p>It is the intent of the W3C SOAP JMS Binding Working
	    Group that the SOAP/JMS XML namespace URI will not change
	    arbitrarily with each subsequent revision of the
	    corresponding XML Schema documents as the specifications
	    transition through Candidate Recommendation, Proposed
	    Recommendation and Recommendation status. However, should
	    the specifications revert to Working Draft status, and a
	    subsequent revision, published as a WD, CR or PR draft,
	    results in non-backwardly compatible changes from a
	    previously published WD, CR or PR draft of the
	    specification, the namespace URI will be changed
	    accordingly.</p>
	    <ednote>
	      <name>plh</name>
	      <date>20080501</date>
	      <edtext>The above paragraph will need to be removed for the publication of the Recommendation.</edtext>
	    </ednote>

	</div3>
	
      </div2>
	<div2 id="assertions">
		<head>Assertions</head>
		<p>
			Assertions in this specification are
			marked by a dagger symbol (&#x2020;) at the end
			of a sentence. Each assertion has been assigned a unique
			identifier that consists of a descriptive textual prefix and
			a unique numeric suffix. The numeric suffixes are assigned
			sequentially and never reused so there could be gaps in the
			sequence.
		</p>
		<p>
			The assertions and their identifiers are
			summarized in section <specref ref="assertionsummary" />.
		</p>
	</div2>
      
     <div2 id="introduction-conformance">
		<head>Conformance</head>
		<p>This specification defines two features, each of which has conformance criteria associated with it. 
		<assert class="document" id="Conformance-1000" cr-id="">A conforming implementation <rfc2119>MUST</rfc2119> work with JMS.</assert>
		</p>
		<olist>
		<item>
			<p>Feature: soapjms:Protocol [<code>&nsuri;Protocol</code>]</p>
			<p>
			<assert class="document" id="Conformance-1001" cr-id="">A conforming implementation <rfc2119>MUST</rfc2119> implement all the requirements of <specref ref='soap-binding'/>.</assert>
			<assert class="document" id="Conformance-1002" cr-id="">Conforming implementations <rfc2119>MUST</rfc2119> implement all the requirements of the JMS URI.</assert>
			</p>
		</item>
		<item>
			<p>Feature: soapjms:WSDL11 [<code>&nsuri;WSDL11</code>]</p>
			<p>
			<assert class="document" id="Conformance-1003" cr-id="">Support for WSDL 1.1 is optional and as such an implementation <rfc2119>MAY</rfc2119> implement it.  
			However, a conforming implementation of this feature <rfc2119>MUST</rfc2119> implement all the requirements of <specref ref='wsdl-11-detail'/>.</assert></p>	
		</item>
		</olist>
     </div2>      
      
      
    </div1>
    <div1 id="soap-binding">
      <head>The SOAP/JMS Underlying Protocol Binding</head>
      <p>This section is normative.</p>
      <p>This section describes the required feature: soapjms:Protocol [<code>&nsuri;Protocol</code>]</p>
      <div2 id="binding-intro">
	    <head>Introduction</head>
    	<p>This section covers the SOAP/JMS binding, and implicitly the JMS calls that need to be made. 
    	One might think of the JMS calls as the SOAP/JMS message format. 
    	This is almost correct, but not completely. 
    	JMS is strictly an API and does	not define a message format. 
    	Also, this document covers how the SOAP/JMS implementation connects to the JMS service and selects the appropriate destination.
    	</p>

		<p>This part covers details such as how JMS connections and destinations are handled. 
		It also covers the message content, including how properties and headers such as priority,
		soapAction and targetService are handled within the SOAP/JMS implementation.
		</p>

    	</div2> <!-- introduction -->

    <div2 id="binding-properties">
    <head>Properties Affecting Binding</head>

    <p>There are a number of properties that affect how the binding behaves.
    The following properties are grouped into related sets. </p>
    
    <p>Some of the properties are optional.
	<assert class="document" id="Protocol-2001" cr-id="">
    Properties can be obtained from a number of sources. 
    If a given property is specified in more than one of these, 
    the following list specifies the precedence: 
    the first <rfc2119>MUST</rfc2119> be used in preference to the second.
    </assert></p>
    <olist>
      <item><p>The environment (for example local program variables, system environment variables etc).</p>
      </item>
      <item><p>WSDL elements or attributes (including those specified in an endpoint URI within the WSDL). 
          The precedence rules for properties specified in a WSDL document are defined in <specref ref='wsdl-11-properties'/> and <specref ref='wsdl-11-url'/>.</p>
      </item>
    </olist>

	<p><assert class="document" id="Protocol-2002" cr-id="">
	If a given property is specified more than once in the JMS 
    URI the last instance of the property <rfc2119>MUST</rfc2119> be used.
	</assert></p>

      <div3 id="binding-connection">
      <head>Connection to a destination</head>
      
      <p>Since the underlying JMS URI scheme defines an open-ended scheme for identifying and connecting to a destination, it is not
      possible to enumerate all the ways that connection information can be set.  However, in the interest of specifying
      context information such as JNDI connection properties in such a way that they can apply to multiple services or endpoints,
      this specification enumerates specific properties.</p>

      <glist>
      
      <gitem>
      <label><termdef term="soapjms:lookupVariant" id="lookupVariant"><term>soapjms:lookupVariant</term>
		</termdef>(xsd:string)</label>
		<def>
			<ulist>
				<item>
				<p>Specifies the technique to use for looking up the given destination name.</p>
				</item>
				<item>
				<p><assert class="document" id="Protocol-2003" cr-id="" preamble="(lookupVariant)">
					<rfc2119>MUST</rfc2119> be specified in the JMS URI, as the <code>jms-variant</code> portion of the syntax. </assert>
				</p>
  	     		</item>
				<item>
				<p><assert class="document" id="Protocol-2060" cr-id="" preamble="(lookupVariant)">
					The <code>jms-variant</code>: <code>jndi</code> <rfc2119>MUST</rfc2119> be supported.</assert>
                    <termdef id="unsupportedLookupVariant" term="unsupportedLookupVariant"><assert class="document" id="Protocol-2071" cr-id="">
                    A fault MUST be generated with subcode <term>unsupportedLookupVariant</term>
                        if the JMS URI specifies a lookupVariant that is not supported by the implementation.</assert></termdef>
				</p>
  	     		</item>
			</ulist>
		</def>
	  </gitem>
	
		<gitem>
      <label><termdef term="soapjms:destinationName"
              id="destinationName"><term>soapjms:destinationName</term>
              </termdef> (xsd:string)</label>
      <def><ulist>      
      <item>
	      <p>Specifies the name of the destination, for lookup as per the <termref def="lookupVariant">lookupVariant</termref>.
	      If the variant is "jndi", this is the Java Naming and Directory Interface (JNDI)
	      name of the destination (queue or topic). </p>
      </item>
      <item><p><assert class="document" id="Protocol-2004" cr-id="" preamble="(destinationName)"> <rfc2119>MUST</rfc2119> be specified in JMS URI, as the <code>jms-dest</code> portion of the syntax.</assert></p>
	    </item>
      </ulist></def>
      </gitem>

      <gitem>
      <label><termdef term="soapjms:jndiConnectionFactoryName"
              id="jndiConnectionFactoryName"><term>soapjms:jndiConnectionFactoryName</term>
              </termdef> (xsd:string)</label>
      <def><ulist>
      <item><p>Specifies the JNDI name of the connection factory.</p></item>
      <item><p>optional in URI, optional in WSDL, optional in environment</p></item>
      </ulist></def>
      </gitem>

      <gitem>
      <label><termdef term="soapjms:jndiInitialContextFactory"
              id="jndiInitialContextFactory"><term>soapjms:jndiInitialContextFactory</term>
              </termdef> (xsd:string)</label>
      <def><ulist>
      <item><p>Specifies the fully qualified Java class name of the
      <code>InitialContextFactory</code> to use.  This is mapped to the <code>java.naming.factory.initial</code>
          property (defined by the constant <code>javax.naming.Context.INITIAL_CONTEXT_FACTORY</code>) to be set in
      the <code>HashMap</code> sent to an <code>InitialContext</code> constructor.</p></item>
      <item><p>optional in URI, optional in WSDL, optional in environment</p></item>
      </ulist></def>
      </gitem>

      <gitem>
      <label><termdef term="soapjms:jndiURL"
              id="jndiURL"><term>soapjms:jndiURL</term>
              </termdef> (xsd:anyURI)</label>
      <def><ulist>
      <item><p>Specifies the JNDI provider URL, which is mapped to the
      <code>java.naming.provider.url</code> property (defined by the constant 
          <code>javax.naming.Context.PROVIDER_URL</code>) to be set in the 
          <code>HashMap</code> sent to an <code>InitialContext</code> constructor.</p></item>
      <item><p>optional in URI, optional in WSDL, optional in environment</p></item>
      </ulist></def>
      </gitem>
 
      <gitem>
      <label><termdef term="soapjms:jndiContextParameter"
              id="jndiContextParameter"><term>soapjms:jndiContextParameter</term>
              </termdef> (soapjms:jndiContextParameterType)</label>
      <def><ulist>
      <item><p>Provides mechanism to set additional, arbitrary JNDI environment properties, 
      other than jndiURL and jndiInitialContextFactory, in the <code>java.util.Hashtable</code> sent to the
       InitialContext constructor for the JNDI provider.</p></item>
      <item><p>A property that can be specified more than once.
      When determining precedence rules for multiple occurrences of the jndiContextParameter property, 
      the property is not considered to occur more than once unless the name attribute is identical 
      in multiple jndiContextParameter properties.</p></item>
       <item><p>Specifies a JNDI property name and value pair to be added to the <code>java.util.Hashtable</code> sent to the 
       InitialContext.
</p></item>
      <item><p>In XML form the JNDI property's name is defined by the name
      attribute of the jndiContextParameter element, and the JNDI property
      value is defined by the value attribute. When indicated in a URI, the
      name of the JNDI property is derived from dropping the 'jndi-' prefix
      from any parameter name starting that way, and the value comes from the
      parameter value.  The value is added as a <code>java.lang.String</code>.
      </p></item>
      <item><p>optional in URI, optional in WSDL, optional in environment</p></item>
      </ulist>
      <example>
        <head>Including JNDI context properties in WSDL</head>
        <eg xml:space="preserve"><![CDATA[
<!-- Enable tracing for the ACME Corporation JNDI provider   -->
<soapjms:jndiContextParameter name="com.acme.jndi.enable.tracing" value="true" />

<!-- Include the standard JNDI property to ignore JNDI provider referrals -->
<soapjms:jndiContextParameter name="java.naming.referral" value="ignore" />
]]> </eg>
      </example>
      <p/>
      <example>
        <head>Including JNDI context properties in URI</head>
        <eg xml:space="preserve"><![CDATA[
jms:jndi:destinationName?jndi-com.acme.jndi.enable.tracing=true&jndi-java.naming.referral=ignore
]]> </eg>
      </example>
      
      </def>
      </gitem>

      </glist>    
      </div3> <!-- connection to destination -->

      <div3 id="binding-header-props">
      <head>JMS Message Header properties</head>
      
      <p>This set of properties provide information that will set the values
      of corresponding JMS Header fields.  This specification assumes that the JMS
      provider validates the values set for the respective message header properties, rather than
      being explicitly constrained by this specification.</p>

    <glist>
        <gitem>
            <label><termdef id="deliveryMode" term="soapjms:deliveryMode"><term>soapjms:deliveryMode</term></termdef> (soapjms:deliveryModeType) </label>
            <def>
                <ulist>
                    <item>
                        <p>indicates whether the request message is persistent or not. The valid values are "PERSISTENT" and "NON_PERSISTENT".  The default value is "PERSISTENT" (defaulted by JMS)</p>
                    </item>
                    <item>
                        <p>optional in URI, optional in WSDL, optional in environment</p>
                    </item>
                    <item>
	      <p><assert class="document" id="Protocol-2005" cr-id="" preamble="(deliveryMode)">
                        if specified <rfc2119>MUST</rfc2119> appear in the JMS message in the header named <code>JMSDeliveryMode</code>.
                          If the value of this property is "PERSISTENT" then the <code>JMSDeliveryMode</code> integer value <rfc2119>MUST</rfc2119> be 
                          set to <code>DeliveryMode.PERSISTENT</code>.  If the value of this property is "NON_PERSISTENT" then the 
                          <code>JMSDeliveryMode</code> integer value <rfc2119>MUST</rfc2119> be set to <code>DeliveryMode.NON_PERSISTENT</code>. 
                        </assert></p>
                    </item>
                </ulist>
            </def>
        </gitem>
        <gitem>
            <label>
                <termdef id="timeToLive" term="soapjms:timeToLive"><term>soapjms:timeToLive</term></termdef> (xsd:long)
            </label>
            <def>
                <ulist>
                    <item>
                        <p>the lifetime, in milliseconds, of the request message. A value of 0 indicates an infinite lifetime. The default value is 0 (defaulted by JMS).</p>
                    </item>
                    <item>
                        <p>optional in URI, optional in WSDL, optional in environment.</p>
                    </item>
                    <item>
                        <p><assert class="document" id="Protocol-2006" cr-id="" preamble="(timeToLive)"> if specified, this <rfc2119>MUST</rfc2119> be used to generate the value of the JMS header <code>JMSExpiration</code>.</assert></p>
                    </item>
                </ulist>
            </def>

        </gitem>
        <gitem>
            <label>
                <termdef id="priority" term="soapjms:priority"><term>soapjms:priority</term></termdef> (soapjms:priorityType)
            </label>
            <def>
                <ulist>
                    <item>
                        <p>the JMS priority associated with the request message. Valid values are integers between 0 (lowest priority) and 9 (highest priority). The default value is 4 (defaulted by JMS).</p>
                    </item>
                    <item>
                        <p>optional in URI, optional in WSDL, optional in environment</p>
                    </item>
                    <item>
                        <p><assert class="document" id="Protocol-2007" cr-id="" preamble="(priority)"> if specified, <rfc2119>MUST</rfc2119> appear in the JMS message in the header named <code>JMSPriority</code>.</assert></p>
                    </item>
                </ulist>
            </def>
        </gitem>
        <gitem>
            <label>
                <termdef id="replyToName" term="soapjms:replyToName"><term>soapjms:replyToName</term></termdef> (xsd:string)
            </label>
            <def>
                <ulist>
                    <item>
		      <p>Specifies the name of the destination to which a response message will be sent. 
		      If the <termref def="replyToName">replyToName</termref> property has a value it is used to lookup a destination using the <termref def="lookupVariant">lookupVariant</termref>. 
		      If the variant is "jndi", this is the Java Naming and Directory Interface (JNDI) name of the destination (queue or topic).
		      If the variant is "queue" or "topic", this refers to the name of a JMS queue.
		      </p>
                    </item>
                    <item>
                        <p>optional in URI, optional in WSDL, optional in environment</p>
                    </item>
                    <item>
                        <p><assert class="document" id="Protocol-2008" cr-id="" preamble="(replyToName)"> if specified, this <rfc2119>MUST</rfc2119> be used to derive the value to be used in the JMS header <code>JMSReplyTo</code>.</assert></p>
                    </item>
                </ulist>
            </def>
        </gitem>
        <gitem>
            <label>
                <termdef id="topicReplyToName" term="soapjms:topicReplyToName"><term>soapjms:topicReplyToName</term></termdef> (xsd:string)
            </label>
            <def>
                <ulist>
                    <item>
		      			<p>Specifies the name of the topic destination to which a response message will be sent.</p>
                    </item>
                    <item>
		    		  <p>as defined by [<bibref ref='jmsuri' />], the topicReplyToName only makes sense if the URI variant is "queue" or "topic".</p>
                    </item>
                    <item>
		   			   <p>if the replyToName is specified in the URI, WSDL, or environment, topicReplyToName is not relevant and MUST be ignored.</p>
                    </item>
                    <item>
                        <p>optional in URI, optional in WSDL, optional in environment</p>
                    </item>
                    <item>
                        <p><assert class="document" id="Protocol-2070" cr-id="" preamble="(topicReplyToName)"> if specified and if relevant, this <rfc2119>MUST</rfc2119> be used to derive the value to be used in the JMS header <code>JMSReplyTo</code>.</assert></p>
                    </item>
                </ulist>
            </def>
        </gitem>
    </glist>

        <div4 id="binding-header-props-xmp">
          <head>Setting JMS Message Header properties</head>
          <p>This section is non-normative and is intended to give an example of how a JMS Message Header property can be set.</p>
          <example>
	    	<head>Setting JMS Message Header properties</head>
	    	<eg xml:space="preserve"><![CDATA[
import java.naming.Context;
import javax.jms.DeliveryMode;
import javax.jms.Destination;
import javax.jms.Message;
import javax.jms.MessageProducer;
...

class ... 
{
  // add appropriate error checking for your use....
  public void someMethod(Context ctx, MessageProducer producer, Message jmsMessage,
                         String deliveryModeStr, String replyToName, int priority, 
                         long timeToLive) 
  {
    // Set the reply destination, first looking it up using JNDI
    Destination replyDestination = ctx.lookup(replyToName);
    jmsMessage.setJMSReplyTo(replyDestination);

    // set the delivery mode to the appropriate constant value.
    int deliveryMode = deliveryModeStr.equals("PERSISTENT") ? DeliveryMode.PERSISTENT: DeliveryMode.NON_PERSISTENT;
    producer.setDeliveryMode( deliveryMode );

    // set the default priority on the producer.
    producer.setPriority(priority);

    // set when the message is set to expire.
    producer.setTimeToLive(timeToLive);

    // and finally, send the message.
    producer.send(jmsMessage);

    // Alternately, instead of changing the producer's default settings, the
    // header properties could be set on a per-message basis by passing them
    // to the MessageProducer.send() method, like so:
    // producer.send(jmsMessage, deliveryMode, priority, timeToLive);
  }  
} 
]]> </eg>
	      </example>
        </div4>

      </div3> <!-- header props -->
      
      <div3 id="binding-message-props">
      <head>JMS Message properties</head>

    <glist>
        <gitem>
            <label>
                <termdef id="targetService" term="soapjms:targetService"><term>soapjms:targetService</term></termdef> (xsd:string)
            </label>
            <def>
                <ulist>
                    <item>
                        <p>Used by the service implementation to dispatch the service request. </p>
                    </item>
                    <item>
                        <p>optional in URI</p>
                    </item>
                    <item>
                       <p><termdef id="missingTargetService" term="missingTargetService">                      
                        <assert class="document" id="Protocol-2009" cr-id="" preamble="(targetService)"> 
                        if specified <rfc2119>MUST</rfc2119> appear in the JMS message in the JMS property named 
                        <code>SOAPJMS_targetService</code>.
                         Use fault subcode <term>missingTargetService</term> if specified and <code>SOAPJMS_targetService</code> does not appear.                      
                        </assert>
                        </termdef></p>
                    </item>
                </ulist>
            </def>
        </gitem>
        <gitem>
            <label>
                <termdef id="bindingVersion" term="soapjms:bindingVersion"><term>soapjms:bindingVersion</term></termdef> (xsd:string)
            </label>
            <def>
                <ulist>
                    <item>
                        <p>Specifies the version of SOAP JMS binding that is being used.</p>
                    </item>
                    <item>
                        <p><assert class="document" id="Protocol-2010" cr-id="" preamble="(bindingVersion)"> fixed value "1.0" in the implementation, <rfc2119>MUST</rfc2119> appear in a JMS property named <code>SOAPJMS_bindingVersion</code>.</assert></p><p>
                        <termdef id="unrecognizedBindingVersion" term="unrecognizedBindingVersion">  
                        <assert class="document" id="Protocol-2011" cr-id="">
                        A fault <rfc2119>MUST</rfc2119> be generated with subcode <term>unrecognizedBindingVersion</term> 
                        if the value of the <term>soapjms:bindingVersion</term> property does not match the fixed value.
                        </assert></termdef></p>
                    </item>
                </ulist>
            </def>
        </gitem>
        <gitem>
            <label>
                <termdef id="contentType" term="soapjms:contentType"><term>soapjms:contentType</term></termdef> (xsd:string)
            </label>
            <def>
                <p>Note that the <code>contentType</code> value also indicates the MIME type of the primary message payload.  
                This message property, then, identifies whether the message payload uses 
                SOAP 1.1, SOAP 1.2, SOAP Messages With Attachments [<bibref ref="SwA" />] or 
                MTOM [<bibref ref="SOAP11-MTOM" />] [<bibref ref="SOAP12-MTOM" />] as the primary payload.</p>
                <ulist>
                    <item>
                        <p>Describes the content of the SOAP message, 
                        this has the same values as the MIME Content-Type specified for a SOAP message over HTTP [<bibref ref="mime" />].</p>
                    </item>
                    <item>
                        <p>If the value of the property is text/xml or application/soap+xml,
                           a <code>charset</code> parameter might be present; if the value of the property is 
                           multipart/related, a type parameter might be present.</p>
                    </item>
                    <item>
                        <p><termdef id="contentTypeMismatch" term="contentTypeMismatch">
                            <assert class="document" id="Protocol-2012" cr-id="" preamble="(contentType)">
                            If the <code>charset</code> parameter is specified, it is checked to ensure that it matches the encoding value from the supplied XML.
                            A fault <rfc2119>MUST</rfc2119> be generated with subcode <term>contentTypeMismatch</term> if the encoding values do not match.</assert></termdef>
                        </p>
                    </item>
                    <item>
                        <p>The charset parameter is optional and can take the values "utf-8" or "utf-16".  
                        If the charset parameter is omitted, the character set rules for freestanding [<bibref ref="xml"/>] apply to the body of the JMS message.
                        </p>
                    </item>
                    <item>
                        <p><termdef id="missingContentType" term="missingContentType">
                        <assert class="document" id="Protocol-2016" cr-id="" preamble="(contentType)">
                        The contentType value <rfc2119>MUST</rfc2119> appear in the JMS message in the JMS property named <code>SOAPJMS_contentType</code>.
                        A fault <rfc2119>MUST</rfc2119> be generated with subcode <term>missingContentType</term> if the 
                        <code>SOAPJMS_contentType</code> property is missing.</assert></termdef></p>
                    </item>
                </ulist>
            </def>
        </gitem>
        <gitem>
            <label>
                <termdef id="soapAction" term="soapjms:soapAction"><term>soapjms:soapAction</term></termdef> (xsd:anyURI)
            </label>
            <def>
                <ulist>
                    <item>
                        <p>As with SOAP/HTTP</p>
                    </item>
                    <item>
                        <p>Optional in WSDL, optional in environment</p>
                    </item>
                    <item>
                        <p><termdef id="missingSoapAction" term="missingSoapAction">
                          <assert class="document" id="Protocol-2018" cr-id="" preamble="(soapAction)">If specified <rfc2119>MUST</rfc2119> appear in the JMS message in the JMS property named <code>SOAPJMS_soapAction</code>.
                          Fault subcode <term>missingSoapAction</term> MAY be used if <code>SOAPJMS_soapAction</code> does not appear.</assert>
                          </termdef></p>
                    </item>
                    <item>
                    	<p><termdef term="mismatchedSoapAction" id="mismatchedSoapAction">
                        <assert class="document" id="Protocol-2019" cr-id="" preamble="(soapAction)">
                        If using SOAP 1.2, and the <termref def="contentType">contentType</termref>
                    	property has an <code>action</code> parameter, that parameter value is compared with the <code>SOAPJMS_soapAction</code> value.
                         
                        A fault <rfc2119>MUST</rfc2119> be generated with fault subcode <term>mismatchedSoapAction</term> if the SOAP 1.2 <code>action</code> does not
                    	match the <code>SOAPJMS_soapAction</code> value.</assert></termdef> 
                    	</p>
                    </item>
                </ulist>
            </def>
        </gitem>
        <gitem>
            <label>
                <termdef id="isFault" term="soapjms:isFault"><term>soapjms:isFault</term></termdef> (xsd:boolean)
            </label>
            <def>
                <ulist>
                    <item>
                        <p>This property indicates whether a SOAP/JMS message corresponds to a SOAP fault.
                        </p>
                    </item>
                    <item>
                        <p> 
                        For senders, this property is set to <code>true</code> when responding with a SOAP fault. 
                        <assert class="document" id="Protocol-2020" cr-id="" preamble="(isFault)">
                        When this property is <code>true</code>, the sending software <rfc2119>MUST</rfc2119> set a boolean JMS Message property 
                        named <code>SOAPJMS_isFault</code> with a value of <code>true</code>, as in: 
                        <code>Message.setBooleanProperty("SOAPJMS_isFault", true)</code>.
                        </assert>
                        </p>
                    </item>
                    <item>
                        <p>For receivers, this property is derived from the boolean JMS Message property named <code>SOAPJMS_isFault</code> — 
                        if present and containing a value of <code>true</code>, the value of <termref def="isFault">soapjms:isFault</termref> 
                        is <code>true</code>. 
                        If omitted, or present with a value of <code>false</code>, the value of <termref def="isFault">soapjms:isFault</termref> 
                        is <code>false</code>.
                        </p>
                    </item>
                </ulist>
            </def>
        </gitem>
        <gitem>
            <label>
                <termdef id="requestURI" term="soapjms:requestURI"><term>soapjms:requestURI</term></termdef> (xsd:string)
            </label>
            <def>
                <ulist>
                    <item>
                        <p>Specifies the JMS URI of the service. 
                        <assert class="document" id="Protocol-2021" cr-id="">The client <rfc2119>MUST</rfc2119> create the requestURI by taking the supplied URI, leaving the destinationName as-is, 
                        and removing the targetService and replyToName query parameters if they are specified. The client <rfc2119>SHOULD</rfc2119> 
                        also remove deliveryMode, jndiConnectionFactoryName, jndiInitialContextFactory, jndiURL, jndiContextParameter, timeToLive, 
                        and priority properties.  The client <rfc2119>MAY</rfc2119> remove other query parameters not explicitly mentioned above 
                        (for example client security related properties).</assert></p>
                    </item>
                    <item>
                        <p>A required property</p>
                    </item>
                    <item><p><termdef id="missingRequestURI" term="missingRequestURI">
                        <assert class="document" id="Protocol-2022" cr-id=""  preamble="(requestURI)">
                        Appears in the JMS message in the JMS property named <code>SOAPJMS_requestURI</code>.
                        A fault <rfc2119>MUST</rfc2119> be generated with fault subcode <term>missingRequestURI</term> if the <code>SOAPJMS_requestURI</code> property 
                        is missing from the message.</assert></termdef></p>
                    </item>
                    <item><p><termdef id="malformedRequestURI" term="malformedRequestURI">
                        <assert class="document" id="Protocol-2025" cr-id=""> 
                        A fault <rfc2119>MUST</rfc2119> be generated with subcode <term>malformedRequestURI</term> 
                        when the <code>SOAPJMS_requestURI</code> violates the expected syntax.</assert>  </termdef>.</p>
                    </item>
                    <item><p><termdef id="targetServiceNotAllowedInRequestURI"	term="targetServiceNotAllowedInRequetURI">
                        <assert class="document" id="Protocol-2026" cr-id="">
                        A fault <rfc2119>MUST</rfc2119> be generated with subcode <term>targetServiceNotAllowedInRequestURI</term> 
                        when <code>targetService</code> parameter is included in the <code>SOAPJMS_requestURI</code>). 
                        </assert>  </termdef>  </p>
                    </item>
                </ulist>
            </def>
        </gitem>
        <gitem>
            <label>
                <termdef id="contentEncoding" term="soapjms:contentEncoding"><term>soapjms:contentEncoding</term></termdef> (xsd:string)
            </label>
            <def>
                <ulist>
                    <item>
                        <p>Identifies the transformation that has been applied to the message
                        payload body.  Contains one of the values defined by IANA for the
                        Content-Coding values of [<bibref ref="IANA_HTTP_PARAMS" />].  
                        Defaults to "identity" if the property is not present.</p>
                    </item>
                    <item>
                        <p>Corresponds to the JMS Message property named SOAPJMS_contentEncoding</p>
                    </item>
                    <item><p><termdef id="contentEncodingNotSupported" term="contentEncodingNotSupported">
                        <assert class="document" id="Protocol-2039" cr-id=""  preamble="(contentEncoding)">
                        If the content encoding is specified, it is checked to
                        ensure that it matches the content encoding values supported. A fault
                        <rfc2119>MUST</rfc2119> be generated with subcode <term>contentEncodingNotSupported</term> 
                        if the encoding values do not match.</assert></termdef></p>
                    </item>
                    <item><p>Restriction: the meaning of the property is not defined for
                     composite messages (messages with a Content-Type of "multipart" or
                     "message"), only for discrete messages (Content-Type "application" or
                     "text", for this specification).</p>
                    </item>
                </ulist>
            </def>
        </gitem>
    </glist>

        <div4 id="binding-message-props-xmp">
          <head>Setting JMS Message properties</head>
          <p>This section is non-normative and is intended to give an example of how a JMS Message property can be set.</p>
          <example>
	    	<head>Setting JMS Message properties</head>
	    	<eg xml:space="preserve"> 		<![CDATA[
import javax.jms.Message;
import javax.mail.internet.ContentType;
...

class ... {

  public void anotherMethod(Message jmsMessage, String targetService, ContentType type, URI requestURI) {

    jmsMessage.setStringProperty("SOAPJMS_targetService", targetService);

    // at least for this definition of the binding, the version here is always "1.0"
    jmsMessage.setStringProperty("SOAPJMS_bindingVersion", "1.0");

    // set the content type using the ContentType value already defined by javax.mail.
    jmsMessage.setStringProperty("SOAPJMS_contentType", type.toString() );

    //According to Basic Profile SOAP 1.2 HTTP binding does not use the SOAPAction header
    //However the soapAction is mandatory with SOAP 1.1 hence setting to empty string
    jmsMessage.setStringProperty("SOAPJMS_soapAction", "");

    // for the first message in an exchange, not a fault1
    jmsMessage.setBooleanProperty("SOAPJMS_isFault", false);

    jmsMessage.setStringProperty("SOAPJMS_requestURI", requestURI.toString() );
  }
}
	    	
	    	]]></eg>
	    	<!--<eg xml:space="preserve">SOAPJMS_bindingVersion		<![CDATA[javax.jms.Message.setStringProperty()]]></eg>
	    	<eg xml:space="preserve">SOAPJMS_contentType		<![CDATA[javax.jms.Message.setStringProperty()]]></eg>
	    	<eg xml:space="preserve">SOAPJMS_soapAction		<![CDATA[javax.jms.Message.setStringProperty()]]></eg>
	    	<eg xml:space="preserve">SOAPJMS_isFault   		<![CDATA[javax.jms.Message.setBooleanProperty()]]></eg>
	    	<eg xml:space="preserve">SOAPJMS_requestURI		<![CDATA[javax.jms.Message.setStringProperty()]]></eg>-->
	      </example>
        </div4>


      </div3> <!-- message properties -->

      <div3 id="binding-props-URI">
      <head>Binding of Properties to URI</head>

      <p>Implementations of this specification need to allow for the setting
      of the above properties.  Some properties, as mentioned above can be
      inferred from context, or provided by the application environment. 
      Some might be put into WSDL.  In many cases, it is desirable to
      represent those properties as part of a URL-like representation. In particular,
      this section describes how the properties above are used in the URI.  
      Note that the URI scheme also defines query parameters, and where the
      query parameter names are the same, the same meaning is intended here.</p>

      <p>For brevity, properties are shown without the <code>SOAPJMS</code> prefix.
      The "URI representation" column describes how the property is carried
      in the URI.</p>

      <table summary="properties are shown without the SOAPJMS prefix. The 'URI representation' column describes how the property is carried in the URI."
	     id="properties2URI"
	     border="1" cellspacing="0" cellpadding="5">
	<caption>
Binding of Properties to URI</caption>
      <thead><tr><th>Specification Property</th><th>URI Representation</th></tr></thead>
      <tbody>
      <tr><td>deliveryMode</td><td> as <code>deliveryMode</code> query parameter</td></tr>
      <tr><td>destinationName</td><td>as <code>jms-dest</code> portion of URI syntax</td></tr>
      <tr><td>jndiConnectionFactoryName</td><td> as <code>jndiConnectionFactoryName</code> query parameter</td></tr>
      <tr><td>jndiInitialContextFactory</td><td> as <code>jndiInitialContextFactory</code> query parameter</td></tr>
      <tr><td>jndiURL</td><td> as <code>jndiURL</code> query parameter</td></tr>
      <tr><td>jndiContextParameter</td><td>as a query parameter combining the string "jndi-" with the jndiContextParameter's name attribute</td></tr>
      <tr><td>replyToName</td><td> as <code>replyToName</code> query parameter</td></tr>
      <tr><td>topicReplyToName</td><td> as <code>topicReplyToName</code> query parameter</td></tr>      
      <tr><td>priority</td><td> as <code>priority</code> query parameter</td></tr>
      <tr><td>targetService</td><td> as <code>targetService</code> query parameter</td></tr>
      <tr><td>timeToLive</td><td> as <code>timeToLive</code> query parameter</td></tr>
      
      <!-- removed 2007-06-21 RAM
      <tr><td>destinationType</td><td> as <code>destinationType</code> query parameter</td><td>Should exclude</td></tr>
      -->
      
      </tbody></table>

      </div3> <!-- URI properties -->

      <div3 id="binding-other-props">
      <head>Other Properties</head>
      
      <p>It is possible to specify other properties on the URI but they do
      not affect processing. Any such properties will be included in the JMS
      Message property requestURI unless explicitly removed by the client.
      </p>

      </div3> <!-- other props -->
    </div2> <!-- properties -->

    <div2 id="authentication">
    <head>Authentication for SOAP/JMS</head>

        <p>Security, and in particular authentication, is a critical concern in most if not all
            environments where this binding will be utilized.  There are at least two places where
           authentication might need to occur &mdash; 1) authenticating to the registry (i.e. JNDI) where
           JMS Destinations are located, and 2) authenticating to the JMS system itself.
           Credentials such as usernames and passwords might be required to access directories and
           to obtain JMS Connections from ConnectionFactories.  This specification does not mandate
           how an implementation might obtain these credentials, although typically they can be
           available as API parameters, environment variables, or in thread context storage.
        </p>

        <p>Implementers of this binding are encouraged to consider the most appropriate way to expose
        authentication functionality to their users such that it meshes smoothly with the
        models exposed by their environments.</p>

        <note><p>Although technically possible, the specification of userid and/or password related
            properties in the URI is not recommended.</p></note>

    </div2>

    <div2 id="binding-message-body">
    <head>The JMS Message Body</head>

    <p>
    <assert class="document" id="Protocol-2027" cr-id="">
    The contents of the JMS Message body <rfc2119>MUST</rfc2119> be the SOAP payload as a 
    JMS <code>BytesMessage</code> or <code>TextMessage</code>.
    </assert>
    <assert class="document" id="Protocol-2072" cr-id="">
    While the requesting node can support either <code>BytesMessage</code> or
    <code>TextMessage</code>, the receiving node MUST support both <code>BytesMessage</code>
    and <code>TextMessage</code>.</assert>
    <assert class="document" id="Protocol-2073">
    If the message is formatted as a JMS <code>BytesMessage</code>, then the sender and 
    receiver <rfc2119>MUST</rfc2119> use the <code>writeBytes()</code> and <code>readBytes()</code> 
    methods, respectively.
    </assert>
    <termdef term="unsupportedJMSMessageFormat" id="unsupportedJMSMessageFormat">
    <assert class="document" id="Protocol-2028" cr-id="">
    A fault <rfc2119>MUST</rfc2119> be generated with subcode <term>unsupportedJMSMessageFormat</term> when the 
    arriving message format is not <code>BytesMessage</code> or <code>TextMessage</code>.
    </assert>
    </termdef>
    </p>
    
    <p>
    After being decoded according to the <termref def="contentEncoding">contentEncoding</termref> property, the
    bytes or characters of the JMS Message payload correspond to the MIME
    format as indicated by the definition of the <termref def="contentType">contentType</termref> property.
    In this way, the SOAP node determines the proper formatting of the SOAP payload irrespective of the underlying JMS message type, 
    and specifies an appropriate value for the <termref def="contentType">contentType</termref> property which describes it to the receiving SOAP node.
    
    <assert class="document" id="Protocol-2029" cr-id="">
    Specifically, if the payload is formatted as a MIME multipart message, 
    then the first byte or character encountered in the JMS Message body 
    <rfc2119>MUST</rfc2119> be the start of the MIME boundary 
    for the start of the first part 
    &mdash; what MIME Part One [<bibref ref="mime" />] section 2.5 calls a "Body Part".
    </assert> 
    
    <assert class="document" id="Protocol-2030" cr-id="">
    If the message is formatted as "<code>text/xml</code>" 
    or "<code>application/soap+xml</code>", 
    then the first byte or character of the JMS Message body 
    <rfc2119>MUST</rfc2119> be the start of a conforming XML document.
    </assert>
    </p>

    <div3 id="textmessage-considerations">
      <head>Considerations For Using TextMessage</head>
     
        <p>While the use of <code>TextMessage</code> might be attractive in some scenarios, 
        there are some considerations that go along with it.</p>
        
	    <ulist>
	    <item><p>Since the message is already in text format the "encoding" attribute in the XML header has to be ignored.</p></item>
	    <item><p>Messages with attachments will need to use <code>Content-Transfer-Encoding</code> for attachment parts.</p></item>
		<item><p>Depending on the range of characters used by the SOAP message, 
		using <code>TextMessage</code> might more than double the memory requirements to receive a message.</p></item>
		<item><p>The impact on network consumption ought to be measured for particular scenarios and JMS providers.	</p></item>
        <item><p>Use of the <termref def="contentEncoding">contentEncoding</termref> property is not defined, since the underlying message payload is not raw bytes.</p></item>		
	    </ulist>        
        
        <p>Since binary data needs to be encoded to be carried as text, SOAP 
        attachments via a <code>TextMessage</code> have the same concerns as the MIME specification 
        carrying messages over a 7-bit channel [<bibref ref="mime"/>].  
        The attachments will need to be encoded using one of the 
        <code>Content-Transfer-Encoding</code> options specified by MIME.  
        If the data is truly binary, such as a picture, a base64 encoding might be appropriate.</p>    
        
        <p>In typical scenarios, using <code>TextMessage</code> will almost 
        certainly dramatically increase the memory requirements.  
        This happens as a consequence of the JMS API <code>TextMessage.getText()</code>, 
        which returns a Java String.  
        The Java String class uses a UTF-16 representation to represent the data.  
        This in memory representation will generally be larger than the 
        corresponding <code>BytesMessage</code> representation.  
        For example, if the message contains only US-ASCII characters, 
        and is encoded into XML using UTF-8, the Java String representation of 
        the message will take exactly twice as much memory.
        </p>
        
        <p>The in memory UTF-16 representation, coupled with base64 encoding of an attachment, 
        will consume much more memory than the equivalent <code>BytesMessage</code> payload.  
        To begin with, a base64 conversion yields a ratio of 33% more characters than bytes.  
        Combined with a UTF-16 representation of those characters, the bytes required in 
        memory will be 167% more than the original binary data (an 8/3 ratio).  
        As a consequence, carefully consider any scenarios that use attachments with a <code>TextMessage</code>.
        </p>
        
        <p>As significant as the concerns around memory consumption might be, 
        the effects on network payload size are more difficult to predict.  
        Since the JMS API does not specify exactly how messages are handled, 
        the effects on network traffic are JMS provider-specific.  
        A JMS provider might be encoding a <code>TextMessage</code> with UTF-8, 
        and could further compress such messages.  
        With these two techniques, the data transferred via network calls 
        could end up being no larger than a corresponding <code>BytesMessage</code>
        representation, even with attachments.  
        However, only actual monitoring will determine specific effects of specific scenarios.  
        Clients of this specification who are using <code>TextMessage</code> are encouraged to do such monitoring.
        </p>
      </div3>

    </div2> <!-- message body -->

    <div2 id="binding-supported-meps">
    <head>Supported Message Exchange Patterns</head>

    <p><assert class="document" id="Protocol-2033" cr-id="">
    In the case of SOAP 1.1 there is no formal specification of 
    Message Exchange Patterns.     
    A conforming SOAP-JMS Binding instance <rfc2119>MUST</rfc2119> 
    support both the generic "request/response" and "one-way" 
    patterns as specified in this document.</assert></p>

    <p><assert class="document" id="Protocol-2032" cr-id="">In the case of SOAP 1.2 a conforming SOAP-JMS Binding instance <rfc2119>MUST</rfc2119>
    support the following message exchange patterns:</assert></p>

	<ulist>
		<item>
			<p>
			<code>http://www.w3.org/2003/05/soap/mep/request-response/</code>
			(defined in <xspecref
			href="http://www.w3.org/TR/soap12-part2/#singlereqrespmep">Request-Response
			Message Exchange Pattern</xspecref>)
			</p>
		</item>
		<item>
		    <p> <code>http://www.w3.org/2006/08/soap/mep/one-way/</code> (defined in
		    [<bibref ref="soap-one-way-mep" />])
		    </p>	    	
		</item>
	</ulist>


    <p>There are tables of JMS properties, and explanations of their values,
    in the remainder of this section.  Note that only the relevant
    properties (i.e. ones affected by this specification) have been included
    &mdash; other properties will continue to follow the normal JMS specification. 
    For instance, the JMSMessageID header will be present on all messages,
    and automatically generated by the underlying JMS implementation.</p>

      <div3 id="binding-support-topics">
      <head>Support for Topic destinations</head>
      
      <p>Topics can be used as destinations for SOAP messages over JMS. 
      However, due to the potential complexities around how topics might
      interact with message-exchange patterns, this specification provides
      no guidelines as to how that message exchange might work.  In
      particular, the "request-response" exchange clearly means something
      different when an unknown number of responses might be received.  Even
      the "one-way" exchange over a JMS topic differs in subtle ways from
      the same exchange over HTTP, including the fundamental question of
      whether the message is received at all, by any listeners.</p>

      <p>For these reasons, implementers and clients of this specification
      are advised to use caution when dealing with JMS topics.  We strongly
      encourage implementers to carefully document their choices around the
      use and support of topic destinations.</p>

      </div3> <!-- topic destinations -->
    </div2> <!-- supported meps -->

    <div2 id="binding-request-response">
    <head>Request-Response Message Exchange Pattern</head>

    <p>
    For binding instances using the <xspecref
    href="http://www.w3.org/TR/soap12-part2/#singlereqrespmep">Request-Response
    Message Exchange Pattern</xspecref>:</p>

    <ulist>
    <item><p>A SOAP Node instantiated at the JMS interface can take on the role 
    (i.e. the property <code>http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/Role</code>)
    of <code>RequestingSOAPNode</code>.</p></item>

    <item><p>A SOAP Node instantiated at the JMS interface can take on the role 
    (i.e. the property <code>http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/Role</code>) 
    of <code>RespondingSOAPNode</code>.</p></item>
    </ulist>

    <p>The remainder of this section consists of descriptions of the MEP
    state machine. In the state descriptions following, the states are
    defined as values for the property <code>http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/State</code>.</p>

    <p>Failure reasons as specified in the tables represent values of the
    property <code>http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/FailureReason</code> -
    their values are qualified names. If an implementation enters the "Fail" state,
    the <code>http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/FailureReason</code>
    property will contain the value specified for the particular transition.</p>

      <div3 id="requester-states">
      <head>Behaviour of Requesting SOAP Node</head>

        <div4 id="rr-requester-init">
        <head>Init</head>

        <p>In the "Init" state, a JMS request is formulated and transmission of the request is initiated. 
        The message is created as a JMS BytesMessage or TextMessage as defined in <specref ref='binding-message-body'/>. </p>
        <p>A number of the message header properties are implicitly created by the use of the JMS API.
        The following table shows how the binding properties described earlier
        explicitly affect the message constructed.</p>

        <table id='table22' border="1" cellspacing="0" cellpadding="5">
	    <caption>Init State Values</caption>
	    <thead><tr><th>Field</th><th>Value Set by Conforming Client</th></tr></thead>
        <tbody>
        <tr><th colspan="2">JMS Message Header</th></tr>

        <tr><td>JMSDeliveryMode</td><td>the value of the <termref def="deliveryMode">deliveryMode</termref> property or not set if not specified</td></tr>
        <tr><td>JMSExpiration</td><td>calculated from the value of the <termref def="timeToLive">timeToLive</termref> property or not set if not specified</td></tr>
        <tr><td>JMSPriority</td><td>the value of the <termref def="priority">priority</termref> property or not set if not specified</td></tr>
        <tr><td>JMSDestination</td><td>derived from the <termref def="destinationName">destinationName</termref> property</td></tr>
        <tr>
        	<td>JMSReplyTo</td>
        	<td>if the <termref def="replyToName">replyToName</termref> property is specified, this
        	is the JMS Destination object derived from that name. Otherwise the implementation has to
        	determine the reply queue, and use the JMS Destination object which represents that queue;
        	the queue can be a temporary queue generated as described in the JMS specification. </td>
       	</tr>

        <tr><th colspan="2">JMS Message properties</th></tr>
        <tr><td>SOAPJMS_requestURI</td><td>this is derived from the <termref def="requestURI">requestURI</termref> property</td></tr>
        <tr><td>SOAPJMS_bindingVersion</td><td>this is copied from the <termref def="bindingVersion">bindingVersion</termref> property</td></tr>
        <tr><td>SOAPJMS_soapAction</td><td>the value of the <termref def="soapAction">soapAction</termref> property or not set if not specified</td></tr>
        <tr><td>SOAPJMS_targetService</td><td>the value of the <termref def="targetService">targetService</termref> property or not set if not specified</td></tr>
        <tr><td>SOAPJMS_contentType</td><td>inferred from the SOAP Envelope and presence of attachments</td></tr>

        <tr><th colspan="2">JMS Message Body</th></tr>
        <tr><td>body</td><td>A SOAP envelope is serialized according to the media type specified in the JMS Message property <code>SOAPJMS_contentType</code></td></tr>
        </tbody></table>

        </div4> <!-- requester init -->

        <div4 id="rr-requester-request">
        <head>Requesting</head>

        <p>In the "Requesting" state, sending of the request continues while
        waiting for the start of the correlated response message. A correlated 
        response message is defined as follows: If the 
        <code>JMSCorrelationID</code> header field is set in the request message 
        then a correlated response message is one where the value of the 
        <code>JMSCorrelationID</code> header field is the same as the value 
        of the <code>JMSCorrelationID</code> of the request message. 
        If the <code>JMSCorrelationID</code> header field is not set 
        in the request message then a correlated response message is one 
        where the value of the <code>JMSCorrelationID</code> header field 
        is the same as the value of the <code>JMSMessageID</code> header 
        of the request message.</p>
        <p>
        <assert class="document" id="Protocol-2050" cr-id="">
        The <code>JMSReplyTo</code> header <rfc2119>MUST</rfc2119> be assigned a value.
        </assert>
        The response message will be received on the JMS Destination specified in the
        <code>JMSReplyTo</code> header above, and that Destination is where
        implementations need to listen.</p>

        <p>If a correlated response message is received then a transition to
        "Sending + Receiving" is made.</p>

        <p>If, for whatever reason (for example a timeout), no correlated
        response message is received then a failure reason
        <code>receptionFailure</code> is set and a transition to "Fail" is
        made.</p>
        
        </div4> <!-- requester request -->

        <div4 id="rr-requester-transition">
        <head>Sending + Receiving</head>

        <p>Receive a correlated message body that is assumed to contain a
        SOAP envelope serialised according to the rules for carrying a SOAP
        message in the media type specified in the JMS Message property
        <code>SOAPJMS_contentType</code>.</p>

        <p>If a well formed response message is received a transition to
        "Success" is made, and otherwise transition to "Fail".</p>

        </div4> <!-- requester transition -->
        
        <div4 id="rr-requester-complete">
        <head>Success and Fail</head>
        
        <p>"Success" and "Fail" are the terminal states of the
        Request-Response MEP. Control over the message exchange context
        returns to the local SOAP node.</p>
        
        </div4> <!-- requester complete -->
      </div3> <!-- requester "states" -->

      <div3 id="responder-states">
      <head>Behaviour of Responding SOAP Node</head>
      
        <div4 id="rr-responder-init">
        <head>Init</head>
        
        <p>Receive and validate the inbound request message.</p>

        <p>If a well formed request message is received a transition to the
        local SOAP node is made followed by a transition to the "Receiving"
        state.</p>

        <p>If a malformed request message is received a transition to "Fail"
        is made.</p>

        </div4> <!-- responder init -->

        <div4 id="rr-responder-receiving">
        <head>Receiving</head>

        <p>Waiting for Response Message to become available in <xspecref
        href="http://www.w3.org/TR/soap12-part2/#soapmec">Message Exchange
        Context</xspecref> as a result of processing the Request Message (note
        Request Message fully received on exit from Init state).</p>

        </div4> <!-- responder receiving -->

        <div4 id="responder-transition">
        <head>Receiving + Sending</head>
        
        <p>Completing Request Message reception and Response Message
        transmission. (Response Message sent on exit from Receiving State).</p>

        <p>The JMS response is formulated and transmission of the response is initiated. 
        <assert class="document" id="Protocol-2036" cr-id="">The Response Message <rfc2119>MUST</rfc2119> be created 
        using the same type as the corresponding Request Message, i.e. as a JMS <code>BytesMessage</code> or <code>TextMessage</code>.</assert>

        <assert class="document" id="Protocol-2037" cr-id=""> The message <rfc2119>MUST</rfc2119> be sent to the JMS Destination in the
        <code>JMSReplyTo</code> header of the Request Message.</assert>
        <assert class="document" id="Protocol-2038" cr-id=""> 
        If the <code>JMSCorrelationID</code> is set in the request message, 
        then the <code>JMSCorrelationID</code> header field in the response 
        message <rfc2119>MUST</rfc2119> be set to the same value as the <code>JMSCorrelationID</code> 
        header field in the request message. If the <code>JMSCorrelationID</code> 
        header field is not set in the request message, then the 
        <code>JMSCorrelationID</code> header field in the response message 
        <rfc2119>MUST</rfc2119> be set to the value of the <code>JMSMessageID</code> 
        header in the request message.</assert></p>
        
        <p>A number of the message header properties are implicitly created by the use of the JMS API.
        The following table shows how the binding properties described earlier explicitly affect the message constructed.</p>
        
        <table id='table23' border="1" cellspacing="0" cellpadding="5">
	    <caption>Receiving + Sending State Values</caption>
	    <thead><tr><th>Field</th><th>Value Set by Conforming Client</th></tr></thead>
        <tbody>

        <tr><th colspan="2">JMS Message Header</th></tr>
        <tr><td>JMSDeliveryMode</td><td>this ought to be the same as that specified on the request</td></tr>
        <tr><td>JMSExpiration</td><td>this is derived from the request. It is up to the responding node to decide whether to degrade for processing time.</td></tr>
        <tr><td>JMSCorrelationID</td><td>this is copied from the request <code>JMSCorrelationID</code> if it is set, or the request <code>JMSMessageID</code> if the request <code>JMSCorrelationID</code> is not set</td></tr>
        <tr><td>JMSDestination</td><td>this is copied from the <code>JMSReplyTo</code> property in the request</td></tr>

        <tr><th colspan="2">JMS Message properties</th></tr>
        <tr><td>SOAPJMS_requestURI</td><td>this is copied from the <termref def="requestURI">requestURI</termref> property in the request message</td></tr>
        <tr><td>SOAPJMS_bindingVersion</td><td>this is copied from the <termref def="bindingVersion">bindingVersion</termref> property</td></tr>
        <tr><td>SOAPJMS_contentType</td><td>inferred from the SOAP Envelope and presence of attachments</td></tr>
        <tr><td>SOAPJMS_isFault</td><td>set to <code>true</code> if the response is a SOAP fault, otherwise it can be absent</td></tr>

        <tr><th colspan="2">JMS Message Body</th></tr>
        <tr><td>body</td><td>A SOAP envelope is serialized according to the media type specified in the JMS Message property <code>SOAPJMS_contentType</code>.</td></tr>
        </tbody></table>

        <p>If a response message is successfully sent a transition to the
        "Success" state is made.</p>

        <p>If there is a failure to send a response message then failure
        reason <code>transmissionFailure</code> is set and a transition to
        "Fail" is made.</p>
        
        </div4> <!-- responder transition -->

        <div4 id="responder-complete">
        <head>Success and Fail</head>
        
        <p>"Success" and "Fail" are the terminal states for the
        Request-Response MEP. From the point-of-view of the local node this
        message exchange has completed.</p>
        
        </div4> <!-- responder-complete -->

      </div3> <!-- responder "states" -->
    </div2> <!-- request/response -->

    <div2 id="binding-one-way">
    <head>One-way Message Exchange Pattern</head>
    <p>The SOAP One-way MEP defines properties for the exchange of a 
    SOAP/JMS message which does not solicit a response.  For JMS messages sent to a Queue
    destination this MEP results in a SOAP message which will be
    received by zero or one receiver.  For JMS messages sent to a
    Topic destination this MEP results in SOAP message(s) which will be
    received by zero, one, or many receivers.</p>

    <p>This message exchange pattern is identified by the URI
    <code>http://www.w3.org/2006/08/soap/mep/one-way/</code>.
    </p>

    <p>For binding instances conforming to this specification:</p>

    <ulist> 
    <item><p>A SOAP Node instantiated at the sending JMS interface takes
    on the role (i.e. the property
    <code>http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/Role</code>,
    defined in Table 2, <xspecref
    href="http://www.w3.org/TR/soap12-part2/#tabmeppropdefs">Property
    definitions supporting the description of MEPs</xspecref>), of
    <code>SendingSOAPNode</code>.</p></item>

    <item><p>A SOAP Node instantiated at the receiving JMS interface takes
    on the role (i.e. the property
    <code>http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/Role</code>)
    of <code>ReceivingSOAPNode</code>.</p></item>
    </ulist>

    <p>The remainder of this section consists of descriptions of the MEP.  Failure reasons represent values of the
    property <code>http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/FailureReason</code>
    &mdash; their values are qualified names. If a MEP instance terminates with a fault, then the
    <code>http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/FailureReason</code>
    property will contain an value identifying the fault.</p>

      <div3 id="sender-states">
      <head>Behaviour of Sending SOAP Node</head>
    
        <p>The message is created as a JMS BytesMessage or TextMessage as defined in <specref ref='binding-message-body'/></p>
        <p><assert class="document" id="Protocol-2051" cr-id="">
        The <code>JMSReplyTo</code> header <rfc2119>MUST NOT</rfc2119> be assigned a value.
        </assert></p>
        <p>If the Sender receives a message transmission failure, then the
        <code>http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/FailureReason</code> property 
        is set to <code>transmissionFailure</code> and the message exchange is terminated with a fault.</p>
       
        <p>A number of the message header properties are implicitly created by the use of the JMS API.
        The following table shows how the binding properties described earlier explicitly affect the message constructed.</p>
       
        <table id='table24' border="1" cellspacing="0" cellpadding="5">
	    <caption>Sending SOAP Node Values</caption>
	    <thead><tr><th>Field</th><th>Value Set by Conforming Client</th></tr></thead>
        <tbody>

        <tr><th colspan="2">JMS Message Header</th></tr>
        <tr><td>JMSDeliveryMode</td><td>the value of the <termref def="deliveryMode">deliveryMode</termref> property or not set if not specified</td></tr>
        <tr><td>JMSExpiration</td><td>calculated from the value of the <termref def="timeToLive">timeToLive</termref> property or not set if not specified</td></tr>
        <tr><td>JMSPriority</td><td>the value of the <termref def="priority">priority</termref> property or not set if not specified</td></tr>
        <tr><td>JMSDestination</td><td>derived from the <termref def="destinationName">destinationName</termref> property</td></tr>

        <tr><th colspan="2">JMS Message properties</th></tr>
        <tr><td>SOAPJMS_requestURI</td><td>this is derived from the <termref def="requestURI">requestURI</termref> property</td></tr>
        <tr><td>SOAPJMS_bindingVersion</td><td>this is copied from the <termref def="bindingVersion">bindingVersion</termref> property</td></tr>
        <tr><td>SOAPJMS_soapAction</td><td>the value of the <termref def="soapAction">soapAction</termref> property or not set if not specified</td></tr>
        <tr><td>SOAPJMS_targetService</td><td>the value of the <termref def="targetService">targetService</termref> property or not set if not specified</td></tr>
        <tr><td>SOAPJMS_contentType</td><td>inferred from the SOAP Envelope and presence of attachments.</td></tr>

        <tr><th colspan="2">JMS Message Body</th></tr>
        <tr><td>body</td><td>A SOAP envelope is serialized according to the media type specified in the JMS Message property <code>SOAPJMS_contentType</code>.</td></tr>
        </tbody></table>
      </div3> <!-- sender "states" -->

      <div3 id="receiver-states">
      <head>Behaviour of Receiving SOAP Node</head>
     
     	<p>The receiving node follows the rules defined in [<bibref ref="soap-one-way-mep" />].</p>
      </div3> <!-- receiver "states" -->
    </div2> <!-- one-way -->

    <div2 id="binding-faults">
    <head>Faults</head>

    <p>The SOAP fault subcodes listed throughout this document, and consolidated here, include:</p>

    <ulist>
    <item><p><termref def="contentTypeMismatch">contentTypeMismatch</termref> </p></item>
    <item><p><termref def="malformedRequestURI">malformedRequestURI</termref></p></item>
    <item><p><termref def="mismatchedSoapAction">mismatchedSoapAction</termref> </p></item>
    <item><p><termref def="missingContentType">missingContentType</termref></p></item>
    <item><p><termref def="missingRequestURI">missingRequestURI</termref> </p></item>
    <item><p><termref def="missingSoapAction">missingSoapAction</termref> </p></item>
    <item><p><termref def="missingTargetService">missingTargetService</termref> </p></item>
    <item><p><termref def="targetServiceNotAllowedInRequestURI">targetServiceNotAllowedInRequestURI</termref> </p></item>
    <item><p><termref def="unrecognizedBindingVersion">unrecognizedBindingVersion</termref> </p></item>
    <item><p><termref def="unsupportedJMSMessageFormat">unsupportedJMSMessageFormat</termref> </p></item>
    <item><p><termref def="unsupportedLookupVariant">unsupportedLookupVariant</termref> </p></item>
    <item><p><termref def="contentEncodingNotSupported ">contentEncodingNotSupported </termref> </p></item>
    </ulist>

    <p>The above subcodes are the local name in the <code>soapjms</code> namespace,
    appearing, for example, as <termref def="malformedRequestURI"> soapjms:malformedRequestURI</termref>.</p>

    <p>In SOAP 1.2, the subcodes above are used as-is in the <code>env:Value</code>
    element of the <code>env:Subcode</code> for a SOAP Fault.  The following shows
    an example of a SOAP 1.2 Fault payload with the
    <code>contentTypeMismatch</code> subcode:</p>

<example id='SOAP12FaultPayload'>
<head>SOAP 1.2 Fault payload with the contentTypeMismatch subcode</head>
<eg><![CDATA[<env:Envelope
   xmlns:env="http://www.w3.org/2003/05/soap-envelope"
   xmlns:soapjms="]]>&nsuri;<![CDATA["
   xmlns:xml="http://www.w3.org/XML/1998/namespace">
 <env:Body>
  <env:Fault>
   <env:Code>
     <env:Value>env:Sender</env:Value>
     <env:Subcode>
      <env:Value>soapjms:contentTypeMismatch</env:Value>
     </env:Subcode>
   </env:Code>
   <env:Reason>
     <env:Text xml:lang="en">The content type of the JMS payload does 
                             not match the XML.</env:Text>
   </env:Reason>
  </env:Fault>
 </env:Body>
</env:Envelope>]]></eg>
</example>

    <p>This specification does not mandate any particular text for the
    <code>env:Text</code> child element of the <code>env:Reason</code> element.</p>

    <p>The SOAP 1.1 specification does not support subcodes directly.  In
    that scenario, the <code>faultcode</code> element uses a QName that matches the subcode
    for SOAP 1.2.  The <code>faultstring</code> element can contain textual fault information. The same error as above, shown in SOAP 1.1:</p>

<example id='SOAP11FaultPayload'>
<head>SOAP 1.1 Fault payload with the contentTypeMismatch subcode</head>
<eg><![CDATA[<env:Envelope
     xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
   <env:Body>
       <env:Fault xmlns:soapjms="]]>&nsuri;<![CDATA[">
           <faultcode>soapjms:contentTypeMismatch</faultcode>
           <faultstring>The content type of the JMS payload does not match the XML.</faultstring>
       </env:Fault>
   </env:Body>
</env:Envelope>]]></eg></example>
    </div2> <!-- faults -->

  </div1> <!-- soap binding -->

  <div1 id="wsdl-extensions">
  <head>WSDL Usage</head>

    <div2 id="wsdl-overview">
    <head>Overview</head>

    <p>These next sections describe how to indicate the use of SOAP over JMS
    in WSDL.  We begin with complete examples, and then describe the
    individual pieces and parts in the sections which follow.</p>

    <p>The section <specref ref="soap-binding" /> above contains the
    actual rules by which SOAP messages are sent and received using JMS.  
    This section indicates how WSDL can be used to
    indicate the use and control the operation of that binding.</p>

    <p>For general information on extending SOAP bindings in WSDL,
    please refer to section 3, <xspecref href="http://www.w3.org/TR/wsdl#_soap-b">SOAP Binding</xspecref>,
    <bibref ref="wsdl11" />.  For information about accepted
    SOAP 1.2 bindings, see [<bibref ref="wsdl11forsoap12" />].</p>

    </div2> <!-- overview -->

    <div2 id="wsdl-11-overview">
    <head>WSDL 1.1 Extensions Overview</head>

    <ulist>
    <item><p>The transport attribute of the <code>wsdl11soap11:binding</code> or
    <code>wsdl11soap12:binding</code> element gets a new URL reflecting a JMS transport.</p></item>

    <item><p>Allows use of SOAPAction header, even though it is explicitly
    disallowed by WSDL specification.</p></item>

    <item><p>Defines how to set various properties to control the behavior
    (connection parameters, runtime setting) of the binding.</p></item>

    <item><p>Locates the service using a JMS URI.</p></item>
    </ulist>

    </div2> <!-- wsdl 1.1 -->

    <div2 id="wsdl-11-detail">
    <head>WSDL 1.1 Extensions Detail</head>
      <p>This section is normative.</p>
      <p>This section describes the optional feature: soapjms:WSDL11 [<code>&nsuri;WSDL11</code>].
      To focus on the salient details, all of the WSDL examples in this
      section show only a portion of a WSDL file in question.</p>

      <div3 id="wsdl-11-example">
      <head>Example</head>

      <p>The WSDL 1.1 specification includes in
      section 1.2, <xspecref
      href="http://www.w3.org/TR/wsdl#_wsdl">WSDL Document
      Example</xspecref>, the example <xspecref
      href="http://www.w3.org/TR/wsdl#_example1">Example 1 SOAP 1.1
      Request/Response via HTTP</xspecref>.</p>

      <p>The following example illustrates a new service description which
      assumes the original service available over HTTP is also made
      available over JMS.</p>

      <p>Lines 14-33 are a new binding for specifying that JMS is to be
      used, line 15 shows the transport URI in <code>&lt;wsdl11soap11:binding></code>, and   
      lines 17-22  show the extension properties in the <code>&lt;wsdl11soap11:binding></code>.
      </p>
      <p>Lines 40-42 are also additions to specify the location at which
      this new implementation exists.  
      Line 41 shows the JMS URI Scheme <code>jms:</code> in the <code>&lt;wsdl11soap11::address></code>.</p>



<example id='wsdl11jms'>
<head>WSDL 1.1 JMS Binding</head>
<eg><![CDATA[1     <wsdl11:binding name="StockQuoteSoapBinding" type="tns:StockQuotePortType">
2        <wsdl11soap11:binding style="document" 
                transport="http://schemas.xmlsoap.org/soap/http"/>
3         <wsdl11:operation name="GetLastTradePrice">
4            <wsdl11soap11:operation soapAction="http://example.com/GetLastTradePrice"/>
5           <wsdl11:input>
6               <wsdl11soap11:body use="literal"/>
7            </wsdl11:input>
8           <wsdl11:output>
9               <wsdl11soap11:body use="literal"/>
10          </wsdl11:output>
11        </wsdl11:operation>
12    </wsdl11:binding>
13
14   <wsdl11:binding name="StockQuoteSoapJMSBinding" type="tns:StockQuotePortType" 
              xmlns:soapjms="]]>&nsuri;<![CDATA[">
15       <wsdl11soap11:binding style="document" 
              transport="]]>&nsuri;<![CDATA["/>
16
17       <!-- We want this binding to use a particular CF class -->
18       <soapjms:jndiConnectionFactoryName>
19         sample.jms.ConnectionFactory
20       </soapjms:jndiConnectionFactoryName>
21       <!-- Specify PERSISTENT delivery mode -->
22       <soapjms:deliveryMode>PERSISTENT</soapjms:deliveryMode>
23
24       <wsdl11:operation name="GetLastTradePrice">
25         <wsdl11soap11:operation soapAction="http://example.com/GetLastTradePrice"/>
26         <wsdl11:input>
27             <wsdl11soap11:body use="literal"/>
28         </wsdl11:input>
29         <wsdl11:output>
30             <wsdl11soap11:body use="literal"/>
31          </wsdl11:output>
32       </wsdl11:operation>
33   </wsdl11:binding>
34
35   <wsdl11:service name="StockQuoteService">
36       <wsdl11:documentation>My first service</wsdl11:documentation>
37       <wsdl11:port name="StockQuotePort" binding="tns:StockQuoteSoapBinding">
38           <wsdl11soap11:address location="http://example.com/stockquote"/>
39       </wsdl11:port>
40       <wsdl11:port name="StockQuotePort_jms" binding="tns:StockQuoteSoapJMSBinding">
41           <wsdl11soap11:address location="jms:jndi:myQueue?targetService=stockquote
                                   &amp;priority=8&amp;replyToName=interested&amp;userprop=mystuff"/>
42       </wsdl11:port>
43   </wsdl11:service>]]></eg></example>

      <p>The key points to notice are:</p>

      <ulist>
      <item><p>The transport URI in <code>&lt;wsdl11soap11:binding></code> (line 15)</p></item>
      <item><p>The jms: URI in the <code>&lt;wsdl11soap11:address></code> (line 41)</p></item>
      <item><p>The extension properties in the <code>&lt;wsdl11soap11:binding></code> (lines 17-22)</p></item>
      </ulist>

      </div3> <!-- wsdl 11 example -->

      <div3 id="wsdl-11-transport-id">
      <head>WSDL 1.1 Transport Identification</head>

      <p>
      For each of SOAP 1.1 and SOAP 1.2, the <att>transport</att> attribute of the
		<xspecref href="http://www.w3.org/TR/wsdl#_soap-b" >wsdl11soap11:binding</xspecref> element, 
	    and the <xspecref href="http://www.w3.org/TR/wsdl#_soap-b" >wsdl11soap12:binding</xspecref> element,
		respectively, indicate the transport value.  
        <assert class="document" id="WSDLUsage-3003" cr-id="">To indicate that this
		SOAP/JMS binding is in use, the <att>transport</att> attribute MUST be set to the
		value <code>&nsuri;</code>.</assert>
      </p>


<example id='wsdl11soap11transport'>
<head>SOAP 1.1 Binding for WSDL 1.1 Transport Identification</head>
<eg>&lt;wsdl11soap11:binding style="document" 
                 transport="&nsuri;"/></eg>
</example>
      </div3> <!-- transport identification -->

      <div3 id="wsdl-11-soapaction">
      <head>WSDL 1.1 SOAP Action</head>

      <p>The <xspecref href="http://www.w3.org/TR/wsdl#_soap:operation">wsdl11soap11:operation</xspecref>
      portion of the WSDL specification explicitly disallows use of the
      <att>soapAction</att> attribute in non-HTTP bindings. 
This specification
      supersedes that requirement, and allows the use of <att>soapAction</att> in
      the <code>wsdl11soap11:operation</code> element for SOAP/JMS bindings.  This value
      corresponds to the property <termref def="soapAction">soapAction</termref>.</p>

      </div3> <!-- soap action -->

      <div3 id="wsdl-11-properties">
      <head>Specifying Properties In WSDL 1.1</head>

      <p>
      Various JMS properties described in the SOAP/JMS binding specification
can be set in four places in the WSDL &mdash; the binding, the service, the
port, and the URI for the port. Values specified at the service will
propagate to all ports. Values specified at the binding will
propagate to all ports using that binding. For example, the
<termref def="jndiInitialContextFactory">jndiInitialContextFactory</termref> can be indicated for a <code>wsdl11:service</code>, and it
is then implied for all of the contained <code>wsdl11:port</code> elements.</p>

<p><assert class="document" id="WSDLUsage-3001" cr-id="">If a property is specified at multiple levels within the WSDL document, 
the most specific setting <rfc2119>MUST</rfc2119> take precedence (URI specified in the 
address element's location attribute first, then other properties set on 
the port, then service, then 
binding).</assert></p>


      <p>In the following example, notice the <termref def="timeToLive">timeToLive</termref> property &mdash; for
      the <code>quickPort</code> port, the value will be 10 (specified at the port
      level).  For the <code>slowPort</code> port, the value will be 100 (specified at
      the service level).  The setting in the binding is, in this example,
      always overridden.</p>

<example id='wsdl11properties'>
<head>Specifying Properties in WSDL 1.1</head>
<eg>
<![CDATA[<wsdl11:binding name="exampleBinding">
  ...
  <soapjms:timeToLive>200</soapjms:timeToLive>
</wsdl11:binding>

<wsdl11:service name="exampleService">
  <soapjms:jndiInitialContextFactory>
    com.example.jndi.InitialContextFactory
  </soapjms:jndiInitialContextFactory>
  <soapjms:timeTolive>100</soapjms:timeToLive>
  ...
  <wsdl11:port name="quickPort" binding="tns:exampleBinding">
    ...
    <soapjms:timeToLive>10</soapjms:timeToLive>
  </wsdl11:port>
  <wsdl11:port name="slowPort" binding="tns:exampleBinding">
    ...
  </wsdl11:port>
</wsdl11:service>]]></eg>
</example>
      </div3> <!-- wsdl 11 properties -->

      <div3 id="wsdl-11-url">
      <head>Specifying Properties Via the JMS URI</head>

      <p>Some of the above information can be put in the JMS URI. When expressing properties from the SOAP/JMS binding
      in the URI, you do not need the namespace prefix &mdash; just use the
      property name, such as "<code>priority</code>".</p>

      <p>This URI is found as the value of the <att>location</att> attribute
      on the <xspecref href="http://www.w3.org/TR/wsdl#_soap:address"><phrase><code>&lt;wsdl11soap11:address></code></phrase></xspecref>
      or <xspecref href="http://www.w3.org/TR/wsdl#_soap:address"><phrase><code>&lt;wsdl11soap12:address></code></phrase></xspecref>
      element when using SOAP 1.1 and SOAP 1.2, respectively.
      <assert class="document" id="WSDLUsage-3004" cr-id="">
      The value of the <att>location</att> attribute <rfc2119>MUST</rfc2119> be a URI corresponding to a
		JMS Destination, and <rfc2119>SHOULD</rfc2119> be a "jms" scheme URI.</assert>   
       The characters in the URI need to be encoded
       ("%20" for space, for example) as per normal URI escaping rules, and the
        resulting URI needs to be encoded as per normal XML rules ("&amp;amp;" for
        &amp;) when serialized into an XML attribute.		
      </p>

<example id='jmsURIproperties'>
<head>Specifying WSDL 1.1 Properties Via the JMS URI</head>
<eg><![CDATA[<wsdl11:port .... >
       <wsdl11soap11:address
location="jms:jndi:destinationName?targetService=service%20Test&amp;priority=5"/>
       
</wsdl11:port>]]></eg></example>

      </div3> <!-- wsdl 11 properties in url -->
    </div2> <!-- wsdl 11 detail -->

	<div2 id="wsdl-properties">
		<head>Properties</head>

		<p><assert class="document" id="WSDLUsage-3002" cr-id="">
			The XML elements
			<termref def="jndiConnectionFactoryName">jndiConnectionFactoryName</termref>,
			<termref def="jndiInitialContextFactory">jndiInitialContextFactory</termref>,
			<termref def="jndiURL">jndiURL</termref>,
			<termref def="deliveryMode">deliveryMode</termref>,
			<termref def="priority">priority</termref>,
			<termref def="timeToLive">timeToLive</termref>, and
			<termref def="replyToName">replyToName</termref>,
			in the soapjms namespace, <rfc2119>MUST</rfc2119>
			be supported when used in the context of the
			WSDL service, port, and binding elements.
			</assert>
			This specification does not define any use outside of those elements.
		</p>

    </div2> <!-- properties -->

  </div1> <!-- wsdl usage -->

</body>

<back>



  <div1 id="references">
  <head>References</head>

  <div2 id="normative-references">
  <head>Normative References</head>
  <blist>

  <bibl key="IETF RFC 2045"
	href="http://www.ietf.org/rfc/rfc2045.txt" id="mime">	   
    <titleref>Multipurpose Internet Mail Extensions (MIME) Part One:
    Format of Internet Message Bodies</titleref>, N. Freed,
    N. Borenstein, Authors. Internet Engineering Task Force, November
    1996. Available at http://www.ietf.org/rfc/rfc2045.txt.
  </bibl>

  <bibl key="IETF RFC 2119" href="http://www.ietf.org/rfc/rfc2119.txt"
	id="rfc2119">
    <titleref>Key words for use in RFCs to Indicate Requirement
    Levels</titleref>, S. Bradner, Author. Internet Engineering Task
    Force, March 1997.  Available at
    http://www.ietf.org/rfc/rfc2119.txt.
  </bibl>
      
  <bibl key="IETF RFC 3986" href="http://www.ietf.org/rfc/rfc3986.txt"
	id="rfc3986">
    <titleref>Uniform Resource Identifier (URI): Generic Syntax
    </titleref>, T. Berners-Lee, R. Fielding, L. Masinter. Internet Engineering Task Force,
    January 2005.  Available at http://www.ietf.org/rfc/rfc3986.txt.
  </bibl>
  
  <bibl key="IETF RFC 6167" id="jmsuri" href="http://www.ietf.org/rfc/rfc6167.txt">
    <titleref>URI Scheme for Java Message Service
    1.0</titleref>, M. Phillips, P. Adams, D. Rokicki, and E. Johnson, 
    Authors. Internet Engineering Task Force, April 2011. 
    Available at http://www.ietf.org/rfc/rfc6167.txt
  </bibl>
      
  <bibl href="http://www.oracle.com/technetwork/java/jms/index.html"
	key="Java Message Service"
	id="jms">
    <titleref>Java Message Service (JMS) 1.1</titleref>, M. Hapner,
    et. al., Authors. Sun Microsystems, Inc., 12 April 2002. Available at
    http://www.oracle.com/technetwork/java/jms/index.html
  </bibl>
  
  <bibl id="soap11" key="SOAP 1.1"
    href="http://www.w3.org/TR/2000/NOTE-SOAP-20000508/">
    <titleref>Simple Object Access Protocol (SOAP) 1.1</titleref>,
    D. Box, et al, Editors. DevelopMentor, International Business
    Machines Corporation, Lotus Development Corporation, Microsoft,
    and UserLand Software, 8 May 2000. This version of the SOAP 1.1 
    specification is <loc
    href="http://www.w3.org/TR/2000/NOTE-SOAP-20000508/">
    http://www.w3.org/TR/2000/NOTE-SOAP-20000508/</loc>.
    The latest version of the SOAP 1.1 
    specification is available at <loc
    href="http://www.w3.org/TR/soap/">http://www.w3.org/TR/soap/</loc>.
  </bibl>
      
  <bibl href="http://www.w3.org/Submission/soap11mtom10/"
    key="SOAP 1.1 Binding for MTOM 1.0" id="SOAP11-MTOM">
    <titleref>SOAP 1.1 Binding for MTOM 1.0</titleref>, Dimitar
    Angelov, et. al., Authors. International Business Machines
    Corporation, Microsoft Corporation, Inc., Oracle Corp. and SAP AG,
    5 April 2006. 
    This version of the SOAP 1.1 Binding for MTOM 1.0 
    specification is <loc
    href="http://www.w3.org/Submission/2006/SUBM-soap11mtom10-20060405/">
    http://www.w3.org/Submission/2006/SUBM-soap11mtom10-20060405/</loc>.
    The latest version of the SOAP 1.1 Binding for MTOM 1.0
    specification is available at <loc
    href="http://www.w3.org/Submission/soap11mtom10/">
    http://www.w3.org/Submission/soap11mtom10/</loc>.
  </bibl>

  <bibl id="soap12" key="SOAP 1.2 Messaging Framework"
    href="http://www.w3.org/TR/2007/REC-soap12-part1-20070427/">
    <titleref>SOAP Version 1.2 Part 1: Messaging Framework</titleref>,
    M.  Gudgin, M. Hadley, N. Mendelsohn, J-J. Moreau, H. Frystyk
    Nielsen, Editors.  World Wide Web Consortium, 24 June 2003,
    revised 27 April 2007. This version of the SOAP Version 1.2 Part
    1: Messaging Framework Recommendation is <loc
    href="http://www.w3.org/TR/2007/REC-soap12-part1-20070427/">
    http://www.w3.org/TR/2007/REC-soap12-part1-20070427/</loc>. The <loc
    href="http://www.w3.org/TR/soap12-part1/">latest version of SOAP
    Version 1.2 Part 1: Messaging Framework</loc> is available at
    http://www.w3.org/TR/soap12-part1/. 
  </bibl>

  <bibl id="soap12p2" key="SOAP 1.2 Part 2: Adjuncts"
    href="http://www.w3.org/TR/2007/REC-soap12-part2-20070427/">
    <titleref>SOAP Version 1.2 Part 2: Adjuncts (Second
    Edition)</titleref>, M. Gudgin, et al., Editors. World Wide Web
    Consortium, 24 June 2006, revised 27 April 2007. This version of
    the "SOAP Version 1.2 Part 2: Adjuncts (Second Edition)"
    Recommendation is
    <loc href="http://www.w3.org/TR/2007/REC-soap12-part2-20070427/">
    http://www.w3.org/TR/2007/REC-soap12-part2-20070427/</loc>. The <loc
    href="http://www.w3.org/TR/soap12-part2/">latest version of "SOAP
    Version 1.2 Part 2: Adjuncts"</loc> is available at
    http://www.w3.org/TR/soap12-part2/.
  </bibl>
  
  <bibl key="SOAP 1.2 Part 3: One-Way MEP" id="soap-one-way-mep" href="http://www.w3.org/TR/2007/NOTE-soap12-part3-20070702/">
    <titleref>SOAP 1.2 Part 3: One-Way MEP</titleref>, David Orchard,
    Author. World Wide Web Consortium, 2 July 2007. This version of
    the SOAP 1.2 Part 3: One-Way MEP is
    <loc href="http://www.w3.org/TR/2007/NOTE-soap12-part3-20070702/">
    http://www.w3.org/TR/2007/NOTE-soap12-part3-20070702/</loc>. 
    The latest version of the SOAP 1.2 Part 3: One-Way MEP is available at   
    <loc href="http://www.w3.org/TR/soap12-part3/">http://www.w3.org/TR/soap12-part3/</loc>.    
  </bibl>
      
  <bibl href="http://www.w3.org/TR/SOAP-attachments" key="SOAP Messages with Attachments" id="SwA">
    <titleref>SOAP Messages with Attachments</titleref>, John Barton,
    Satish Thatte, and Henrik Frystyk Nielsen, Authors. Hewlett
    Packard Labs, Microsoft Corporation, 11 December 2000. This version of the 
    SOAP Messages with Attachments specification is     
    <loc href="http://www.w3.org/TR/2000/NOTE-SOAP-attachments-20001211">
    http://www.w3.org/TR/2000/NOTE-SOAP-attachments-20001211</loc>. 
    The latest version is available at <loc href="http://www.w3.org/TR/SOAP-attachments">
    http://www.w3.org/TR/SOAP-attachments</loc>. 
  </bibl>

  <bibl id="SOAP12-MTOM" key="SOAP MTOM" href="http://www.w3.org/TR/2005/REC-soap12-mtom-20050125/">
    <titleref>SOAP Message Transmission Optimization
    Mechanism</titleref>, N. Mendelsohn, M. Nottingham, and
    H. Ruellan, Editors. World Wide Web Consortium, W3C
    Recommendation, 25 January 2005. This version of SOAP Message
    Transmission Optimization Mechanism is <loc 
    href="http://www.w3.org/TR/2005/REC-soap12-mtom-20050125/">
    http://www.w3.org/TR/2005/REC-soap12-mtom-20050125/</loc>.
    The <loc
    href='http://www.w3.org/TR/soap12-mtom/'>latest version of the
    "SOAP Message Transmission Optimization Mechanism" document</loc>
    is available from <loc href='http://www.w3.org/TR/soap12-mtom/'>
    http://www.w3.org/TR/soap12-mtom/</loc>.
  </bibl>

  <bibl id="wsdl11" key="WSDL 1.1"
	href="http://www.w3.org/TR/2001/NOTE-wsdl-20010315">
    <titleref>Web Services Description Language (WSDL) 1.1</titleref>,
    E.  Christensen, et al, Authors. Ariba, International Business
    Machines Corporation, and Microsoft, 15 March 2001.  This version is 
    available at <loc href="http://www.w3.org/TR/2001/NOTE-wsdl-20010315">
    http://www.w3.org/TR/2001/NOTE-wsdl-20010315</loc>.  The latest version is
    available at <loc href="http://www.w3.org/TR/wsdl">http://www.w3.org/TR/wsdl</loc>. 
  </bibl>
      
  <bibl id="wsdl11forsoap12" key="WSDL 1.1 for SOAP 1.2" href="http://www.w3.org/Submission/2006/SUBM-wsdl11soap12-20060405/">
    <titleref>WSDL 1.1 Binding Extension for SOAP 1.2</titleref>,
    D. Angelov, et al, Authors. International Business Machines
    Corporation, Microsoft Corporation, Inc., Oracle Corp. and SAP AG,
    5 April 2006. This version is available at
    <loc href="http://www.w3.org/Submission/2006/SUBM-wsdl11soap12-20060405/">
    http://www.w3.org/Submission/2006/SUBM-wsdl11soap12-20060405/</loc>.  
    The latest version is available at
    <loc href="http://www.w3.org/Submission/wsdl11soap12/">
    http://www.w3.org/Submission/wsdl11soap12/</loc>.
  </bibl>

  <bibl id="xml" key="XML 1.0" href="http://www.w3.org/TR/2006/REC-xml-20060816/">
    <titleref>Extensible Markup Language (XML) 1.0 (Fourth
    Edition)</titleref>, T. Bray, J. Paoli, C. M. Sperberg-McQueen,
    E. Maler, and FranÃ§ois Yergeau, Editors. World Wide Web Consortium, 10 February
    1998, revised 16 August 2006. This version of the XML 1.0
    Recommendation is <loc href="http://www.w3.org/TR/2006/REC-xml-20060816/">
    http://www.w3.org/TR/2006/REC-xml-20060816/</loc>.  The
    <loc href="http://www.w3.org/TR/REC-xml/">latest version of XML
    1.0</loc> is available at http://www.w3.org/TR/REC-xml.
  </bibl>

  <bibl id="XML-NS" key="XML Namespaces"
	href="http://www.w3.org/TR/2006/REC-xml-names-20060816/">
    <titleref>Namespaces in XML 1.0</titleref>, T. Bray, D. Hollander, A.
    Layman, and R. Tobin, Editors. World Wide Web Consortium, 14 January 1999,
    revised 16 August 2006. This version of the Namespaces in XML
    Recommendation is <loc href="http://www.w3.org/TR/2006/REC-xml-names-20060816/">
    http://www.w3.org/TR/2006/REC-xml-names-20060816/</loc>. The
    <loc href="http://www.w3.org/TR/REC-xml-names/">latest version of
    Namespaces in XML</loc> is available at
  http://www.w3.org/TR/REC-xml-names. </bibl>

  <bibl key="XML Schema Datatypes" id="XMLSchemaPart2"
    href="http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/">
    <titleref>XML Schema Part 2: Datatypes Second Edition</titleref>, P. Byron
    and A. Malhotra, Editors. World Wide Web Consortium, 2 May 2001, revised 28
    October 2004. This version of the XML Schema Part 2 Recommendation is
    <loc href="http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/">
    http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/</loc>. The <loc
    href="http://www.w3.org/TR/xmlschema-2/">latest version of XML Schema
  Part 2</loc> is available at http://www.w3.org/TR/xmlschema-2.
  </bibl>

  <bibl id="XMLSchemaPart1" key="XML Schema Structures"
	href="http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/">
    <titleref>XML Schema Part 1: Structures Second Edition</titleref>, H.
    Thompson, D. Beech, M. Maloney, and N. Mendelsohn, Editors. World Wide Web
    Consortium, 2 May 2001, revised 28 October 2004. This version of the XML
    Schema Part 1 Recommendation is <loc href="http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/">
    http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/</loc>.
    The <loc
    href="http://www.w3.org/TR/xmlschema-1/">latest version of XML Schema
  Part 1</loc> is available at http://www.w3.org/TR/xmlschema-1. </bibl>
  
  <bibl id="IANA_HTTP_PARAMS" key="IANA HTTP PARAMS"
  href="http://www.iana.org/assignments/http-parameters/http-parameters.xml">
    <titleref>Hypertext Transfer Protocol (HTTP) Parameters, Internet Assigned Names And Numbers (IANA)</titleref>,
    Sept. 2, 2009, Available at <loc href="http://www.iana.org/assignments/http-parameters/http-parameters.xml">
    http://www.iana.org/assignments/http-parameters/http-parameters.xml</loc>. </bibl>
  </blist>
</div2> <!--  normative-references -->

  <div2 id="Informative-references">
  <head>Informative References</head>
  <blist>

  <bibl id="jax-ws" key="JAX-WS"
    href="">
    <titleref>The Java API for XML Web Services</titleref>,
    Jitendra Kotamraju, Specification Lead, Java Community Process, Oracle Corp. 
    10 Dec, 2009. Available at 
    <loc href="http://jcp.org/aboutJava/communityprocess/mrel/jsr224/index3.html">
    http://jcp.org/aboutJava/communityprocess/mrel/jsr224/index3.html</loc>.
  </bibl>

  <bibl href="http://www.w3.org/TR/soap12-email" key="SOAP 1.2 Email Binding" id="SOAP-EMAIL">
    <titleref>SOAP Version 1.2 Email Binding</titleref>, Highland Mary
    Mountain, Jacek Kopecky, Stuart Williams, Glen Daniels, and Noah
    Mendelsohn, Authors. World Wide Web Consortium, 3 July 2002. 
    This version of the SOAP Version 1.2 Email Binding is available at
    <loc href="http://www.w3.org/TR/2002/NOTE-soap12-email-20020703">
    http://www.w3.org/TR/2002/NOTE-soap12-email-20020703</loc>. 
    The latest version of the <loc href="http://www.w3.org/TR/soap12-email"> 
    SOAP Version 1.2 Email Binding</loc> is available at <loc
    href="http://www.w3.org/TR/soap12-email">http://www.w3.org/TR/soap12-email</loc>.
  </bibl>

  <bibl key="WSDL 2.0 Adjuncts" href="http://www.w3.org/TR/2007/REC-wsdl20-adjuncts-20070626/" id="wsdl20forsoap">
    <titleref>Web Services Description Language (WSDL) Version 2.0
    Part 2: Adjuncts</titleref>, R. Chinnici, H. Haas, A. Lewis, J-J.
    Moreau, D. Orchard, S. Weerawarana, Editors.  World Wide Web
    Consortium, 26 June 2007.  This version of the "Web Services
    Description Language (WSDL) Version 2.0 Part 2: Adjuncts"
    Recommendation is available at <loc href="http://www.w3.org/TR/2007/REC-wsdl20-adjuncts-20070626/">
    http://www.w3.org/TR/2007/REC-wsdl20-adjuncts-20070626/</loc>. The <loc
    href="http://www.w3.org/TR/wsdl20-adjuncts/">latest version of "Web
    Services Description Language (WSDL) Version 2.0 Part 2:
    Adjuncts"</loc> is available at <loc
    href="http://www.w3.org/TR/wsdl20-adjuncts/">http://www.w3.org/TR/wsdl20-adjuncts/</loc>
    .
  </bibl>       
  
  <bibl key="WSDL 2.0 Core Language" id="wsdl20" href="http://www.w3.org/TR/2007/REC-wsdl20-20070626/">
    <titleref>Web Services Description Language (WSDL) Version 2.0
    Part 1: Core Language</titleref>, R. Chinnici, J. J. Moreau,
    A. Ryman, S. Weerawarana, Editors. World Wide Web Consortium,
    26 June 2007. This version of the WSDL 2.0 specification is
    <loc href="http://www.w3.org/TR/2007/REC-wsdl20-20070626/">http://www.w3.org/TR/2007/REC-wsdl20-20070626/</loc>. 
    The <loc href="http://www.w3.org/TR/wsdl20/">latest version of WSDL
    2.0</loc> is available at <loc href="http://www.w3.org/TR/wsdl20/">http://www.w3.org/TR/wsdl20/</loc>.
  </bibl>  
   </blist>
</div2> <!--  Informative-references -->
 
  </div1> <!-- references -->
  
  <div1 id="schema">
  <head>Schema</head>
  	<example id='soapjmsschema'>
<eg><![CDATA[

<?xml version="1.0" encoding="utf-8"?>
<xs:schema targetNamespace="http://www.w3.org/2010/soapjms/"
    xmlns:soapjms="http://www.w3.org/2010/soapjms/"
    xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:complexType name="jndiContextParameterType">
  <xs:simpleContent>
    <xs:extension base="xs:string">
      <xs:attribute name="name" type="xs:string" use="required"/>
      <xs:attribute name="value" use="required">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:minLength value="1"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
    </xs:extension>
  </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="deliveryModeType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="PERSISTENT"/>
      <xs:enumeration value="NON_PERSISTENT"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="priorityType">
    <xs:restriction base="xs:int">
      <xs:minInclusive value="0"/>
      <xs:maxInclusive value="9"/>
    </xs:restriction>
  </xs:simpleType>
  
  <xs:simpleType name="FaultCodesType">
    <xs:restriction base="xs:QName">
      <xs:enumeration value="soapjms:contentTypeMismatch"/>
      <xs:enumeration value="soapjms:malformedRequestURI"/>
      <xs:enumeration value="soapjms:mismatchedSoapAction"/>
      <xs:enumeration value="soapjms:missingContentType"/>
      <xs:enumeration value="soapjms:missingRequestURI"/>
      <xs:enumeration value="soapjms:missingSoapAction"/>
      <xs:enumeration value="soapjms:missingTargetService"/>      
      <xs:enumeration value="soapjms:targetServiceNotAllowedInRequestURI"/>
      <xs:enumeration value="soapjms:unrecognizedBindingVersion"/>
      <xs:enumeration value="soapjms:unsupportedJMSMessageFormat"/>
      <xs:enumeration value="soapjms:unsupportedLookupVariant"/>
      <xs:enumeration value="soapjms:contentEncodingNotSupported"/>      
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="jndiContextParameter" type="soapjms:jndiContextParameterType"/>  
  <xs:element name="jndiConnectionFactoryName" type="xs:string"/>
  <xs:element name="jndiInitialContextFactory" type="xs:string"/>
  <xs:element name="jndiURL" type="xs:anyURI"/>  
  <xs:element name="deliveryMode" type="soapjms:deliveryModeType"/>
  <xs:element name="priority" type="soapjms:priorityType"/>  
  <xs:element name="timeToLive" type="xs:long"/>
  <xs:element name="replyToName" type="xs:string"/>
  <xs:element name="topicReplyToName" type="xs:string"/>
  
</xs:schema>

]]></eg></example>
  </div1>

	<inform-div1 id="wsdl11-example">
		<head>Complete WSDL 1.1 Example</head>
		
		<example id="full-wsdl">
		<eg>
<![CDATA[
<?xml version="1.0"?>
<wsdl11:definitions name="StockQuote"

targetNamespace="http://example.com/stockquote.wsdl"
          xmlns:tns="http://example.com/stockquote.wsdl"
          xmlns:stockquote="http://example.com/stockquote.xsd"
          xmlns:xsd="http://www.w3.org/2001/XMLSchema"
          xmlns:wsdl11soap11="http://schemas.xmlsoap.org/wsdl/soap/"
          xmlns:wsdl11="http://schemas.xmlsoap.org/wsdl/"
          xmlns:soapjms="http://www.w3.org/2010/soapjms/" 
          xmlns="http://schemas.xmlsoap.org/wsdl/">

    <wsdl11:types>
       <xsd:schema targetNamespace="http://example.com/stockquote.xsd">
           <xsd:element name="TradePriceRequest">
              <xsd:complexType>
                  <xsd:all>
                      <xsd:element name="tickerSymbol" type="xsd:string" />
                  </xsd:all>
              </xsd:complexType>
           </xsd:element>
           <xsd:element name="TradePrice">
              <xsd:complexType>
                  <xsd:all>
                      <xsd:element name="price" type="xsd:float" />
                  </xsd:all>
              </xsd:complexType>
           </xsd:element>
       </xsd:schema>
    </wsdl11:types>

    <wsdl11:message name="GetLastTradePriceInput">
        <wsdl11:part name="body" element="stockquote:TradePriceRequest"/>
    </wsdl11:message>

    <wsdl11:message name="GetLastTradePriceOutput">
        <wsdl11:part name="body" element="stockquote:TradePrice"/>
    </wsdl11:message>

    <wsdl11:portType name="StockQuotePortType">
        <wsdl11:operation name="GetLastTradePrice">
           <wsdl11:input message="tns:GetLastTradePriceInput"/>
           <wsdl11:output message="tns:GetLastTradePriceOutput"/>
        </wsdl11:operation>
    </wsdl11:portType>

     <wsdl11:binding name="StockQuoteSoapHTTPBinding" type="tns:StockQuotePortType">
        <wsdl11soap11:binding style="document" 
                transport="http://schemas.xmlsoap.org/soap/http"/>
         <wsdl11:operation name="GetLastTradePrice">
            <wsdl11soap11:operation soapAction="http://example.com/GetLastTradePrice"/>
           <wsdl11:input>
               <wsdl11soap11:body use="literal"/>
            </wsdl11:input>
           <wsdl11:output>
               <wsdl11soap11:body use="literal"/>
          </wsdl11:output>
        </wsdl11:operation>
    </wsdl11:binding>

   <wsdl11:binding name="StockQuoteSoapJMSBinding" type="tns:StockQuotePortType" >
       <wsdl11soap11:binding style="document" 
              transport="http://www.w3.org/2010/soapjms/"/>

       <!-- We want this binding to use a particular CF class -->
       <soapjms:jndiConnectionFactoryName>
         sample.jms.ConnectionFactory
       </soapjms:jndiConnectionFactoryName>

       <!-- Specify PERSISTENT delivery mode -->
       <soapjms:deliveryMode>PERSISTENT</soapjms:deliveryMode>

       <wsdl11:operation name="GetLastTradePrice">
         <wsdl11soap11:operation soapAction="http://example.com/GetLastTradePrice"/>
         <wsdl11:input>
             <wsdl11soap11:body use="literal"/>
         </wsdl11:input>
         <wsdl11:output>
             <wsdl11soap11:body use="literal"/>
          </wsdl11:output>
       </wsdl11:operation>
   </wsdl11:binding>

   <wsdl11:service name="StockQuoteService">
       <wsdl11:documentation>My first service</wsdl11:documentation>
       <wsdl11:port name="StockQuotePort" binding="tns:StockQuoteSoapHTTPBinding">
           <wsdl11soap11:address location="http://example.com/stockquote"/>
       </wsdl11:port>
       <wsdl11:port name="StockQuotePort_jms" binding="tns:StockQuoteSoapJMSBinding">
           <wsdl11soap11:address location="jms:jndi:myQueue?targetService=stockquote
                                 &amp;priority=8&amp;replyToName=interested&amp;userprop=mystuff"/>
       </wsdl11:port>
   </wsdl11:service>

</wsdl11:definitions>
]]></eg>
		</example>
        
	</inform-div1>
    <inform-div1 id="binding-examples">
    <head>SOAP/JMS Underlying Protocol Binding Examples</head>
    <p>This section contains examples of the SOAP request messages which will
be sent for the SOAP/JMS service described by the WSDL document in <specref
	  ref='wsdl11-example'/>.  The WSDL contains the following URI:</p>


<example id='jmsuriExample'>
<head>JMS URI</head>
<eg>jms:jndi:myQueue?targetService=stockquote
        &amp;priority=8
        &amp;replyToName=interested
        &amp;userprop=mystuff</eg></example>

  <p>The URI is augmented by the following SOAP/JMS properties from the
     StockQuoteSoapJMSBinding in the WSDL:
     </p>
      <ulist>
      <item><p><code>jndiConnectionFactoryName=sample.jms.ConnectionFactory</code></p></item>
      <item><p><code>deliveryMode=PERSISTENT</code></p></item>
      </ulist>
      
    <p>The JMS messages that invoke this service have three parts. The first part is 
    the Message Header that contains a set of fields defined in the JMS
    specification, the second part is a set of properties that represent
    optional header fields, and the last part is the Message Body.</p>
    
      <div2 id="soap-request-without-attachments">
      <head>SOAP Request without attachments</head>


      <p>The SOAP/JMS properties described in the <specref ref='jmsuriExample'/> and  
      <specref ref='wsdl11-example'/> are used in the JMS message as follows:</p>

        <table id='tableHeader1' border="1" cellspacing="0" cellpadding="5">
	  <caption>JMS Message Header Values</caption>
	  <thead><tr><th>Field</th><th>value</th><th>comments</th></tr></thead>
      <tbody>
      <tr><td>JMSMessage class</td><td>jms_bytes</td><td>a fixed value</td></tr>
      <tr><td>JMSType</td><td>null</td><td /></tr>
      <tr><td>JMSDeliveryMode</td><td>2</td><td /></tr>
      <tr><td>JMSExpiration</td><td>0</td><td /></tr>
      <tr><td>JMSPriority</td><td>8</td><td /></tr>
      <tr><td>JMSMessageID</td><td><code>ID:d438e0000001</code></td><td /></tr>
      <tr><td>JMSTimestamp</td><td><code>1092110476167</code></td><td /></tr>
      <tr><td>JMSCorrelationID</td><td>null</td><td /></tr>
      <tr><td>JMSDestination</td><td>A <code>Destination</code> object</td><td>resolved by JNDI from the destination name <code>myQueue</code></td></tr>
      <tr><td>JMSReplyTo</td><td>A <code>Destination</code> object</td><td>resolved by JNDI from the destination name <code>interested</code></td></tr>
      <tr><td>JMSRedelivered</td><td>false</td><td /></tr>
      </tbody></table>

        <table id='tableProperties1' border="1" cellspacing="0" cellpadding="5">
	  <caption>JMS Message Properties Values</caption>
      <thead><tr><th>Field</th><th>value</th><th>comments</th></tr></thead>
      <tbody>
      <tr><td>SOAPJMS_bindingVersion</td><td>1.0</td><td /></tr>
      <tr><td>SOAPJMS_targetService</td><td>stockquote</td><td>this is derived from the <termref def="targetService">targetService</termref> property</td></tr>
      <tr><td>SOAPJMS_requestURI</td><td>jms:jndi:myQueue?userprop=mystuff</td><td>this is derived from the <termref def="requestURI">requestURI</termref> property</td></tr>
      <tr><td>SOAPJMS_contentType</td><td>application/soap+xml</td><td>inferred from the SOAP Envelope and absence of attachments. In this case it is SOAP 1.2</td></tr>
      </tbody></table>

      <p>The following example shows a textual representation of the JMS message contents:</p>
      
<example id='jmssoap12e1'>
<head>Textual representation of the JMS message contents for a SOAP 1.2 request without attachments</head>
<eg><![CDATA[<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
  <env:Body>
    <tns:TradePriceRequest xmlns:tns="http://example.com/stockquote.xsd">
      <tickerSymbol>TickerSymbolValue</tickerSymbol>
    </tns:TradePriceRequest>
  </env:Body>
</env:Envelope>]]></eg></example>
      </div2> <!-- request w/o attachments -->

      <div2 id="soap-request-with-attachments">
      <head>SOAP Request with attachments</head>

      <p>The SOAP/JMS properties described in the <specref ref='jmsuriExample'/> and  
      <specref ref='wsdl11-example'/> are used in the JMS message as follows:</p>

        <table id='tableHeader2' border="1" cellspacing="0" cellpadding="5">
	  <caption>JMS Message Header Values</caption>
	  <thead><tr><th>Field</th><th>value</th><th>comments</th></tr></thead>
      <tbody>
      <tr><td>JMSMessage class</td><td>jms_bytes</td><td>a fixed value</td></tr>
      <tr><td>JMSType</td><td>null</td><td /></tr>
      <tr><td>JMSDeliveryMode</td><td>2</td><td /></tr>
      <tr><td>JMSExpiration</td><td>0</td><td /></tr>
      <tr><td>JMSPriority</td><td>8</td><td /></tr>
      <tr><td>JMSMessageID</td><td><code>ID:d438e0000001</code></td><td /></tr>
      <tr><td>JMSTimestamp</td><td><code>1092110476167</code></td><td /></tr>
      <tr><td>JMSCorrelationID</td><td>null</td></tr>
      <tr><td>JMSDestination</td><td>A <code>Destination</code> object</td><td>resolved by JNDI from the destination name <code>myQueue</code></td></tr>
      <tr><td>JMSReplyTo</td><td>A <code>Destination</code> object </td><td> resolved by JNDI from the destination name <code>interested</code></td></tr>
      <tr><td>JMSRedelivered</td><td>false</td><td /></tr>
      </tbody></table>

      <table id='tableProperties2' border="1" cellspacing="0" cellpadding="5">
	<caption>JMS Message Properties Values</caption>
	<thead><tr><th>Field</th><th>value</th><th>comments</th></tr></thead>
      <tbody>
      <tr><td>SOAPJMS_bindingVersion</td><td>1.0</td><td /></tr>
      <tr><td>SOAPJMS_targetService</td><td>stockquote</td><td>this is derived from the <termref def="targetService">targetService</termref> property</td></tr>
      <tr><td>SOAPJMS_requestURI</td><td>jms:jndi:myQueue?userprop=mystuff</td><td>this is derived from the <termref def="requestURI">requestURI</termref> property</td></tr>
      <tr><td>SOAPJMS_contentType</td><td>multipart/related type="application/xop+xml"; boundary="MIME_boundary"; charset=utf-8</td><td>inferred from the SOAP Envelope and use of MTOM. In this case it is SOAP 1.2</td></tr>
      </tbody></table>

      <p>The following example shows a textual representation of the JMS message contents:</p>

<example id='jmssoap12e2'>
<head>Textual representation of the JMS message contents for a SOAP 1.2 Request with attachments</head>
<eg><![CDATA[
--MIME_boundary
Content-Type: "application/xop+xml"; charset=utf-8; type="text/xml"
Content-Transfer-Encoding: 8bit
Content-ID: <945414389.1092086011970>

<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
  <env:Header>
    <myHdr>
      <xop:Include href="cid:XXX" xmlns:xop="http://www.w3.org/2004/08/xop/include"/>
    </myHdr>
  </env:Header>
  <env:Body>
    <tns:TradePriceRequest xmlns:tns="http://example.com/stockquote.xsd">
      <tickerSymbol>tickerSymbolValue</tickerSymbol>
    </tns:TradePriceRequest>
  </env:Body>
</env:Envelope>

--MIME_boundary
content-type:application/octet-stream
content-transfer-encoding:base64
content-id:<XXX>

YmxhaA== 
--MIME_boundary--

]]></eg></example>
      </div2> <!-- request with attachments -->
    </inform-div1> <!-- examples -->

  <inform-div1 id="JAX-WS-annotations">
    <head>JAX-WS @BindingType annotation values</head>
    
    <p>The Java API for XML Web Services [<bibref ref="jax-ws" />] specification defines the @BindingType annotation for 
    use with a JAX-WS endpoint implementation class. This annotation is 
    used to specify the binding to be used by the endpoint, with the default 
    being SOAP 1.1/HTTP. For example, the following annotation specifies the 
    SOAP 1.2/HTTP binding:</p>

    <example id='http-annotation'>
    <head>annotation specifying SOAP 1.2/HTTP binding</head>
    <eg><![CDATA[
    @WebService
    @BindingType("http://www.w3.org/2003/05/soap/bindings/HTTP/")
    public class MyEndpointImpl {
    ...
    }    ]]></eg></example>
    
    <p>In addition to the @BindingType annotation, the JAX-WS specification 
    also defines the specific values to be used with the annotation:</p>
    <ulist>
      <item><p>javax.xml.ws.soap.SOAPBinding.SOAP11HTTP_BINDING = 
      "http://schemas.xmlsoap.org/wsdl/soap/http"</p></item>
      <item><p>javax.xml.ws.soap.SOAPBinding.SOAP12HTTP_BINDING = 
      "http://www.w3.org/2003/05/soap/bindings/HTTP/"</p></item>
    </ulist>
    <p>Implementations of the SOAP/JMS binding specification which also support 
    the JAX-WS specification are encouraged to support the use of the following 
    @BindingType annotation values to indicate the use of the SOAP 1.1/JMS and 
    SOAP 1.2/JMS bindings, respectively:</p>
    <ulist>
      <item><p>SOAP 1.1/JMS: "http://www.w3.org/2010/soapjms/soap1.1"</p></item>
      <item><p>SOAP 1.2/JMS: "http://www.w3.org/2010/soapjms/soap1.2"</p></item>
    </ulist>

    </inform-div1> <!-- JAX-WS-annotations -->



  <inform-div1 id="wsdl-2.0">
    <head>WSDL 2.0</head>
      <p>This section describes using WSDL 2.0 in conjunction with SOAP/JMS.
      For information about SOAP bindings in WSDL 2.0 see [<bibref ref="wsdl20forsoap" />].</p>

    <div2 id="wsdl-20-overview">
    <head>WSDL 2.0 Extensions Overview</head>

    <ulist>
    <item><p>The <code>wsoap:protocol</code> attribute of the binding element gets a new
    URL reflecting a JMS transport.</p></item>

    <item><p>Defines how to set various properties to control the behavior
    (connection parameters, runtime setting) of the binding.</p></item>

    <item><p>Locates the service using a JMS URI.</p></item>
    </ulist>

    </div2> <!-- wsdl 2.0 -->

    <div2 id="wsdl-20-detail">
    <head>WSDL 2.0 Extensions Detail</head>
      <p>Due to insufficient testing by implementations, the working group chose to
      create this non-normative section that describes a WSDL 2.0 binding.</p>
      <p>Section <specref ref="wsdl-11-detail"/>  illustrates how a service originally available 
      over HTTP is made available over JMS using WSDL 1.1.  
      This section illustrates how to indicate the configuration for using SOAP over JMS with WSDL 2.0</p>
      
<eg role="needs-numbering"><![CDATA[<wsdl20:binding
   name="StockQuoteSoapJMSBinding" interface="tns:StockQuoteInterface" 
   type="http://www.w3.org/2006/01/wsdl/soap"
   wsoap:protocol="]]>&nsuri;<![CDATA["
   xmlns:soapjms="]]>&nsuri;<![CDATA[">
  
  <!-- We want this binding to use a particular CF class -->
  <soapjms:jndiConnectionFactoryName>
    sample.jms.ConnectionFactory
  </soapjms:jndiConnectionFactoryName>
  <!-- Specify PERSISTENT delivery mode -->
  <soapjms:deliveryMode>PERSISTENT</soapjms:deliveryMode>
</wsdl20:binding>

<wsdl20:service name="StockQuoteService" interface="tns:StockQuoteInterface">
  <wsdl20:documentation>My first service</wsdl20:documentation>
  <wsdl20:endpoint name="SOAPHTTP" binding="tns:StockQuoteSoapHTTPBinding"
        address="http://example.com/stockquote"/>
  <wsdl20:endpoint name="JMS" binding="tns:StockQuoteSoapJMSBinding"
        address="jms:jndi:myQueue/stockquote"/>
</wsdl20:service>]]></eg>

<p>
    Line 4 shows the protocol URI in the <att>wsoap:protocol</att>
    attribute of the <code>&lt;binding&gt;</code>.   To indicate that
    this SOAP/JMS binding is in use, the <att>wsoap:protocol</att>
    attribute needs to be set to the value <code>&nsuri;</code> .
</p>
      
      <p>Lines 7-11 show the use of WSDL 2.0 extension elements to set
      some of the properties of the connection.  In this case, you see
      the <code>&lt;soapjms:jndiConnectionFactoryName&gt;</code> and
      <code>&lt;soapjms:deliveryMode&gt;</code> elements defining the
      values for the <termref
      def="jndiConnectionFactoryName">jndiConnectionFactoryName</termref>
      and <termref def="deliveryMode">deliveryMode</termref>
      properties.  More generally, each allowed property can be
      expressed as a WSDL 2.0 extension element, typed appropriately
      for that property's value space.  For example, on line 11 above,
      <code>&lt;soapjms:deliveryMode&gt;</code> is of type
      <code>xsd:string</code>.  This XML representation then surfaces
      in the WSDL 2.0 Component Model (see next section) as an
      extension property.</p>
            
      <p>Lines 18-19 are also additions to specify the location at
      which this new implementation exists.  Line 19 showing the JMS
      URI Scheme <code>jms:</code> in the <code>address</code>
      attribute of the <code>&lt;endpoint&gt;</code> element.  As with
      the WSDL 1.1 binding, the connection properties can also be set in
      the URI.
      The value of the <att>address</att> attribute needs to be a 
      URI corresponding to a JMS Destination, and ought to be a 
      "jms" scheme URI.
      </p>

      <div3 id="wsdl20-components">
          <head>Relationship to WSDL 2.0 Component Model</head>
          <p>WSDL 2.0 is described abstractly in terms of a <xspecref href="http://www.w3.org/TR/wsdl20/#component_model">component model</xspecref>.
              Extensions such as the SOAP/JMS binding extend the predefined components with new properties
              and/or components.
          </p>

          <p>For this specification, each property in the list
          <termref def="jndiConnectionFactoryName">jndiConnectionFactoryName</termref>, 
          <termref def="jndiInitialContextFactory">jndiInitialContextFactory</termref>,
          <termref def="jndiURL">jndiURL</termref>, 
          <termref def="deliveryMode">deliveryMode</termref>, 
          <termref def="priority">priority</termref>, 
          <termref def="timeToLive">timeToLive</termref>, 
          and <termref def="replyToName">replyToName</termref>
          adds a WSDL Component Model Property with the same name to the containing WSDL 2.0 component.
          
          For instance,
          if the <emph>&lt;deliveryMode&gt;</emph> extension element appeared underneath the <emph>&lt;service&gt;</emph>
          element in a WSDL 2.0 description, it would result in a <termref def="deliveryMode">deliveryMode</termref> property added
          to the <xspecref href="http://www.w3.org/TR/wsdl20/#Service">Service</xspecref>
          component.</p>

          <div4 id="wsdl20-precedence"><head>Precedence</head>
      <p>
      Since the same property can be specified in multiple places, we need
      precedence rules, and in fact they are similar to those specified in
      section <specref ref="wsdl-11-properties"/>. 
      The most-specific setting overrides less-specific ones (URI specified in the endpoint element's
      address attribute, then other properties set on the endpoint, then service, then binding).
      For a particular interaction, the property might be found on the Endpoint component, then Service, 
      then Binding, taking whichever value you find first.
      </p>
          </div4>
      </div3>
      
    </div2> <!-- wsdl 20 detail -->

  </inform-div1>
  
  &acknowledgements;
  &assertion-summary;


        <inform-div1 id="change-log">
            <head>Change Log</head>
	    <p>@@This paragraph will be replaced by the change log. DO NOT TOUCH@@</p>
	</inform-div1>
</back>

</spec>

