<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<title>javax.xml.ws.spi.http</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="javax.xml.ws.spi.http";
        }
    }
    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="../../../../../javax/xml/ws/spi/package-summary.html">Prev&nbsp;Package</a></li>
<li><a href="../../../../../javax/xml/ws/wsaddressing/package-summary.html">Next&nbsp;Package</a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?javax/xml/ws/spi/http/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;javax.xml.ws.spi.http</h1>
<div class="docSummary">
<div class="block">Provides HTTP SPI that is used for portable deployment of JAX-WS
  web services in containers(for e.g.</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="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="../../../../../javax/xml/ws/spi/http/HttpContext.html" title="class in javax.xml.ws.spi.http">HttpContext</a></td>
<td class="colLast">
<div class="block">HttpContext represents a mapping between the root URI path of a web
 service to a <a href="../../../../../javax/xml/ws/spi/http/HttpHandler.html" title="class in javax.xml.ws.spi.http"><code>HttpHandler</code></a> which is invoked to handle requests
 destined for that path on the associated container.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../javax/xml/ws/spi/http/HttpExchange.html" title="class in javax.xml.ws.spi.http">HttpExchange</a></td>
<td class="colLast">
<div class="block">This class encapsulates a HTTP request received and a 
 response to be generated in one exchange.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../javax/xml/ws/spi/http/HttpHandler.html" title="class in javax.xml.ws.spi.http">HttpHandler</a></td>
<td class="colLast">
<div class="block">A handler which is invoked to process HTTP requests.</div>
</td>
</tr>
</tbody>
</table>
</li>
</ul>
<a name="package.description">
<!--   -->
</a>
<h2 title="Package javax.xml.ws.spi.http Description">Package javax.xml.ws.spi.http Description</h2>
<div class="block">Provides HTTP SPI that is used for portable deployment of JAX-WS
  web services in containers(for e.g. servlet containers). This SPI
  is not for end developers but provides a way for the container
  developers to deploy JAX-WS services portably.

  <p>
  The portable deployment is done as below:
  <ol>
  <li>Container creates <a href="../../../../../javax/xml/ws/Endpoint.html" title="class in javax.xml.ws"><code>Endpoint</code></a> objects for an
  application. The necessary information to create Endpoint objects
  may be got from web service deployment descriptor files.</li>
  <li>Container needs to create <a href="../../../../../javax/xml/ws/spi/http/HttpContext.html" title="class in javax.xml.ws.spi.http"><code>HttpContext</code></a>
  objects for the deployment. For example, a HttpContext could be
  created using servlet configuration(for e.g url-pattern) for the
  web service in servlet container case.</li>
  <li>Then publishes all the endpoints using
  <a href="../../../../../javax/xml/ws/Endpoint.html#publish-javax.xml.ws.spi.http.HttpContext-"><code>Endpoint.publish(HttpContext)</code></a>. During publish(),
  JAX-WS runtime registers a <a href="../../../../../javax/xml/ws/spi/http/HttpHandler.html" title="class in javax.xml.ws.spi.http"><code>HttpHandler</code></a>
  callback to handle incoming requests or
  <a href="../../../../../javax/xml/ws/spi/http/HttpExchange.html" title="class in javax.xml.ws.spi.http"><code>HttpExchange</code></a> objects. The HttpExchange
  object encapsulates a HTTP request and a response.
  </ol>

  <pre>
  Container                               JAX-WS runtime
  ---------                               --------------
  1. Creates Invoker1, ... InvokerN
  2. Provider.createEndpoint(...)     --&gt; 3. creates Endpoint1
     configures Endpoint1
     ...
  4. Provider.createEndpoint(...)     --&gt; 5. creates EndpointN
     configures EndpointN
  6. Creates ApplicationContext
  7. creates HttpContext1, ... HttpContextN
  8. Endpoint1.publish(HttpContext1)  --&gt; 9. creates HttpHandler1
                                          HttpContext1.setHandler(HttpHandler1)
     ...
 10. EndpointN.publish(HttpContextN)  --&gt; 11. creates HttpHandlerN
                                         HttpContextN.setHandler(HttpHandlerN)

  </pre>

  The request processing is done as below(for every request):
  <pre>
  Container                               JAX-WS runtime
  ---------                               --------------
  1. Creates a HttpExchange
  2. Gets handler from HttpContext
  3. HttpHandler.handle(HttpExchange) --&gt; 4. reads request from HttpExchange
                                      &lt;-- 5. Calls Invoker
  6. Invokes the actual instance
                                          7. Writes the response to HttpExchange
  </pre>

  <p>
  The portable undeployment is done as below:
  <pre>
  Container
  ---------
  1.  @preDestroy on instances
  2. Endpoint1.stop()
  ...
  3. EndpointN.stop()
  </pre></div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.7, JAX-WS 2.2</dd>
</dl>
</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="../../../../../javax/xml/ws/spi/package-summary.html">Prev&nbsp;Package</a></li>
<li><a href="../../../../../javax/xml/ws/wsaddressing/package-summary.html">Next&nbsp;Package</a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?javax/xml/ws/spi/http/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>
