    <authorgroup>

    <author>
    <firstname>Kurt</firstname>
    <surname>Stam</surname>
    <othername role='mi'>T</othername>
    <affiliation>
      <shortaffil>RedHat</shortaffil>
      <jobtitle>Enterprise Integration Magician (EIM)</jobtitle>
      <orgname>Red Hat, Inc.</orgname>
      <orgdiv><ulink url="http://www.jboss.org/overlord">SOA Governance</ulink></orgdiv>
      <authorblurb>
      <para>
        Open Source, written by domain experts.
      </para>
    </authorblurb>

    </affiliation>

    </author>

    <author>
     <firstname>Alex</firstname>
     <surname>O'Ree</surname>
     <affiliation>
      <shortaffil>Apache Software Foundation (ASF)</shortaffil>
      <orgname>Apache Software Foundation (ASF), http://juddi.apache.org</orgname>
    </affiliation>
     </author>

     </authorgroup>

     <copyright>
     <year>2003-2014</year>
     <holder>The Apache Software Foundation</holder>
     </copyright>

 <legalnotice>
  <simpara>
Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
</simpara>
<simpara>
 You may obtain a copy of the License at
 
      <ulink url="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</ulink>
</simpara>
<simpara>
 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
  </simpara>
</legalnotice>

