<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<title>jakarta.xml.soap</title>
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
    try {
        if (location.href.indexOf('is-external=true') == -1) {
            parent.document.title="jakarta.xml.soap";
        }
    }
    catch(err) {
    }
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../overview-summary.html">Overview</a></li>
<li class="navBarCell1Rev">Package</li>
<li>Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../index-all.html">Index</a></li>
<li><a href="../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../jakarta/xml/bind/util/package-summary.html">Prev&nbsp;Package</a></li>
<li><a href="../../../jakarta/xml/ws/package-summary.html">Next&nbsp;Package</a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?jakarta/xml/soap/package-summary.html" target="_top">Frames</a></li>
<li><a href="package-summary.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<a name="skip.navbar.top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<div class="header">
<h1 title="Package" class="title">Package&nbsp;jakarta.xml.soap</h1>
<div class="docSummary">
<div class="block">Provides the API for creating and building SOAP messages.</div>
</div>
<p>See:&nbsp;<a href="#package.description">Description</a></p>
</div>
<div class="contentContainer">
<ul class="blockList">
<li class="blockList">
<table class="typeSummary" border="0" cellpadding="3" cellspacing="0" summary="Interface Summary table, listing interfaces, and an explanation">
<caption><span>Interface Summary</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Interface</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tbody>
<tr class="altColor">
<td class="colFirst"><a href="../../../jakarta/xml/soap/Detail.html" title="interface in jakarta.xml.soap">Detail</a></td>
<td class="colLast">
<div class="block">A container for <code>DetailEntry</code> objects.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../jakarta/xml/soap/DetailEntry.html" title="interface in jakarta.xml.soap">DetailEntry</a></td>
<td class="colLast">
<div class="block">The content for a <code>Detail</code> object, giving details for
 a <code>SOAPFault</code> object.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../jakarta/xml/soap/Name.html" title="interface in jakarta.xml.soap">Name</a></td>
<td class="colLast">
<div class="block">A representation of an XML name.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../jakarta/xml/soap/Node.html" title="interface in jakarta.xml.soap">Node</a></td>
<td class="colLast">
<div class="block">A representation of a node (element) in an XML document.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../jakarta/xml/soap/SOAPBody.html" title="interface in jakarta.xml.soap">SOAPBody</a></td>
<td class="colLast">
<div class="block">An object that represents the contents of the SOAP body
 element in a SOAP message.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../jakarta/xml/soap/SOAPBodyElement.html" title="interface in jakarta.xml.soap">SOAPBodyElement</a></td>
<td class="colLast">
<div class="block">A <code>SOAPBodyElement</code> object represents the contents in
 a <code>SOAPBody</code> object.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../jakarta/xml/soap/SOAPConstants.html" title="interface in jakarta.xml.soap">SOAPConstants</a></td>
<td class="colLast">
<div class="block">The definition of constants pertaining to the SOAP protocol.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../jakarta/xml/soap/SOAPElement.html" title="interface in jakarta.xml.soap">SOAPElement</a></td>
<td class="colLast">
<div class="block">An object representing an element of a SOAP message that is allowed but not
 specifically prescribed by a SOAP specification.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../jakarta/xml/soap/SOAPEnvelope.html" title="interface in jakarta.xml.soap">SOAPEnvelope</a></td>
<td class="colLast">
<div class="block">The container for the SOAPHeader and SOAPBody portions of a
 <code>SOAPPart</code> object.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../jakarta/xml/soap/SOAPFault.html" title="interface in jakarta.xml.soap">SOAPFault</a></td>
<td class="colLast">
<div class="block">An element in the <code>SOAPBody</code> object that contains
 error and/or status information.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../jakarta/xml/soap/SOAPFaultElement.html" title="interface in jakarta.xml.soap">SOAPFaultElement</a></td>
<td class="colLast">
<div class="block">A representation of the contents in
 a <code>SOAPFault</code> object.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../jakarta/xml/soap/SOAPHeader.html" title="interface in jakarta.xml.soap">SOAPHeader</a></td>
<td class="colLast">
<div class="block">A representation of the SOAP header
 element.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../jakarta/xml/soap/SOAPHeaderElement.html" title="interface in jakarta.xml.soap">SOAPHeaderElement</a></td>
<td class="colLast">
<div class="block">An object representing the contents in the SOAP header part of the
 SOAP envelope.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../jakarta/xml/soap/Text.html" title="interface in jakarta.xml.soap">Text</a></td>
<td class="colLast">
<div class="block">A representation of a node whose value is text.</div>
</td>
</tr>
</tbody>
</table>
</li>
<li class="blockList">
<table class="typeSummary" border="0" cellpadding="3" cellspacing="0" summary="Class Summary table, listing classes, and an explanation">
<caption><span>Class Summary</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Class</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tbody>
<tr class="altColor">
<td class="colFirst"><a href="../../../jakarta/xml/soap/AttachmentPart.html" title="class in jakarta.xml.soap">AttachmentPart</a></td>
<td class="colLast">
<div class="block">A single attachment to a <code>SOAPMessage</code> object.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../jakarta/xml/soap/MessageFactory.html" title="class in jakarta.xml.soap">MessageFactory</a></td>
<td class="colLast">
<div class="block">A factory for creating <code>SOAPMessage</code> objects.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../jakarta/xml/soap/MimeHeader.html" title="class in jakarta.xml.soap">MimeHeader</a></td>
<td class="colLast">
<div class="block">An object that stores a MIME header name and its value.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../jakarta/xml/soap/MimeHeaders.html" title="class in jakarta.xml.soap">MimeHeaders</a></td>
<td class="colLast">
<div class="block">A container for <code>MimeHeader</code> objects, which represent
 the MIME headers present in a MIME part of a message.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../jakarta/xml/soap/SAAJMetaFactory.html" title="class in jakarta.xml.soap">SAAJMetaFactory</a></td>
<td class="colLast">
<div class="block">The access point for the implementation classes of the factories defined in the
 SAAJ API.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../jakarta/xml/soap/SAAJResult.html" title="class in jakarta.xml.soap">SAAJResult</a></td>
<td class="colLast">
<div class="block">Acts as a holder for the results of a JAXP transformation or a JAXB
 marshalling, in the form of a SAAJ tree.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../jakarta/xml/soap/SOAPConnection.html" title="class in jakarta.xml.soap">SOAPConnection</a></td>
<td class="colLast">
<div class="block">A point-to-point connection that a client can use for sending messages
 directly to a remote party (represented by a URL, for instance).</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../jakarta/xml/soap/SOAPConnectionFactory.html" title="class in jakarta.xml.soap">SOAPConnectionFactory</a></td>
<td class="colLast">
<div class="block">A factory for creating <code>SOAPConnection</code> objects.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../jakarta/xml/soap/SOAPElementFactory.html" title="class in jakarta.xml.soap">SOAPElementFactory</a></td>
<td class="colLast">Deprecated
<div class="block"><span class="deprecationComment">- Use <code>jakarta.xml.soap.SOAPFactory</code> for creating SOAPElements.</span></div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../jakarta/xml/soap/SOAPFactory.html" title="class in jakarta.xml.soap">SOAPFactory</a></td>
<td class="colLast">
<div class="block"><code>SOAPFactory</code> is a factory for creating various objects
 that exist in the SOAP XML tree.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../jakarta/xml/soap/SOAPMessage.html" title="class in jakarta.xml.soap">SOAPMessage</a></td>
<td class="colLast">
<div class="block">The root class for all SOAP messages.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../jakarta/xml/soap/SOAPPart.html" title="class in jakarta.xml.soap">SOAPPart</a></td>
<td class="colLast">
<div class="block">The container for the SOAP-specific portion of a <code>SOAPMessage</code>
 object.</div>
</td>
</tr>
</tbody>
</table>
</li>
<li class="blockList">
<table class="typeSummary" border="0" cellpadding="3" cellspacing="0" summary="Exception Summary table, listing exceptions, and an explanation">
<caption><span>Exception Summary</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Exception</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tbody>
<tr class="altColor">
<td class="colFirst"><a href="../../../jakarta/xml/soap/SOAPException.html" title="class in jakarta.xml.soap">SOAPException</a></td>
<td class="colLast">
<div class="block">An exception that signals that a SOAP exception has occurred.</div>
</td>
</tr>
</tbody>
</table>
</li>
</ul>
<a name="package.description">
<!--   -->
</a>
<h2 title="Package jakarta.xml.soap Description">Package jakarta.xml.soap Description</h2>
<div class="block">Provides the API for creating and building SOAP messages. This package
 is defined in the <i>Jakarta SOAP with Attachments</i> specification.
 
 <p> The API in the <code>jakarta.xml.soap</code> package allows you to do the following:
  
 <ul>
     <li>create a point-to-point connection to a specified endpoint   
     <li>create a SOAP message   
     <li>create an XML fragment   
     <li>add content to the header of a SOAP message   
     <li>add content to the body of a SOAP message   
     <li>create attachment parts and add content to them   
     <li>access/add/modify parts of a SOAP message   
     <li>create/add/modify SOAP fault information   
     <li>extract content from a SOAP message   
     <li>send a SOAP request-response message   
 </ul>

 <p>
 References in this document to SAAJ refer to the Jakarta SOAP with Attachments API unless otherwise noted.<br>
 References in this document to JAXB refer to the Jakarta XML Binding unless otherwise noted.

 <p>
 In addition the APIs in the <code>jakarta.xml.soap</code> package extend
 their  counterparts in the <code>org.w3c.dom</code> package. This means that
 the  <code>SOAPPart</code> of a <code>SOAPMessage</code> is also a DOM Level
 2 <code>Document</code>, and can be manipulated as such by applications,
 tools and libraries that use DOM (see http://www.w3.org/DOM/ for more information).
 It is important to note that, while it is possible to use DOM APIs to add
 ordinary DOM nodes to a SAAJ tree, the SAAJ APIs are still required to return
 SAAJ types when examining or manipulating the tree. In order to accomplish
 this the SAAJ APIs (specifically <a href="../../../jakarta/xml/soap/SOAPElement.html#getChildElements--"><code>SOAPElement.getChildElements()</code></a>)
 are allowed to silently replace objects that are incorrectly typed relative
 to SAAJ requirements with equivalent objects of the required type. These
 replacements must never cause the logical structure of the tree to change,
 so from the perspective of the DOM APIs the tree will remain unchanged. However,
 the physical composition of the tree will have changed so that references
 to the nodes that were replaced will refer to nodes that are no longer a
 part of the tree. The SAAJ APIs are not allowed to make these replacements
 if they are not required so the replacement objects will never subsequently
 be silently replaced by future calls to the SAAJ API.
 <p>
 What this means in practical terms is that an application that starts to use 
 SAAJ APIs on a tree after manipulating it using DOM APIs must assume that the 
 tree has been translated into an all SAAJ tree and that any references to objects 
 within the tree that were obtained using DOM APIs are no longer valid. Switching
 from SAAJ APIs to DOM APIs is not allowed to cause invalid references and
 neither is using SAAJ APIs exclusively. It is only switching from using DOM
 APIs on a particular SAAJ tree to using SAAJ APIs that causes the risk of
 invalid references.

 <h2>Discovery of SAAJ implementation</h2>
 <p>
 There are several factories defined in the SAAJ API to discover and load specific implementation:

 <ul>
     <li><a href="../../../jakarta/xml/soap/SOAPFactory.html" title="class in jakarta.xml.soap"><code>SOAPFactory</code></a>
     <li><a href="../../../jakarta/xml/soap/MessageFactory.html" title="class in jakarta.xml.soap"><code>MessageFactory</code></a>
     <li><a href="../../../jakarta/xml/soap/SOAPConnectionFactory.html" title="class in jakarta.xml.soap"><code>SOAPConnectionFactory</code></a>
     <li><a href="../../../jakarta/xml/soap/SAAJMetaFactory.html" title="class in jakarta.xml.soap"><code>SAAJMetaFactory</code></a>
 </ul>

 First three define <code>newInstance()</code> method which uses a common lookup procedure to determine
 the implementation class:

 <ul>
  <li>Checks if a system property with the same name as the factory class is set (e.g.
  <code>jakarta.xml.soap.SOAPFactory</code>). If such property exists then its value is assumed to be the fully qualified
  name of the implementation class. This phase of the look up enables per-JVM override of the SAAJ implementation.
  <li>Use the configuration file "jaxm.properties". The file is in standard
  <code>Properties</code> format and typically located in the
  <code>conf</code> directory of the Java installation. It contains the fully qualified
  name of the implementation class with the key being the system property
  defined above.
  <li> Use the service-provider loading facilities, defined by the <code>ServiceLoader</code> class,
  to attempt to locate and load an implementation of the service using the default loading mechanism.
  <li> Finally, if all the steps above fail, <a href="../../../jakarta/xml/soap/SAAJMetaFactory.html" title="class in jakarta.xml.soap"><code>SAAJMetaFactory</code></a> instance is used
  to locate specific implementation (for <a href="../../../jakarta/xml/soap/MessageFactory.html" title="class in jakarta.xml.soap"><code>MessageFactory</code></a> and <a href="../../../jakarta/xml/soap/SOAPFactory.html" title="class in jakarta.xml.soap"><code>SOAPFactory</code></a>)
  or platform default implementation is used (<a href="../../../jakarta/xml/soap/SOAPConnectionFactory.html" title="class in jakarta.xml.soap"><code>SOAPConnectionFactory</code></a>).
  Whenever <a href="../../../jakarta/xml/soap/SAAJMetaFactory.html" title="class in jakarta.xml.soap"><code>SAAJMetaFactory</code></a> is used, its lookup procedure to get actual instance is performed.
 </ul></div>
</div>
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../overview-summary.html">Overview</a></li>
<li class="navBarCell1Rev">Package</li>
<li>Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../index-all.html">Index</a></li>
<li><a href="../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../jakarta/xml/bind/util/package-summary.html">Prev&nbsp;Package</a></li>
<li><a href="../../../jakarta/xml/ws/package-summary.html">Next&nbsp;Package</a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?jakarta/xml/soap/package-summary.html" target="_top">Frames</a></li>
<li><a href="package-summary.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<a name="skip.navbar.bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>
