http://docs.safehaus.org/display/ASYNCWEB/Home

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <title>Home - Safehaus</title>
        
    <META HTTP-EQUIV="Pragma" CONTENT="no-cache">
    <META HTTP-EQUIV="Expires" CONTENT="-1">
    <script language="javascript">
      var contextPath = '';
    </script>
            <link rel="stylesheet" href="/styles/main-action.css?spaceKey=ASYNCWEB" type="text/css" />
            <link rel="shortcut icon" href="/images/icons/favicon.ico">
    <link rel="icon" type="image/png" href="/images/icons/favicon.png">
    <script src="/decorators/effects.js"></script>


        

            <link rel="stylesheet" href="/styles/main-action.css?pluginCompleteKey=com.atlassian.confluence.themes.leftnavigation%3Amain&stylesheetName=leftnav.css" type="text/css" />

</head>

            <body onload="placeFocus()">
    

<p/>
<div id="PageContent">
    <div id="topBar" class="topBar" style="height:2.2em;" >
        <div class="topBarDiv" style="float:left; margin-top:0.5em;">
                        &nbsp;             
    <script language="JavaScript">
        function showBreadcrumbsEllipsis()
        {
            document.getElementById('breadcrumbsEllipsis').style.display = 'none';
            document.getElementById('breadcrumbsExpansion').style.display = 'inline';
        }
    </script>

                <a href="/dashboard.action">Dashboard</a>
     &gt;

                        <a href="/display/ASYNCWEB">asyncWeb</a> &gt;
        
        
        
        
        
                                    <a href="/display/ASYNCWEB/Home">Home</a>
                                                                        
            </div>
        <div style="float:right;">
                <form method="POST" action="/dosearchsite.action" name="searchForm" style="padding: 1px; margin: 1px">
        <input type="hidden" name="quickSearch" value="true" />
        
        <input type="hidden" name="searchQuery.spaceKey" value="conf_global" />
        <input type="text" accessKey="s" name="searchQuery.queryString" size="25"/>
        <input type="submit" value="Search"/>
    </form>
        </div>
    </div>
    <table cellpadding="0" cellspacing="0" width="100%" style="margin-top:0px;">
        <tr>
                    <td width="150px" valign="top" class="sidebar" nowrap>
                <div class="leftnav">
                     <div id="logodiv">
                        <a href="/display/ASYNCWEB"><img src="/download/userResources/ASYNCWEB/logo" align="absmiddle" border="0"></a>                      </div>
                      <div id="menu">
                        <h5><a name="ASYNCWEB-ProjectLinks"></a>Project Links</h5>

<ul>
	<li><a href="/display/ASYNCWEB/Home" title="Home">Home</a></li>
	<li><a href="/display/ASYNCWEB/Features" title="Features">Features</a></li>
	<li><a href="/display/ASYNCWEB/License" title="License">License</a></li>
	<li><span class="nobr"><a href="http://jira.safehaus.org/secure/BrowseProject.jspa?id=10070" title="Visit page outside Confluence" rel="nofollow">Issues<sup><img class="rendericon" src="/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span></li>
	<li><a href="/display/ASYNCWEB/Community" title="Community">Community</a></li>
	<li><a href="/display/ASYNCWEB/APIOverview" title="APIOverview">API Overview</a></li>
	<li><a href="/display/ASYNCWEB/AsyncWebStatus" title="AsyncWebStatus">Project Status</a></li>
	<li><span class="nobr"><a href="https://svn.safehaus.org/repos/asyncweb" title="Visit page outside Confluence" rel="nofollow">SVN Repository<sup><img class="rendericon" src="/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span></li>
	<li><span class="nobr"><a href="https://svn.safehaus.org/repos/asyncweb/release" title="Visit page outside Confluence" rel="nofollow">Releases<sup><img class="rendericon" src="/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span></li>
	<li><a href="/display/ASYNCWEB/MailingList" title="MailingList">Mailing List</a></li>
</ul>

                        
                        
                        
                      </div>
                </div>
            </td>
            
            <td valign="top" width="100%">
                <!-- Inner content table -->
                <table width="100%" cellpadding="2" cellspacing="0">
                    <tr>
                        <td colspan="2" style="background-color:#F0F0F0">
                           <div>
                                                                                                <div style="float:right; margin-right:5px;">
                                                                            
    <span class="smalltext">
                    

            <a href="/login.action">Log In</a>

                                            | <a href="/signup.action">Sign Up</a>
                                &nbsp;
                        </span>
                                                <a href="/display/ASYNCWEB/Home?decorator=printable" rel="nofollow"><img src="/images/icons/print_16.gif" width="16" height="16" hspace="1" vspace="1" align="absmiddle" border="0" alt="View a printable version of the current page." title="View a printable version of the current page."/></a>

                                        
                                    </div>
                                                            </div>
                            <div style="float:left;">
                            </div>
                        </td>
                    </tr>
                    <tr>
                        <td width="100%" valign="top" style="border-left:1px solid #CCC; border-top:1px solid #CCC;">
                            <div style="margin-bottom:10px; margin-left:10px;">
                                <div style="float:right; margin-right:5px;"></div>
                                <div class="logoSpaceLink" style="margin-top: 5px; margin-bottom:5px">            <a href="/display/ASYNCWEB">asyncWeb</a>    </div>
                                <div class="pagetitle" style="padding: 0px; margin-bottom:5px; margin-top: 2px;">
                                                                            Home
                                    </div>
                            </div>
                            <div id="content" style="margin-left:10px;">
                                <!--
    Root decorator: all decisions about how a page is to be decorated via the
                    inline decoration begins here.
-->



<!--
    Switch based upon the context. However, for now, just delegate to a decorator
    identified directly by the context.
-->


    
    <!--[if gte IE 5.5000]>
<script language="JavaScript">
function correctPNG() // correctly handle PNG transparency in Win IE 5.5 or higher.
   {
   for(var i=0; i<document.images.length; i++)
      {
	  var img = document.images[i]
	  var imgName = img.src.toUpperCase()
	  if (imgName.substring(imgName.length-3, imgName.length) == "PNG")
	     {
		 var imgID = (img.id) ? "id='" + img.id + "' " : ""
		 var imgClass = (img.className) ? "class='" + img.className + "' " : ""
		 var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' "
		 var imgStyle = "display:inline-block;" + img.style.cssText
		 if (img.align == "left") imgStyle = "float:left;" + imgStyle
		 if (img.align == "right") imgStyle = "float:right;" + imgStyle
		 if (img.parentElement.href) imgStyle = "cursor:hand;" + imgStyle
		 var strNewHTML = "<span " + imgID + imgClass + imgTitle
		 + " style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle + ";"
	     + "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
		 + "(src=\'" + img.src + "\', sizingMethod='scale');\"></span>"
		 img.outerHTML = strNewHTML
		 i = i-1
	     }
      }
   }
window.attachEvent("onload", correctPNG);
</script>
<![endif]-->



















</content>




<style>
    .imageLink{
        margin:2px;
        vertical-align: bottom;
        float:left;
    }

        /*Overwritten styles in the main.css*/
        .greybox {
            border: 0px;
            border-top: 1px solid #ddd;
            border-bottom: 1px solid #ddd;
            background-color: #F0F0F0;
	        padding: 3px;
	        margin: 0;
        }
</style>







    
<div id="pageInfoBar">
   <!--<div style="float:right;">
      </div>-->
    <div class="smalltext">
            </div>
</div>
<br clear="all">


<div class="wiki-content" style="margin-right:10px;">
   <!-- wiki content -->
            <h1><a name="Home-AsyncWeb"></a>AsyncWeb</h1>

<h2><a name="Home-News"></a>News</h2>

<p>AsyncWeb at OSCON 2006 <span class="nobr"><a href="http://conferences.oreillynet.com/cs/os2006/view/e_sess/9065" title="Visit page outside Confluence" rel="nofollow">http://conferences.oreillynet.com/cs/os2006/view/e_sess/9065<sup><img class="rendericon" src="/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span></p>

<h2><a name="Home-Whatisit%3F"></a>What is it?</h2>

<p>&nbsp;<img class="emoticon" src="/images/icons/emoticons/star_yellow.gif" height="16" width="16" align="absmiddle" alt="" border="0"/>&nbsp;<em>AsyncWeb is a high-throughput, non blocking Java HTTP engine&nbsp;&#45; designed throughout to support asynchronous request processing</em></p>

<p>AsyncWeb (built on top of the excellent <span class="nobr"><a href="http://directory.apache.org/subprojects/network/" title="Visit page outside Confluence" rel="nofollow">Mina network framework<sup><img class="rendericon" src="/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span>) employs non-blocking selector driven IO at the transport level, and is asynchronous thoughout - from the initial parsing of requests, right through to and including the services implemented by users.<br/>
AsyncWeb breaks away from the blocking request / response architecture found in todays popular HTTP engines. This allows it to be highly scalable and capable of supporting very high throughput - even in high processing latency scenarios.<br/>
A simple API allows new asynchronous services to be created easily - and out-of-the-box Spring integration allows them to be configured simply and with great flexibility. In addition to "endpoint" HTTP services, AsyncWeb also allows configurable "chains" of behaviour - enabling "filter" like behaviour to be applied to all requests. Pluggable "resolvers" map incoming requests to their target HTTP service - and are given access to the entire incoming request - allowing the routing possibilities to be very flexible.</p>

<p>See the <a href="/display/ASYNCWEB/Features" title="Features">Async Web Feature Set</a>&nbsp;for a a listing of the features currently offered by AsyncWeb.</p>

<h2><a name="Home-HowisAsyncWebusedtoday%3F"></a>How is AsyncWeb used today?</h2>

<p>AsyncWeb is currently succesfully employed as an embedded server in a live high-performance / high-throughput messaging system - as a feed for SOAP (using Apache Axis) and other forms of messaging protocols over HTTP.<br/>
To provide SOAP support, a custom AsyncWeb HttpService implementation is employed - as a replacement for the "AxisServlet" in the Servlet world.<br/>
In the current deployment, the messaging system must make requests to external servers before sending the SOAP response for a received request. The external servers are outside of the control of the messaging system - and individual request latency can rise to several seconds.<br/>
However, by scaling the number of connections made to the messaging system (or by employing connection pipelining - which AsyncWeb fully supports), it is possible to maintain a consistently high messaging throughput - even at very high processing latencies.<br/>
This is simply not possible with the blocking HTTP engines in widespread use today where this sort of problem is typically solved by increasing the number of threads in the system.</p>

<h2><a name="Home-ThemotivationforAsyncWeb"></a>The motivation for AsyncWeb</h2>

<p>The AsyncWeb author has for some time worked on projects which expose functionality over various protocols using HTTP as the transport mechanism - all with a common theme: High throughput rates must be acheived even though an individual request may exhibit high processing latency&nbsp;(e.g. because the application is required to send a high-latency out-bound request across the network before it can respond to the original client).<br/>
The majority of today's popular java HTTP engines are built around the J2EE Servlet Specification - and are inherently synchronous in their operation. The typical order of play is that an individual HTTP connection is mapped to a thread&nbsp;of execution which reads data from the underlying socket, parses the request and forwards it up through the web container to the target Servlet - blocking until a response is completed.</p>

<p>As processing latency (as described above) increases, a real scalability problem is encountered: To increase throughput, it is necessary to increase the number of connection threads. This, however, is not the best way to scale - and depending on the JVM / operating system employed, having a very large number of threads can become a big problem very quickly.</p>

<p>A real problem then needed to be solved: How can we obtain a very high throughput - whilst dealing with high processing latency - <em>without</em> requiring a potentially unbounded number of threads? An initial area of investigation was to provide a NIO transport connector for an existing HTTP engine. However, existing popular HTTP engines built around the J2EE Servlet Specification have a blocking synchronous architecture throughout. Swapping in a NIO transport to such an engine does not solve the problem: We'd still need to scale processing threads in order to push requests up through the container.</p>

<p>What was needed was an http engine which provided non-blocking behaviour throughout - and so work began on writing such an engine.</p>

<h2><a name="Home-TheHistoryofAsyncWeb"></a>The History of AsyncWeb</h2>

<p>AsyncWeb was originally developed by Dave Irving within the LogicaCMG Telecoms division where it is used to provide a high-performance HTTP-Server engine for LogicaCMG's SOAP messaging framework. LogicaCMG recognised the potential of this technology to facilitate the development of high performance asynchronous web services and has kindly supported the release of this software into the public domain.</p>

<p><span class="nobr"><a href="http://asyncweb.safehaus.org" title="Visit page outside Confluence" rel="nofollow">Async Web Home<sup><img class="rendericon" src="/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span></p>
</div>

<!--
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         xmlns:dc="http://purl.org/dc/elements/1.1/"
         xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
<rdf:Description
    rdf:about="http://docs.safehaus.org:8080/display/ASYNCWEB/Home"
    dc:identifier="http://docs.safehaus.org:8080/display/ASYNCWEB/Home"
    dc:title="Home"
    trackback:ping="http://docs.safehaus.org:8080/rpc/trackback/4002"/>
</rdf:RDF>
-->

                            <div class="tabletitle">
                <a name="children">Children</a>

                <span class="bodytext">
                &nbsp;
                <a href="/display/ASYNCWEB/Home?showChildren=false">Hide Children</a>
                | <a href="/pages/listpages-dirview.action?key=ASYNCWEB&openId=4002#selectedPageInHierarchy">View in hierarchy</a>
                                </span>
            </div>
            <div class="greybox" align="left">
                                                     <img src="/images/icons/docs_16.gif" height="16" width="16" border="0" align="absmiddle" title="APIOverview"/>
                         <a href="/display/ASYNCWEB/APIOverview">APIOverview</a>
                                 <span class="smalltext">(asyncWeb)</span>
              <br/>
                                                     <img src="/images/icons/docs_16.gif" height="16" width="16" border="0" align="absmiddle" title="Community"/>
                         <a href="/display/ASYNCWEB/Community">Community</a>
                                 <span class="smalltext">(asyncWeb)</span>
              <br/>
                                                     <img src="/images/icons/docs_16.gif" height="16" width="16" border="0" align="absmiddle" title="Features"/>
                         <a href="/display/ASYNCWEB/Features">Features</a>
                                 <span class="smalltext">(asyncWeb)</span>
              <br/>
                                                     <img src="/images/icons/docs_16.gif" height="16" width="16" border="0" align="absmiddle" title="Getting Started"/>
                         <a href="/display/ASYNCWEB/Getting+Started">Getting Started</a>
                                 <span class="smalltext">(asyncWeb)</span>
              <br/>
                                                     <img src="/images/icons/docs_16.gif" height="16" width="16" border="0" align="absmiddle" title="LeftHeader"/>
                         <a href="/display/ASYNCWEB/LeftHeader">LeftHeader</a>
                                 <span class="smalltext">(asyncWeb)</span>
              <br/>
                                                     <img src="/images/icons/docs_16.gif" height="16" width="16" border="0" align="absmiddle" title="License"/>
                         <a href="/display/ASYNCWEB/License">License</a>
                                 <span class="smalltext">(asyncWeb)</span>
              <br/>
                                                     <img src="/images/icons/docs_16.gif" height="16" width="16" border="0" align="absmiddle" title="MailingList"/>
                         <a href="/display/ASYNCWEB/MailingList">MailingList</a>
                                 <span class="smalltext">(asyncWeb)</span>
              <br/>
                                                     <img src="/images/icons/docs_16.gif" height="16" width="16" border="0" align="absmiddle" title="Navigation"/>
                         <a href="/display/ASYNCWEB/Navigation">Navigation</a>
                                 <span class="smalltext">(asyncWeb)</span>
              <br/>
                                                     <img src="/images/icons/docs_16.gif" height="16" width="16" border="0" align="absmiddle" title="WhatAsyncWebIsnt"/>
                         <a href="/display/ASYNCWEB/WhatAsyncWebIsnt">WhatAsyncWebIsnt</a>
                                 <span class="smalltext">(asyncWeb)</span>
              <br/>
                            </div>
                <!--
    Root decorator: all decisions about how a page is to be decorated via the
                    inline decoration begins here.
-->



<!--
    Switch based upon the context. However, for now, just delegate to a decorator
    identified directly by the context.
-->


    
    

<div class="wiki-content" style="margin-right:10px;">
    <p style="clear: both"/><!-- comments should always display underneath the content. we should have a 'clear:both' here just in case there are floats or aligned images in the content -->

    
    
    
    
                                    </div>
                            </div>
                        </td>
                            
    
        
    
                                                </tr>
                </table>
                <!-- End inner content table -->
            </td>
        </tr>
    </table>
</div>
  	                                                    <div class="license-nonprofit">
                    Are you enjoying Confluence? Please consider <a href="http://www.atlassian.com/c/conf/10138">purchasing it</a> today.
                    </div>
                                            <div class="bottomshadow"></div>
  	<div id="poweredby" class="smalltext">
		Powered by <a href="http://www.atlassian.com/wiki/?clicked=footer" class="smalltext">Atlassian Confluence</a>, the <a href="http://www.atlassian.com/wiki/?clicked=footer" class="smalltext">Enterprise Wiki</a>. (Version: 2.2 Build:#512 Apr 26, 2006)
		-
		<a href="http://jira.atlassian.com/browse/CONF" class="smalltext">Bug/feature request</a>
		-
		<a href="/administrators.action">Contact Administrators</a>
		<br/>
	</div>

<!-- delay the loading of large javascript files to the end so that they don't interfere with the loading of page content -->
<span style="display: none"></span>



<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-612110-3";
urchinTracker();
</script>

</body>
</html>
