You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ode.apache.org by bu...@apache.org on 2012/12/28 13:31:03 UTC

svn commit: r844101 - /websites/staging/ode/trunk/content/

Author: buildbot
Date: Fri Dec 28 12:31:02 2012
New Revision: 844101

Log:
Staging update by buildbot for ode

Removed:
    websites/staging/ode/trunk/content/ant-tasks.html
    websites/staging/ode/trunk/content/bpelc-task.html
    websites/staging/ode/trunk/content/commandline-tools.html
    websites/staging/ode/trunk/content/ddvalidate-command.html
    websites/staging/ode/trunk/content/port.html
    websites/staging/ode/trunk/content/pxe-activate-command.html
    websites/staging/ode/trunk/content/pxe-deactivate-command.html
    websites/staging/ode/trunk/content/pxe-deploy-command.html
    websites/staging/ode/trunk/content/pxe-sar-task.html
    websites/staging/ode/trunk/content/pxe-status-command.html
    websites/staging/ode/trunk/content/pxe-undeploy-command.html
    websites/staging/ode/trunk/content/rradd-command.html
    websites/staging/ode/trunk/content/rralias-command.html
    websites/staging/ode/trunk/content/rrdrop-command.html
    websites/staging/ode/trunk/content/rrget-command.html
    websites/staging/ode/trunk/content/rrls-command.html
    websites/staging/ode/trunk/content/sarcreate-command.html
    websites/staging/ode/trunk/content/sarls-command.html
    websites/staging/ode/trunk/content/urlalias-command.html
    websites/staging/ode/trunk/content/version-command.html
Modified:
    websites/staging/ode/trunk/content/   (props changed)
    websites/staging/ode/trunk/content/faq.html
    websites/staging/ode/trunk/content/restful-bpel-part-i.html
    websites/staging/ode/trunk/content/sitemap.html
    websites/staging/ode/trunk/content/wsdl-11-extensions-for-rest.html

Propchange: websites/staging/ode/trunk/content/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Fri Dec 28 12:31:02 2012
@@ -1 +1 @@
-1426473
+1426477

Modified: websites/staging/ode/trunk/content/faq.html
==============================================================================
--- websites/staging/ode/trunk/content/faq.html (original)
+++ websites/staging/ode/trunk/content/faq.html Fri Dec 28 12:31:02 2012
@@ -89,7 +89,7 @@
 <p><strong>Q.</strong> <em>What is ODE?</em>
 <strong>A.</strong> ODE is a system for executing reliable long-running process described using the WS-BPEL 2.0 standard and the BPEL4WS 1.1 vendor specification.</p>
 <p><strong>Q.</strong> <em>What is the architecture of ODE?</em>
-<strong>A.</strong> The architecture of ODE is described in the ODE [Architectural Overview]</p>
+<strong>A.</strong> The architecture of ODE is described in the ODE <a href="architectural-overview.html">Architectural Overview</a></p>
 <p><strong>Q.</strong> <em>In what language is ODE written?</em>
 <strong>A.</strong> ODE is written in Java and relies on JDK v5.0 features.</p>
 <p><strong>Q.</strong> <em>How does ODE ensure reliable process execution?</em>
@@ -101,7 +101,7 @@
 <p><strong>Q.</strong> <em>Is the entire</em> <em><a href="ws-bpel-20.html">WS-BPEL 2.0</a></em> <em>specification supported?</em>
 <strong>A.</strong> Most WS-BPEL 2.0 language features (and all important features) are supported. For specifics see the <a href="ws-bpel-20-specification-compliance.html">WS-BPEL 2.0 Specification Compliance</a> page.</p>
 <p><strong>Q.</strong> <em>Does ODE use native Java language constructs to execute BPEL, e.g., multiple threads for a</em> <em><code>&lt;bpel:flow&gt;</code></em> <em>or a</em> <code>while (...) {...}</code> <em>for a</em> <code>&lt;bpel:while&gt;</code>?
-<strong>A.</strong> No. ODE's BPEL implementation does not map the BPEL process into Java. Instead, it relies on a transactional concurrency framework <a href="/developerguide/jacob.html">JaCOb</a> similar to the theoretical concurrency model known as ACTORS [Agha86].</p>
+<strong>A.</strong> No. ODE's BPEL implementation does not map the BPEL process into Java. Instead, it relies on a transactional concurrency framework <a href="/developerguide/jacob.html">JaCOb</a> similar to the theoretical concurrency model known as ACTORS <a href="agha86.html">Agha86</a>.</p>
 <p><strong>Q.</strong> <em>Does ODE support BPEL processes developed in third-party tools?</em>
 <strong>A.</strong> Yes. Well-formed BPEL from any source should work.</p>
 <p><strong>Q.</strong> <em>Can ODE support extensions or alternatives to standard BPEL syntax and semantics?</em>
@@ -134,7 +134,7 @@
 <p><strong>Q.</strong> <em>Does ODE require a database? Which databases and versions does ODE support?</em>
 <strong>A.</strong> ODE does not depend directly on any specific database or persistence mechanism. Instead, ODE relies on a set of data access object ("DAO") interfaces that encapsulate the behaviors of a persistence layer. The ODE distribution includes a DAO implementation for JDBC databases built using <a href="http://openjpa.apache.org">OpenJPA</a>. This DAO implementation can support most common relational databases. Schemas suitable for <a href="http://www.mysql.com">MySQL</a> and <a href="http://db.apache.org/derby/">Derby</a> are provided. Relational databases lacking transaction or binary large object ("BLOB") capabilities are not supported. The DAO interfaces can readily be implemented to support alternative persistence mechanisms (e.g. JDO), XML datastores, or direct filesystem-based persistence.</p>
 <p><strong>Q.</strong> <em>Does ODE require a J2EE application server?</em>
-<strong>A.</strong> The core ODE components do not require a J2EE application server. ODE relies on a <a href="http://svn.apache.org/repos/asf/ode/trunk/bpel-api/src/main/java/org/apache/ode/bpel/iapi/">Integration API</a> that allows ODE to be embedded in most any environment that can supply the required facilities. An [AXIS2 Integration] is provided that permits ODE to be installed on a J2EE application server, or in a "dumb" Servlet container via a WAR file. A [JBI Integration] integration is also provided that permits ODE to be installed in a JBI container.</p>
+<strong>A.</strong> The core ODE components do not require a J2EE application server. ODE relies on a <a href="http://svn.apache.org/repos/asf/ode/trunk/bpel-api/src/main/java/org/apache/ode/bpel/iapi/">Integration API</a> that allows ODE to be embedded in most any environment that can supply the required facilities. An <a href="architectural-overview.html#ODEIntegrationLayers">AXIS2 Integration</a> is provided that permits ODE to be installed on a J2EE application server, or in a "dumb" Servlet container via a WAR file. A <a href="architectural-overview.html#ODEIntegrationLayers">JBI Integration</a> integration is also provided that permits ODE to be installed in a JBI container.</p>
 <p><strong>Q.</strong> <em>Is there a stand-alone ODE integration?</em>
 <strong>A.</strong> No, the standard ODE distributions require either an application server, Servlet container, or JBI container.</p>
 <p><strong>Q.</strong> <em>Can ODE be deployed within an application server or web container?</em>
@@ -148,21 +148,21 @@
 <h2 id="integration-with-third-party-products">Integration with Third-Party Products</h2>
 <p>This section covers frequently asked questions related to integrating ODE into third-party products or integrating third-party products into ODE.</p>
 <p><strong>Q.</strong> <em>Can ODE interact directly (i.e., not over the network) with native Java services?</em>
-<strong>A.</strong> This is currently supported in the [JBI Integration] via standard JBI mechanisms. It is currently not supported in the [AXIS2 Integration] but will be in the future.</p>
+<strong>A.</strong> This is currently supported in the <a href="architectural-overview.html#ODEIntegrationLayers">JBI Integration</a> via standard JBI mechanisms. It is currently not supported in the <a href="architectural-overview.html#ODEIntegrationLayers">AXIS2 Integration</a> but will be in the future.</p>
 <p><strong>Q.</strong> <em>Can ODE integrate with Middleware X? Can ODE integrate with Legacy system Y? Can ODE integrate with Enterprise Application Z? How is this accomplished?</em>
 <strong>A.</strong> The generic answer is "Yes," although it requires some work on the part of the integrator. The primary extension point for integrating with external systems is the <a href="http://ode.apache.org/javadoc/org/apache/ode/bpel/pmapi/ProcessManagement.html">Integration API</a>, which can be used to embed ODE in most any environment.</p>
 <p><strong>Q.</strong> <em>Does ODE rely on any third-party or open source libraries?</em>
-<strong>A.</strong> ODE uses a number of liberally-licensed (i.e., non-GPL) open source libraries, some integral and some not. These are enumerated in the [reference|Required Third-Party Libraries].</p>
+<strong>A.</strong> ODE uses a number of liberally-licensed (i.e., non-GPL) open source libraries, some integral and some not. These are enumerated in the <a href="required-third-party-libraries.html">reference</a>.</p>
 <h2 id="ode-and-web-services">ODE and Web Services</h2>
 <p>This section covers frequently asked questions about how ODE related to various web services specifications and initiatives.</p>
 <p><strong>Q.</strong> <em>Does ODE supply a SOAP stack?</em>
-<strong>A.</strong> Not directly. ODE relies on the [Integration Layer|Architectural Overview#ODEIntegrationLayers] to supply the "physical" communication mechanisms. The [AXIS2 Integration Layer|Architectural Overview#ODEIntegrationLayers] that is part of the ODE distribution uses the AXIS2 SOAP stack. The [JBI Integration Layer|Architectural Overview#ODEIntegrationLayers] relies on external HTTP/SOAP components (e.g. ServiceMix's <code>servicemix-http</code> component).</p>
+<strong>A.</strong> Not directly. ODE relies on the <a href="architectural-overview.html#ODEIntegrationLayers">Integration Layer</a> to supply the "physical" communication mechanisms. The <a href="architectural-overview.html#ODEIntegrationLayers">AXIS2 Integration Layer</a> that is part of the ODE distribution uses the AXIS2 SOAP stack. The <a href="architectural-overview.html#ODEIntegrationLayers">JBI Integration Layer</a> relies on external HTTP/SOAP components (e.g. ServiceMix's <code>servicemix-http</code> component).</p>
 <p><strong>Q.</strong> <em>Can ODE be integrated with third-party web services products such as Apache AXIS, Systinet WASP, or JAXRPC?</em>
 <strong>A.</strong> Yes, ODE can be integrated into most any stack via the <a href="http://incubator.apache.org/ode/javadoc/bpel-api/index.html">Integration API</a></p>
 <p><strong>Q.</strong> <em>Does ODE support web services transaction specifications, e.g., WS-Transaction, WS-Coordination, WS-Business Activity, OASIS BTP, or Composite Application Framework (WS-CAF)?</em>
 <strong>A.</strong> No, not at present.</p>
 <p><strong>Q.</strong> <em>Does ODE support WS-Addressing?</em>
-<strong>A.</strong> ODE does not directly support WS-Addressing. However, the BPEL implementation and the core ODE infrastructure provides support for opaque end-point references. This allows ODE to be integrated with arbitrary addressing standards. The [AXIS2 Integration Layer] for ODE employs this mechanism to support WS-Addressing.</p>
+<strong>A.</strong> ODE does not directly support WS-Addressing. However, the BPEL implementation and the core ODE infrastructure provides support for opaque end-point references. This allows ODE to be integrated with arbitrary addressing standards. The <a href="architectural-overview.html#ODEIntegrationLayers">AXIS2 Integration Layer</a> for ODE employs this mechanism to support WS-Addressing.</p>
 <h2 id="reliability">Reliability</h2>
 <p>This section covers frequently asked questions about the reliability of ODE.</p>
 <p><strong>Q.</strong> <em>Can ODE recover in the event of system failure?</em>

Modified: websites/staging/ode/trunk/content/restful-bpel-part-i.html
==============================================================================
--- websites/staging/ode/trunk/content/restful-bpel-part-i.html (original)
+++ websites/staging/ode/trunk/content/restful-bpel-part-i.html Fri Dec 28 12:31:02 2012
@@ -112,7 +112,7 @@
 
 <p><a name="RESTfulBPEL,PartI-XPathfunctions"></a></p>
 <h3 id="xpath-functions">XPath functions</h3>
-<p>The use or URLs requires the ability to combine URLs with two new XPath functions: combine-url(base, relative) and compose-url(template, [name, value](name,-value.html)*) / compose-url(template, pairs). See [xpath extensions|xpath extensions#combineurl(base,relative)] for details.</p>
+<p>The use or URLs requires the ability to combine URLs with two new XPath functions: combine-url(base, relative) and compose-url(template, [name, value](name,-value.html)*) / compose-url(template, pairs). See <a href="xpath extensions#combineurl(base,relative)">xpath extensions</a> for details.</p>
         </div>
       </div>
       

Modified: websites/staging/ode/trunk/content/sitemap.html
==============================================================================
--- websites/staging/ode/trunk/content/sitemap.html (original)
+++ websites/staging/ode/trunk/content/sitemap.html Fri Dec 28 12:31:02 2012
@@ -89,7 +89,6 @@
 <li><a href="/activity-failure-and-recovery.html">Activity Failure and Recovery</a></li>
 <li><a href="/agha86.html">Agha86</a></li>
 <li><a href="/ambiguousreceive.html">ambiguousReceive</a></li>
-<li><a href="/ant-tasks.html">Ant Tasks</a></li>
 <li><a href="/assign.html">assign</a></li>
 <li><a href="/bibliography.html">Bibliography</a></li>
 <li><a href="/bpel-extensions.html">BPEL Extensions</a></li>
@@ -97,14 +96,11 @@
 <li><a href="/bpel-management-api-specification.html">BPEL Management API Specification</a></li>
 <li><a href="/bpel4ws-11.html">BPEL4WS 1.1</a></li>
 <li><a href="/bpelc-command.html">bpelc Command</a></li>
-<li><a href="/bpelc-task.html">bpelc Task</a></li>
 <li><a href="/building-ode.html">Building ODE</a></li>
-<li><a href="/commandline-tools.html">Commandline Tools</a></li>
 <li><a href="/compensate.html">compensate</a></li>
 <li><a href="/contributors.html">Contributors</a></li>
 <li><a href="/copy-with-insert-attribute.html">copy with insert attribute</a></li>
 <li><a href="/creating-a-process.html">Creating a Process</a></li>
-<li><a href="/ddvalidate-command.html">ddvalidate Command</a></li>
 <li><a href="/deployment-unit.html">deployment unit</a></li>
 <li><a href="/deployxml.html">deploy.xml</a></li>
 <li><a href="/direct-process-to-process-communication.html">Direct Process-to-Process Communication</a></li>
@@ -137,28 +133,14 @@
 <li><a href="/ode-jbi-and-axis2-properties-overview.html">ODE Jbi and Axis2 properties overview</a></li>
 <li><a href="/ode-schema.html">ODE Schema</a></li>
 <li><a href="/pick.html">pick</a></li>
-<li><a href="/port.html">port</a></li>
 <li><a href="/process-contexts.html">Process Contexts</a></li>
 <li><a href="/process-versioning.html">Process Versioning * <a href="#ProcessVersioning-Introduction">Introduction</a> * <a href="#ProcessVersioning-HowVersioningWorks">How Versioning Works</a> * <a href="#ProcessVersioning-ProcessVersioninginOde">Process Versioning in ODE</a> * <a href="#ProcessVersioning-RemoteDeploymentvs.Hand-MadeDeployment">Remote Deployment vs. Hand-Made Deployment</a></a></li>
-<li><a href="/pxe-activate-command.html">pxe-activate Command</a></li>
-<li><a href="/pxe-deactivate-command.html">pxe-deactivate Command</a></li>
-<li><a href="/pxe-deploy-command.html">pxe-deploy Command</a></li>
-<li><a href="/pxe-sar-task.html">pxe-sar Task</a></li>
-<li><a href="/pxe-status-command.html">pxe-status Command</a></li>
-<li><a href="/pxe-undeploy-command.html">pxe-undeploy Command</a></li>
 <li><a href="/receive.html">receive</a></li>
 <li><a href="/required-third-party-libraries.html">Required Third-Party Libraries</a></li>
 <li><a href="/resource-services.html">Resources &amp; Services</a></li>
 <li><a href="/restful-bpel-part-i.html">RESTful BPEL, Part I</a></li>
 <li><a href="/restful-bpel-part-ii.html">RESTful BPEL, Part II</a></li>
 <li><a href="/roadmap.html">Roadmap</a></li>
-<li><a href="/rradd-command.html">rradd Command</a></li>
-<li><a href="/rralias-command.html">rralias Command</a></li>
-<li><a href="/rrdrop-command.html">rrdrop Command</a></li>
-<li><a href="/rrget-command.html">rrget Command</a></li>
-<li><a href="/rrls-command.html">rrls Command</a></li>
-<li><a href="/sarcreate-command.html">sarcreate Command</a></li>
-<li><a href="/sarls-command.html">sarls Command</a></li>
 <li><a href="/sendsoap-command.html">sendsoap Command</a></li>
 <li><a href="/service-providers.html">Service Providers</a></li>
 <li><a href="/service.html">service</a></li>
@@ -170,11 +152,9 @@
 <li><a href="/uninitializedvariable.html">uninitializedVariable</a></li>
 <li><a href="/uri.html">URI</a></li>
 <li><a href="/url.html">URL</a></li>
-<li><a href="/urlalias-command.html">urlalias Command</a></li>
 <li><a href="/use-assign-to-build-messages.html">Use Assign to build messages</a></li>
 <li><a href="/using-a-jndi-datasource-under-servicemix-jbi.html">Using a JNDI datasource under ServiceMix JBI</a></li>
 <li><a href="/validate.html">validate</a></li>
-<li><a href="/version-command.html">version Command</a></li>
 <li><a href="/writing-bpel-test-cases.html">Writing BPEL Test Cases</a></li>
 <li><a href="/ws-bpel-20-specification-compliance.html">WS-BPEL 2.0 Specification Compliance</a></li>
 <li><a href="/ws-bpel-20.html">WS-BPEL 2.0</a></li>

Modified: websites/staging/ode/trunk/content/wsdl-11-extensions-for-rest.html
==============================================================================
--- websites/staging/ode/trunk/content/wsdl-11-extensions-for-rest.html (original)
+++ websites/staging/ode/trunk/content/wsdl-11-extensions-for-rest.html Fri Dec 28 12:31:02 2012
@@ -83,253 +83,245 @@
       
       <div class="row">
         <div class="span12">
-          <p>The <a href="http://en.wikipedia.org/wiki/Representational_State_Transfer">Resource-Oriented Architecture</a> defines four concepts:
-1. Resources
-1. Their names (URIs)
-1. Their representations
-1. The link bet ween them</p>
-<p>and four properties:
-1. Addressability
-1. Statelesness
-1. Connectedness
-1. A uniform interface</p>
+          <p>The <a href="http://en.wikipedia.org/wiki/Representational_State_Transfer">Resource-Oriented Architecture</a> defines four concepts:</p>
+<ol>
+<li>Resources</li>
+<li>Their names (URIs)</li>
+<li>Their representations</li>
+<li>The link bet ween them</li>
+</ol>
+<p>and four properties:</p>
+<ol>
+<li>Addressability</li>
+<li>Statelesness</li>
+<li>Connectedness</li>
+<li>A uniform interface</li>
+</ol>
 <p>HTTP binding as defined in WSDL 1.1 is not well suitable to describe services implementing these concepts and properties, mainly because a port type may access 4 different locations/resources but with only one HTTP method.</p>
-<p>To better describe RESTful services, and turn a port type into a "resource type", ODE brings a set of 4 extensions:
-1. one HTTP method per operation (instead of one per binding)
-1. a unique URI Template for all operations
-1. access to HTTP headers
-1. fault support</p>
+<p>To better describe RESTful services, and turn a port type into a "resource type", ODE brings a set of 4 extensions:</p>
+<ol>
+<li>one HTTP method per operation (instead of one per binding)</li>
+<li>a unique URI Template for all operations</li>
+<li>access to HTTP headers</li>
+<li>fault support</li>
+</ol>
 <p>Further details below.</p>
-<p>In this page, we use an imaginary blog service as a use case to illustrate and make things more palpable. We will focus on the resources defined by the following URI template: {noformat}http://blog.org/post/{id}{noformat} 
-Let's assume that such a resource accept four operations:
-<em> GET to retrieve a post
-</em> DELETE to delete it
-<em> PUT to update the post
-</em> POST to add a comment to a post</p>
-<div class="alert alert-info"><h4 class="alert-heading">Check out unit tests!</h4>
-
-    h3. One verb per operation
-
-    According to the WSDL 1.1 specification, the verb describing the HTTP method has to be at [the binding level](http://www.w3.org/TR/wsdl#A4.3). Which implies that the same HTTP method is used by all operations of a given port type. But RESTful web services leverage HTTP methods as a uniform interface to describe operation on resources. So for instance, if you want to use the following HTTP operations -- GET, POST, PUT, DELETE -- for a given resource, four different bindings would be required. And consequently four port types and four ports. Quite verbose and unusable, isn't it?
-
-    So, this extension is to push down the HTTP verb at the operation level. And if an operation does not have its own verb, then the verb defined at the binding level will be used. 
-    This extension is declared in the namespace: `http://www.apache.org/ode/type/extension/http`
-
-    Please note that ODE supports GET, POST, PUT, DELETE only.
-    {code:xml}
-    <definitions ...
-                      xmlns:odex="http://www.apache.org/ode/type/extension/http"/>
-
-        <!-- many wsdl elements are ommited to highlight the interesting part -->
-
-        <binding name="blogBinding" type="blogPortType">
-            <operation name="GET">
-                <odex:binding verb="GET" />
-            </operation>
-            <operation name="DELETE">
-                <odex:binding verb="DELETE"/>
-            </operation>
-        </binding>
-    </definitions>
-    {code}
-
-    h3. URI Template
-
-    A RESTful service exposed a set of resources, each of them being accessible through a uniform interface: HTTP methods for a web service. So we need a way to define four operations (at most) for a single resource. 
-
-    Moreover it's very likely that the resource URI actually describes a set of resources. For instance, the set of posts contained in our imaginary blog: `http://blog.org/post/\{post_id\`}.
-
-    HTTP binding offers the [http:operation | http://www.w3.org/TR/wsdl#_http:operation] element to set the path of an operation. While the service address is set in the [http:address](http://www.w3.org/TR/wsdl#_http:address) of the [wsdl:port](http://www.w3.org/TR/wsdl#_ports) element.
-    So one could imagine splitting the URL this way: 
-
-    {code:xml}
-    <definitions ...
-                      xmlns:odex="http://www.apache.org/ode/type/extension/http"/>
-
-       <service name="blogService">
-            <port name="blogPort" binding="blogPortType">
-                 <http:address location="http://blog.org"/>
-            </port>
-        </service>
-
-        <binding name="blogBinding" type="blogPortType">
-            <operation name="PUT">
-                <odex:binding verb="PUT" />
-                <http:operation location="post/(post_id)"/>
-                <input>
-                     <http:urlReplacement/>
-                 </input>
-                 <output/>
-            </operation>
-        </binding>
-    </definitions>
-    {code}
-
-    However, here 3 issues show up:
-    # the location is not accessible from the End Point Reference. _=> ODE cannot process it before invoking the external service._
-    # [http:urlReplacement](http://www.w3.org/TR/wsdl#_http:urlReplacement) is only accepted for GET _=> what about the uniform interface?!_
-    # http:urlReplacement requires all parts of the operation input message to be mentioned in the operation location. Meaning that:
-    #* => the resource id (in the present example) must be a part of the message.
-    #* => no parts may be stored in the HTTP body. this conflicts with a PUT operation for instance. With a PUT you would like to set the id in the url and the resource data in the HTTP request body.
-
-    To solve this, ODE allows [http:operation | http://www.w3.org/TR/wsdl#_http:operation] elements to be omitted or empty, and the full resource URI to be set in a single place, the http:address element. 
-
-    {note:Curly Brackets}Please note that curly brackets '\{\}' are the preferred argument delimiters in URI templates. So that URLs can be dynamically composed using [compose-url, combine-url and expand-template XPath Functions|RESTful BPEL, Part I#XPath functions].{note}
-
-    In addition, the http:urlReplacement is relaxed: all parts are *not* required in the URI template anymore. One part could go in the URI, another in the request body.
-
-    {code:xml}
-    <definitions ...
-                      xmlns:odex="http://www.apache.org/ode/type/extension/http"/>
-
-       <service name="blogService">
-            <port name="blogPort" binding="blogPortType">
-                 <!-- here is the full URI template, using curly brackets -->
-                 <http:address location="http://blog.org/post/{post_id}"/>
-            </port>
-        </service>
-
-        <binding name="blogBinding" type="blogPortType">
-            <operation name="PUT">
-                 <odex:binding verb="PUT" />
-                 <!-- location attribute intentionally blank -->
-                 <http:operation location=""/>
-                 <input>
-                     <http:urlReplacement/>
-                     <!-- an additional part can be mapped to the request body even if urlReplacement is used-->
-                     <mime:content type="text/xml" part="post_content"/>
-                 </input>
-                 <output/>
-            </operation>
-        </binding>
-    </definitions>
-    {code}
-
-    h3. HTTP Headers manipulation
-
-    HHTP protocal convey a lot of information in Request/Response Headers. Caching information, Content description for instance. All this data is completely left out by WSDL 1.1 HTTP Binding. To fix this, ODE provides a header element. This element can be used to insert a part or a static value into a given HTTP request header (standard or custom). And the way around, a HTTP request header into a part. Also note that all HTTP response headers are inserted into the message headers, and thus are available from the BPEL process.
-
-    {code:xml}
-    <definitions ...
-                      xmlns:odex="http://www.apache.org/ode/type/extension/http"/>
-
-        <binding name="blogBinding" type="blogPortType">
-            <operation name="PUT">
-                 <odex:binding verb="PUT" />
-                 <http:operation location=""/>
-                 <input>
-                     <http:urlReplacement/>
-                     <mime:content type="text/xml" part="post_content"/>
-                     <!-- set a standard request header from a part -->
-                     <odex:header name="Authorization" part="credentials_part"/>
-                     <!-- set a custom request header with a static value -->
-                     <odex:header name="MyCustomHeader" value="ode@apache.org" />
-                 </input>
-                 <output>
-                     <mime:content type="text/xml" part="post_content"/>
-                     <!-- set 1 response header to a part -->
-                     <odex:header name="Age" part="age_part"/>
-                 </output>
-            </operation>
-        </binding>
-    </definitions>
-    {code}
-
-    For every HTTP response, in addition to HTTP response headers, the [Status-Line](http://www.w3.org/Protocols/rfc2616/rfc2616-sec6.html#sec6.1) is passed as a message header. To save some painful XPath string manipulations, the Status-line is already parsed into the following structure:
-    {code:xml}
-    <Status-Line>
-       <HTTP-Version>HTTP/1.1</HTTP-Version>
-       <Status-Code>200</Status-Code>
-       <Reason-Phrase>OK</Reason-Phrase>
-       <!-- the original unaltered Status-Line -->
-       <original>HTTP/1.1 200 OK</original>
-    </Status-Line>
-    {code}
-
-    So that you can write the following BPEL lines:
-    {code:xml}
-            <assign>
-                <copy>
-                    <from variable="postMsg" header="Status-Line"/>
-                    <to>$statusLine</to>
-                </copy>
-            </assign>
-            <if>
-                <condition>number($statusLine/Status-Code) > 200 and number($statusLine/Status-Code) < 300</condition>
-                <assign>
-                     <copy>
-                         <from>'Request successful!!!'</from>
-                         <to>$outputVar.TestPart</to>
-                     </copy>
-                 </assign>
-            </if>
-    {code}
-
-    h3. Fault Support
-
-    Another domain completely neglected by WSDL 1.1 HTTP Binding is Fault management. The word is not even mentioned in the [HTTP Binding section](http://www.w3.org/TR/wsdl#_http).
-    ODE allows you to bind a fault with HTTP Binding. If a [4xx or a 5xx](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4) is returned, the following logic is applied:
-
-    A failure is thrown if the code is one of these:
-    || Status-Codes triggering a Failure ||
-    | 3xx Redirections |
-    |401_UNAUTHORIZED|
-    |408_REQUEST_TIMEOUT|
-    |503_SERVICE_UNAVAILABLE|
-    |504_GATEWAY_TIMEOUT|
-
-    {info:title=Useful Information}Note that 3xx errors should be pretty rare since by default the first hundred redirections are followed. You can tweak this value by setting the property `http.protocol.max-redirects` in the [enpoint-configuration.properties|Endpoint Configuration] of your process.{info}
-
-    Here what ODE does, if the status code is one of those listed in the next table (500, 501, etc):
-    # check that the operation has at least one fault in its abstract part, and one fault binding
-    # check that the Content-type header describes an xml document ('application/xml', 'application/atom+xml' etc)
-    # check that the body is not empty
-
-    If so far everything is fine, the HTTP response body is parsed into an xml document. Then the fault to be thrown is inferred from the qname of the response root element, i.e the fault having a message part matching the root element. This matching process is exactly the same as for a SOAP service. 
-    If one of these steps fails, a failure is thrown.
-
-    || Status-Codes that may trigger a Fault ||if the body element matches a fault declaration||
-    |500_INTERNAL_SERVER_ERROR               | 407_PROXY_AUTHENTICATION_REQUIRED       |
-    |501_NOT_IMPLEMENTED                     | 409_CONFLICT                            |
-    |502_BAD_GATEWAY                         | 410_GONE                                |
-    |505_HTTP_VERSION_NOT_SUPPORTED          | 412_PRECONDITION_FAILED                 |
-    |400_BAD_REQUEST                         | 413_REQUEST_TOO_LONG                    |
-    |402_PAYMENT_REQUIRED                    | 414_REQUEST_URI_TOO_LONG                |
-    |403_FORBIDDEN                           | 415_UNSUPPORTED_MEDIA_TYPE              |
-    |404_NOT_FOUND                           | 411_LENGTH_REQUIRED                     |
-    |405_METHOD_NOT_ALLOWED                  | 416_REQUESTED_RANGE_NOT_SATISFIABLE     |
-    |406_NOT_ACCEPTABLE                      | 417_EXPECTATION_FAILED                  |
-
-    Note that you can't bind a given fault to a specific status code.
-
-    {code:xml}
-    <definitions ...
-                      xmlns:odex="http://www.apache.org/ode/type/extension/http"/>
-
-       <portType name="BlogPortType">
-            <operation name="PUT">
-                <input message="..."/>
-                <output message="..."/>
-                <fault name="UpdateFault" message="tns:UpdateFault"/>
-            </operation>
-        </portType>
-
-        <binding name="blogBinding" type="blogPortType">
-            <operation name="PUT">
-                 <odex:binding verb="PUT" />
-                 <http:operation location=""/>
-                 <input> ... </input>
-                 <output> ...  </output>
-                 <!-- fault binding -->
-                 <fault name="UpdateException">
-                     <!-- name attribute is optional if there is only one fault for this operation -->
-                     <!-- <odex:fault name="UpdateFault"/> -->
-                     <odex:fault/>
-                 </fault>
-            </operation>
-        </binding>
-    </definitions>
-    {code}
+<p>In this page, we use an imaginary blog service as a use case to illustrate and make things more palpable. We will focus on the resources defined by the following URI template: <code>http://blog.org/post/{id}</code> </p>
+<p>Let's assume that such a resource accept four operations:</p>
+<ul>
+<li>GET to retrieve a post</li>
+<li>DELETE to delete it</li>
+<li>PUT to update the post</li>
+<li>POST to add a comment to a post</li>
+</ul>
+<div class="alert alert-info"><h4 class="alert-heading">Check out unit tests!</h4></div>
+
+<h3 id="one-verb-per-operation">One verb per operation</h3>
+<p>According to the WSDL 1.1 specification, the verb describing the HTTP method has to be at <a href="http://www.w3.org/TR/wsdl#A4.3">the binding level</a>. Which implies that the same HTTP method is used by all operations of a given port type. But RESTful web services leverage HTTP methods as a uniform interface to describe operation on resources. So for instance, if you want to use the following HTTP operations -- GET, POST, PUT, DELETE -- for a given resource, four different bindings would be required. And consequently four port types and four ports. Quite verbose and unusable, isn't it?</p>
+<p>So, this extension is to push down the HTTP verb at the operation level. And if an operation does not have its own verb, then the verb defined at the binding level will be used. 
+This extension is declared in the namespace: <code>http://www.apache.org/ode/type/extension/http</code></p>
+<p>Please note that ODE supports GET, POST, PUT, DELETE only.</p>
+<div class="codehilite"><pre><span class="nt">&lt;definitions</span> <span class="err">...</span>
+                  <span class="na">xmlns:odex=</span><span class="s">&quot;http://www.apache.org/ode/type/extension/http&quot;</span><span class="nt">/&gt;</span>
+
+    <span class="c">&lt;!-- many wsdl elements are ommited to highlight the interesting part --&gt;</span>
+
+    <span class="nt">&lt;binding</span> <span class="na">name=</span><span class="s">&quot;blogBinding&quot;</span> <span class="na">type=</span><span class="s">&quot;blogPortType&quot;</span><span class="nt">&gt;</span>
+        <span class="nt">&lt;operation</span> <span class="na">name=</span><span class="s">&quot;GET&quot;</span><span class="nt">&gt;</span>
+            <span class="nt">&lt;odex:binding</span> <span class="na">verb=</span><span class="s">&quot;GET&quot;</span> <span class="nt">/&gt;</span>
+        <span class="nt">&lt;/operation&gt;</span>
+        <span class="nt">&lt;operation</span> <span class="na">name=</span><span class="s">&quot;DELETE&quot;</span><span class="nt">&gt;</span>
+            <span class="nt">&lt;odex:binding</span> <span class="na">verb=</span><span class="s">&quot;DELETE&quot;</span><span class="nt">/&gt;</span>
+        <span class="nt">&lt;/operation&gt;</span>
+    <span class="nt">&lt;/binding&gt;</span>
+<span class="nt">&lt;/definitions&gt;</span>
+</pre></div>
+
+
+<h3 id="uri-template">URI Template</h3>
+<p>A RESTful service exposed a set of resources, each of them being accessible through a uniform interface: HTTP methods for a web service. So we need a way to define four operations (at most) for a single resource. </p>
+<p>Moreover it's very likely that the resource URI actually describes a set of resources. For instance, the set of posts contained in our imaginary blog: <code>http://blog.org/post/{post_id}</code>.</p>
+<p>HTTP binding offers the <a href="http://www.w3.org/TR/wsdl#_http:operation">http:operation </a> element to set the path of an operation. While the service address is set in the <a href="http://www.w3.org/TR/wsdl#_http:address">http:address</a> of the <a href="http://www.w3.org/TR/wsdl#_ports">wsdl:port</a> element.
+So one could imagine splitting the URL this way: </p>
+<div class="codehilite"><pre><span class="nt">&lt;definitions</span> <span class="err">...</span>
+                  <span class="na">xmlns:odex=</span><span class="s">&quot;http://www.apache.org/ode/type/extension/http&quot;</span><span class="nt">/&gt;</span>
+
+   <span class="nt">&lt;service</span> <span class="na">name=</span><span class="s">&quot;blogService&quot;</span><span class="nt">&gt;</span>
+        <span class="nt">&lt;port</span> <span class="na">name=</span><span class="s">&quot;blogPort&quot;</span> <span class="na">binding=</span><span class="s">&quot;blogPortType&quot;</span><span class="nt">&gt;</span>
+             <span class="nt">&lt;http:address</span> <span class="na">location=</span><span class="s">&quot;http://blog.org&quot;</span><span class="nt">/&gt;</span>
+        <span class="nt">&lt;/port&gt;</span>
+    <span class="nt">&lt;/service&gt;</span>
+
+    <span class="nt">&lt;binding</span> <span class="na">name=</span><span class="s">&quot;blogBinding&quot;</span> <span class="na">type=</span><span class="s">&quot;blogPortType&quot;</span><span class="nt">&gt;</span>
+        <span class="nt">&lt;operation</span> <span class="na">name=</span><span class="s">&quot;PUT&quot;</span><span class="nt">&gt;</span>
+            <span class="nt">&lt;odex:binding</span> <span class="na">verb=</span><span class="s">&quot;PUT&quot;</span> <span class="nt">/&gt;</span>
+            <span class="nt">&lt;http:operation</span> <span class="na">location=</span><span class="s">&quot;post/(post_id)&quot;</span><span class="nt">/&gt;</span>
+            <span class="nt">&lt;input&gt;</span>
+                 <span class="nt">&lt;http:urlReplacement/&gt;</span>
+             <span class="nt">&lt;/input&gt;</span>
+             <span class="nt">&lt;output/&gt;</span>
+        <span class="nt">&lt;/operation&gt;</span>
+    <span class="nt">&lt;/binding&gt;</span>
+<span class="nt">&lt;/definitions&gt;</span>
+</pre></div>
+
+
+<p>However, here 3 issues show up:</p>
+<ul>
+<li>the location is not accessible from the End Point Reference. <em>=&gt; ODE cannot process it before invoking the external service.</em></li>
+<li><a href="http://www.w3.org/TR/wsdl#_http:urlReplacement">http:urlReplacement</a> is only accepted for GET <em>=&gt; what about the uniform interface?!</em></li>
+<li>http:urlReplacement requires all parts of the operation input message to be mentioned in the operation location. Meaning that:</li>
+<li>=&gt; the resource id (in the present example) must be a part of the message.</li>
+<li>=&gt; no parts may be stored in the HTTP body. this conflicts with a PUT operation for instance. With a PUT you would like to set the id in the url and the resource data in the HTTP request body.</li>
+</ul>
+<p>To solve this, ODE allows <a href="http://www.w3.org/TR/wsdl#_http:operation">http:operation</a> elements to be omitted or empty, and the full resource URI to be set in a single place, the http:address element. </p>
+<div class="alert alert-info">Please note that curly brackets '{}' are the preferred argument delimiters in URI templates. So that URLs can be dynamically composed using <a href="restful-bpel-part-i.html#XPath functions">compose-url, combine-url and expand-template XPath Functions</a>.</div>
+
+<p>In addition, the http:urlReplacement is relaxed: all parts are <em>not</em> required in the URI template anymore. One part could go in the URI, another in the request body.</p>
+<div class="codehilite"><pre><span class="nt">&lt;definitions</span> <span class="err">...</span>
+                  <span class="na">xmlns:odex=</span><span class="s">&quot;http://www.apache.org/ode/type/extension/http&quot;</span><span class="nt">/&gt;</span>
+
+   <span class="nt">&lt;service</span> <span class="na">name=</span><span class="s">&quot;blogService&quot;</span><span class="nt">&gt;</span>
+        <span class="nt">&lt;port</span> <span class="na">name=</span><span class="s">&quot;blogPort&quot;</span> <span class="na">binding=</span><span class="s">&quot;blogPortType&quot;</span><span class="nt">&gt;</span>
+             <span class="c">&lt;!-- here is the full URI template, using curly brackets --&gt;</span>
+             <span class="nt">&lt;http:address</span> <span class="na">location=</span><span class="s">&quot;http://blog.org/post/{post_id}&quot;</span><span class="nt">/&gt;</span>
+        <span class="nt">&lt;/port&gt;</span>
+    <span class="nt">&lt;/service&gt;</span>
+
+    <span class="nt">&lt;binding</span> <span class="na">name=</span><span class="s">&quot;blogBinding&quot;</span> <span class="na">type=</span><span class="s">&quot;blogPortType&quot;</span><span class="nt">&gt;</span>
+        <span class="nt">&lt;operation</span> <span class="na">name=</span><span class="s">&quot;PUT&quot;</span><span class="nt">&gt;</span>
+             <span class="nt">&lt;odex:binding</span> <span class="na">verb=</span><span class="s">&quot;PUT&quot;</span> <span class="nt">/&gt;</span>
+             <span class="c">&lt;!-- location attribute intentionally blank --&gt;</span>
+             <span class="nt">&lt;http:operation</span> <span class="na">location=</span><span class="s">&quot;&quot;</span><span class="nt">/&gt;</span>
+             <span class="nt">&lt;input&gt;</span>
+                 <span class="nt">&lt;http:urlReplacement/&gt;</span>
+                 <span class="c">&lt;!-- an additional part can be mapped to the request body even if urlReplacement is used--&gt;</span>
+                 <span class="nt">&lt;mime:content</span> <span class="na">type=</span><span class="s">&quot;text/xml&quot;</span> <span class="na">part=</span><span class="s">&quot;post_content&quot;</span><span class="nt">/&gt;</span>
+             <span class="nt">&lt;/input&gt;</span>
+             <span class="nt">&lt;output/&gt;</span>
+        <span class="nt">&lt;/operation&gt;</span>
+    <span class="nt">&lt;/binding&gt;</span>
+<span class="nt">&lt;/definitions&gt;</span>
+</pre></div>
+
+
+<h3 id="http-headers-manipulation">HTTP Headers manipulation</h3>
+<p>HTTP protocal convey a lot of information in Request/Response Headers. Caching information, Content description for instance. All this data is completely left out by WSDL 1.1 HTTP Binding. To fix this, ODE provides a header element. This element can be used to insert a part or a static value into a given HTTP request header (standard or custom). And the way around, a HTTP request header into a part. Also note that all HTTP response headers are inserted into the message headers, and thus are available from the BPEL process.</p>
+<div class="codehilite"><pre><span class="nt">&lt;definitions</span> <span class="err">...</span>
+                  <span class="na">xmlns:odex=</span><span class="s">&quot;http://www.apache.org/ode/type/extension/http&quot;</span><span class="nt">/&gt;</span>
+
+    <span class="nt">&lt;binding</span> <span class="na">name=</span><span class="s">&quot;blogBinding&quot;</span> <span class="na">type=</span><span class="s">&quot;blogPortType&quot;</span><span class="nt">&gt;</span>
+        <span class="nt">&lt;operation</span> <span class="na">name=</span><span class="s">&quot;PUT&quot;</span><span class="nt">&gt;</span>
+             <span class="nt">&lt;odex:binding</span> <span class="na">verb=</span><span class="s">&quot;PUT&quot;</span> <span class="nt">/&gt;</span>
+             <span class="nt">&lt;http:operation</span> <span class="na">location=</span><span class="s">&quot;&quot;</span><span class="nt">/&gt;</span>
+             <span class="nt">&lt;input&gt;</span>
+                 <span class="nt">&lt;http:urlReplacement/&gt;</span>
+                 <span class="nt">&lt;mime:content</span> <span class="na">type=</span><span class="s">&quot;text/xml&quot;</span> <span class="na">part=</span><span class="s">&quot;post_content&quot;</span><span class="nt">/&gt;</span>
+                 <span class="c">&lt;!-- set a standard request header from a part --&gt;</span>
+                 <span class="nt">&lt;odex:header</span> <span class="na">name=</span><span class="s">&quot;Authorization&quot;</span> <span class="na">part=</span><span class="s">&quot;credentials_part&quot;</span><span class="nt">/&gt;</span>
+                 <span class="c">&lt;!-- set a custom request header with a static value --&gt;</span>
+                 <span class="nt">&lt;odex:header</span> <span class="na">name=</span><span class="s">&quot;MyCustomHeader&quot;</span> <span class="na">value=</span><span class="s">&quot;ode@apache.org&quot;</span> <span class="nt">/&gt;</span>
+             <span class="nt">&lt;/input&gt;</span>
+             <span class="nt">&lt;output&gt;</span>
+                 <span class="nt">&lt;mime:content</span> <span class="na">type=</span><span class="s">&quot;text/xml&quot;</span> <span class="na">part=</span><span class="s">&quot;post_content&quot;</span><span class="nt">/&gt;</span>
+                 <span class="c">&lt;!-- set 1 response header to a part --&gt;</span>
+                 <span class="nt">&lt;odex:header</span> <span class="na">name=</span><span class="s">&quot;Age&quot;</span> <span class="na">part=</span><span class="s">&quot;age_part&quot;</span><span class="nt">/&gt;</span>
+             <span class="nt">&lt;/output&gt;</span>
+        <span class="nt">&lt;/operation&gt;</span>
+    <span class="nt">&lt;/binding&gt;</span>
+<span class="nt">&lt;/definitions&gt;</span>
+</pre></div>
+
+
+<p>For every HTTP response, in addition to HTTP response headers, the <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec6.html#sec6.1">Status-Line</a> is passed as a message header. To save some painful XPath string manipulations, the Status-line is already parsed into the following structure:</p>
+<div class="codehilite"><pre><span class="nt">&lt;Status-Line&gt;</span>
+   <span class="nt">&lt;HTTP-Version&gt;</span>HTTP/1.1<span class="nt">&lt;/HTTP-Version&gt;</span>
+   <span class="nt">&lt;Status-Code&gt;</span>200<span class="nt">&lt;/Status-Code&gt;</span>
+   <span class="nt">&lt;Reason-Phrase&gt;</span>OK<span class="nt">&lt;/Reason-Phrase&gt;</span>
+   <span class="c">&lt;!-- the original unaltered Status-Line --&gt;</span>
+   <span class="nt">&lt;original&gt;</span>HTTP/1.1 200 OK<span class="nt">&lt;/original&gt;</span>
+<span class="nt">&lt;/Status-Line&gt;</span>
+</pre></div>
+
+
+<p>So that you can write the following BPEL lines:</p>
+<div class="codehilite"><pre><span class="nt">&lt;assign&gt;</span>
+    <span class="nt">&lt;copy&gt;</span>
+        <span class="nt">&lt;from</span> <span class="na">variable=</span><span class="s">&quot;postMsg&quot;</span> <span class="na">header=</span><span class="s">&quot;Status-Line&quot;</span><span class="nt">/&gt;</span>
+        <span class="nt">&lt;to&gt;</span>$statusLine<span class="nt">&lt;/to&gt;</span>
+    <span class="nt">&lt;/copy&gt;</span>
+<span class="nt">&lt;/assign&gt;</span>
+<span class="nt">&lt;if&gt;</span>
+    <span class="nt">&lt;condition&gt;</span>number($statusLine/Status-Code) &gt; 200 and number($statusLine/Status-Code) <span class="nt">&lt; 300</span><span class="err">&lt;/condition</span><span class="nt">&gt;</span>
+    <span class="nt">&lt;assign&gt;</span>
+         <span class="nt">&lt;copy&gt;</span>
+             <span class="nt">&lt;from&gt;</span>&#39;Request successful!!!&#39;<span class="nt">&lt;/from&gt;</span>
+             <span class="nt">&lt;to&gt;</span>$outputVar.TestPart<span class="nt">&lt;/to&gt;</span>
+         <span class="nt">&lt;/copy&gt;</span>
+     <span class="nt">&lt;/assign&gt;</span>
+<span class="nt">&lt;/if&gt;</span>
+</pre></div>
+
+
+<h3 id="fault-support">Fault Support</h3>
+<p>Another domain completely neglected by WSDL 1.1 HTTP Binding is Fault management. The word is not even mentioned in the <a href="http://www.w3.org/TR/wsdl#_http">HTTP Binding section</a>.
+ODE allows you to bind a fault with HTTP Binding. If a <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4">4xx or a 5xx</a> is returned, the following logic is applied:</p>
+<p>A failure is thrown if the code is one of these:
+|| Status-Codes triggering a Failure ||
+| 3xx Redirections |
+|401_UNAUTHORIZED|
+|408_REQUEST_TIMEOUT|
+|503_SERVICE_UNAVAILABLE|
+|504_GATEWAY_TIMEOUT|</p>
+<div class="alert alert-info">Note that 3xx errors should be pretty rare since by default the first hundred redirections are followed. You can tweak this value by setting the property <code>http.protocol.max-redirects</code> in the <a href="endpoint-configuration.html">enpoint-configuration.properties</a> of your process.</div>
+
+<p>Here what ODE does, if the status code is one of those listed in the next table (500, 501, etc):</p>
+<ul>
+<li>check that the operation has at least one fault in its abstract part, and one fault binding</li>
+<li>check that the Content-type header describes an xml document ('application/xml', 'application/atom+xml' etc)</li>
+<li>check that the body is not empty</li>
+</ul>
+<p>If so far everything is fine, the HTTP response body is parsed into an xml document. Then the fault to be thrown is inferred from the qname of the response root element, i.e the fault having a message part matching the root element. This matching process is exactly the same as for a SOAP service. 
+If one of these steps fails, a failure is thrown.</p>
+<p>|| Status-Codes that may trigger a Fault ||if the body element matches a fault declaration||
+|500_INTERNAL_SERVER_ERROR               | 407_PROXY_AUTHENTICATION_REQUIRED       |
+|501_NOT_IMPLEMENTED                     | 409_CONFLICT                            |
+|502_BAD_GATEWAY                         | 410_GONE                                |
+|505_HTTP_VERSION_NOT_SUPPORTED          | 412_PRECONDITION_FAILED                 |
+|400_BAD_REQUEST                         | 413_REQUEST_TOO_LONG                    |
+|402_PAYMENT_REQUIRED                    | 414_REQUEST_URI_TOO_LONG                |
+|403_FORBIDDEN                           | 415_UNSUPPORTED_MEDIA_TYPE              |
+|404_NOT_FOUND                           | 411_LENGTH_REQUIRED                     |
+|405_METHOD_NOT_ALLOWED                  | 416_REQUESTED_RANGE_NOT_SATISFIABLE     |
+|406_NOT_ACCEPTABLE                      | 417_EXPECTATION_FAILED                  |</p>
+<p>Note that you can't bind a given fault to a specific status code.</p>
+<div class="codehilite"><pre><span class="nt">&lt;definitions</span> <span class="err">...</span>
+                  <span class="na">xmlns:odex=</span><span class="s">&quot;http://www.apache.org/ode/type/extension/http&quot;</span><span class="nt">/&gt;</span>
+
+   <span class="nt">&lt;portType</span> <span class="na">name=</span><span class="s">&quot;BlogPortType&quot;</span><span class="nt">&gt;</span>
+        <span class="nt">&lt;operation</span> <span class="na">name=</span><span class="s">&quot;PUT&quot;</span><span class="nt">&gt;</span>
+            <span class="nt">&lt;input</span> <span class="na">message=</span><span class="s">&quot;...&quot;</span><span class="nt">/&gt;</span>
+            <span class="nt">&lt;output</span> <span class="na">message=</span><span class="s">&quot;...&quot;</span><span class="nt">/&gt;</span>
+            <span class="nt">&lt;fault</span> <span class="na">name=</span><span class="s">&quot;UpdateFault&quot;</span> <span class="na">message=</span><span class="s">&quot;tns:UpdateFault&quot;</span><span class="nt">/&gt;</span>
+        <span class="nt">&lt;/operation&gt;</span>
+    <span class="nt">&lt;/portType&gt;</span>
+
+    <span class="nt">&lt;binding</span> <span class="na">name=</span><span class="s">&quot;blogBinding&quot;</span> <span class="na">type=</span><span class="s">&quot;blogPortType&quot;</span><span class="nt">&gt;</span>
+        <span class="nt">&lt;operation</span> <span class="na">name=</span><span class="s">&quot;PUT&quot;</span><span class="nt">&gt;</span>
+             <span class="nt">&lt;odex:binding</span> <span class="na">verb=</span><span class="s">&quot;PUT&quot;</span> <span class="nt">/&gt;</span>
+             <span class="nt">&lt;http:operation</span> <span class="na">location=</span><span class="s">&quot;&quot;</span><span class="nt">/&gt;</span>
+             <span class="nt">&lt;input&gt;</span> ... <span class="nt">&lt;/input&gt;</span>
+             <span class="nt">&lt;output&gt;</span> ...  <span class="nt">&lt;/output&gt;</span>
+             <span class="c">&lt;!-- fault binding --&gt;</span>
+             <span class="nt">&lt;fault</span> <span class="na">name=</span><span class="s">&quot;UpdateException&quot;</span><span class="nt">&gt;</span>
+                 <span class="c">&lt;!-- name attribute is optional if there is only one fault for this operation --&gt;</span>
+                 <span class="c">&lt;!-- &lt;odex:fault name=&quot;UpdateFault&quot;/&gt; --&gt;</span>
+                 <span class="nt">&lt;odex:fault/&gt;</span>
+             <span class="nt">&lt;/fault&gt;</span>
+        <span class="nt">&lt;/operation&gt;</span>
+    <span class="nt">&lt;/binding&gt;</span>
+<span class="nt">&lt;/definitions&gt;</span>
+</pre></div>
         </div>
       </div>