<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="../skin/tigris.css" type="text/css">
<link rel="stylesheet" href="../skin/mysite.css" type="text/css">
<link rel="stylesheet" href="../skin/site.css" type="text/css">
<link media="print" rel="stylesheet" href="../skin/print.css" type="text/css">
<title>WebServices - Axis</title>
</head>
<body bgcolor="white" class="composite">
<div id="banner">
<table width="100%" cellpadding="0" cellspacing="0" summary="banner" border="0">
<tbody>
<tr>
<td align="left">
<div class="groupLogo">
<a href="http://ws.apache.org/"><img border="0" class="logoImage" alt="The Apache WebServices Project" src="../images/project-logo.png"></a>
</div>
</td><td nowrap="1" width="100%" align="left">
<div class="projectTitleImg">
<br>
<a href=""><img border="0" class="logoImage" alt="Web Services - Axis" src="../images/wsaxis.png"></a>
</div>
</td><td align="right">
<div class="projectLogo">
<a href="http://ws.apache.org/axis/"><img border="0" class="logoImage" alt="The Apache Axis Project" src="../images/axis3.jpg"></a>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<table width="100%" cellpadding="0" cellspacing="0" border="0" summary="nav" id="breadcrumbs">
<tbody>
<tr class="status">
<td width="100%">&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://www.apache.org/">Apache</a> | <a href="http://ws.apache.org/">Web Services</a> | <a href="http://ws.apache.org/axis/">Axis</a></td><td nowrap="1" align="right">
<form method="get" action="http://www.google.com/search" target="_blank">Search <input type="hidden" name="sitesearch" value="ws.apache.org"><input type="text" id="query" name="q" size="10"><img class="spacer" src="skin/images/spacer.gif" alt="" width="5" height="1"><input type="submit" value="Go" name="Search">
</form>
</td>
</tr>
</tbody>
</table>
<table id="main" width="100%" cellpadding="8" cellspacing="0" summary="" border="0">
<tbody>
<tr valign="top">
<td id="leftcol">
<div id="navcolumn">
<div class="menuBar">
<div class="menu">
<span class="menuLabel">Axis</span>
 
<div class="menuItem">
<a href="../index.html">Introduction</a>
</div>
 
<div class="menuItem">
<a href="../news.html">News</a>
</div>

 
<div class="menuItem">
<a href="http://wiki.apache.org/ws/FrontPage/Axis">FAQ/Wiki</a>
</div>
 
<div class="menu">
<span class="menuLabel">Get Involved</span>
  
<div class="menuItem">
<a href="../overview.html">Overview</a>
</div>
  
<div class="menuItem">
<a href="../cvs.html">SVN Repository</a>
</div>
  
<div class="menuItem">
<a href="../mail.html">Mailing Lists</a>
</div>
  
<div class="menuItem">
<a href="../ref.html">Reference Library</a>
</div>
  
<div class="menuItem">
<a href="../bugs.html">Bugs</a>
</div>
  
<div class="menuItem">
<a href="../howtobuild.html">HowToBuildSite</a>
</div>
 
</div>
 
<div class="menu">
<span class="menuLabel">Axis (Java)</span>  
  
<div class="menuItem">
<a href="../java/index.html">Documentation</a>
</div>
  
  
<div class="menuItem">
<a href="../java/releases.html">Releases</a>
</div>
  
<div class="menuItem">
<a href="../java/install.html">Installation</a>
</div>
  
<div class="menuItem">
<a href="../java/user-guide.html">User's Guide</a>
</div>
  
<div class="menuItem">
<a href="../java/developers-guide.html">Developer's Guide</a>
</div>
  
<div class="menuItem">
<a href="../java/integration-guide.html">Integration Guide</a>
</div>
  
<div class="menuItem">
<a href="../java/architecture-guide.html">Architecture Guide</a>
</div>
  
<div class="menuItem">
<a href="../java/reference.html">Reference Guide</a>
</div>
  
<div class="menuItem">
<a href="../java/reading.html">Reading Guide</a>
</div>
  
<div class="menuItem">
<a href="../java/requirements.html">Requirements</a>
</div>
 
</div>
 
<div class="menu">
<span class="menuLabel">Axis C++</span>
  
<div class="menuItem">
<a href="http://ws.apache.org/axis/cpp/index.html">Home</a>
</div>
  
<div class="menuItem">
<a href="http://ws.apache.org/axis/cpp/documentation.html">Documentation</a>
</div>
  
<div class="menuItem">
<a href="http://ws.apache.org/axis/cpp/download.html">Download</a>
</div>
  
<div class="menuItem">
<a href="http://wiki.apache.org/ws/FrontPage/AxisCPP">Wiki Pages</a>
</div>
  
<div class="menuItem">
<a href="http://ws.apache.org/axis/cpp/who.html">Who we are</a>
</div>
 
</div>

<div class="menu">
<span class="menuLabel">Downloads</span>
  
<div class="menuItem">
<a href="../interim.html">Interim Drops</a>
</div>
  
<div class="menuItem">
<a href="http://svn.apache.org/viewcvs.cgi/webservices/axis/trunk/">Source Code</a>
</div>

</div>

<div class="menu">
<span class="menuLabel">Translation</span>
  
<div class="menuItem">
<a href="http://ws.apache.org/axis/ja/index.html">Japanese</a>
</div>

</div>

<div class="menu">
<span class="menuLabel">Related Projects</span>
  
<div class="menuItem">
<a href="http://ws.apache.org/wsif/">WSIF</a>
</div>
  
<div class="menuItem">
<a href="http://ws.apache.org/juddi/">jUDDI</a>
</div>
  
<div class="menuItem">
<a href="http://wsdl4j.sourceforge.net">WSDL4J</a>
</div>
  
<div class="menuItem">
<a href="http://www.uddi4j.org/">UDDI4J</a>
</div>

</div>

<div class="menu">
<span class="menuLabel">Misc</span>
  
<div class="menuItem">
<a href="../who.html">Who we are</a>
</div>
  
<div class="menuItem">
<a href="../contact.html">Contact</a>
</div>
  
<div class="menuItem">
<a href="../legal.html">Legal</a>
</div>
  
<div class="menuItem">
<a href="../docs.html">Notes/Docs</a>
</div>

</div>


</div>
</div>
</div>
</td><td>
<div id="bodycol">
<div class="app">
<div class="h3"> 
   
   
    
<div class="h3">
<h3>WebServices - Axis - </h3>
</div>
      

<p>

<h2>Notes from Axis Face-to-Face Meeting at Allaire, Newton, MA.  </h2>

<h3>Date: 28 Feb 2001</h3>

<b>Attendees:</b>

<ul>

<li>Glen Daniels, Allaire.  Host</li>

<li>Doug Davis, IBM Raleigh</li>

<li>Steve Graham, IBM Raleigh</li>

<li>Jim Stearns, HP Redmond</li>

<li>Jacek Kopecky,  Idoox, Prague</li>

<li>Waqar Sadiq, Vitria</li>

<li>James Snell, IBM Fresno (by phone)</li>

<li>Stuart Williams, HP Bristol</li>

</ul>


<p>Glen expressed some frustration at the lack of good tools that Apache provides for project management.  The mailing list archives kind of bite, etc.  SourceForge seems to have good tools for scheduling / task management / collaboration...</p>


<p>
<i><b>ACTION ITEM : Glen will email Sam and ask about the possibility of "co-locating" the project with SourceForge? Investigating other tools and solutions?</b></i>
</p>


<p>Waquar Sadiq from Vitria, a new member of the team, volunteered to be Project Manager for Axis!  (applause applause)</p>


<p>Steve presented a short Powerpoint presentation to frame the meeting.</p>

Axis 1.0 will be a serious product.  As such, it will have:
<ul>

<li>product-level code</li>

<li>product-level testing</li>

<li>product-level doc + examples</li>

<li>product-level performance</li>

</ul>


<h4>Goals for the 1.0 release:</h4>

<ul>

<li>Full SOAP 1.1 implementation</li>

<ul>
  
<li>Interoperability testing/discussions to answer ambiguities</li>
  
<li>Intermediary implementation must be in 1.0 release</li>

</ul>

<li>Relative priority (Glen)</li>
   
<ul>
   
<li>Full implementation of 1.1</li>
   
<li>Customer requirements</li>
   
<li>Where xmlp is headed (Glen, Waqar, Jacek are all on XML Protocol group)</li>
   
</ul>


<li>Fast (need to do the streaming parsing)</li>

<li>Pluggable</li>

</ul>


<p>Support for requestor/provider/intermediary (one-way, initiated by either side); client notification.
Support for request/response and the other 3 transmission primitives from WSDL</p>


<p>Glen : Don't think we should make the axis-user list until 0.9 or beta 1.0...</p>


<p>Issue : Migrating from Apache SOAP to Axis - should be easy, but how easy?</p>


<p>Waqar: We should be tracking ebXML as well as XMLP...</p>


<h5>Testing/Process-related discussion...</h5>

<ul>

<li>coding standards</li>

<li>test-case centric development</li>

<li>regression test cases</li>

<li>scenario-centric design/architecture</li>

<li>Unit tests are good, but not sufficient</li>

<li>Is JUnit too oriented towards "white box" unit testing?  Jim says they're using it as a framework at HP for both unit and functional.</li>

<li>Three types of testing - unit, functional integration, interop</li>

<li>conformance testing; maybe use the userland validator? leverage external efforts? Microsoft "bakeoff"?</li>

<li>interop testing with big players (.NET) is crucial!</li>

<li>Requiring some level of testing implementation from commmitters is key.  The question is how to best codify this in a strong but not draconian way</li>

</ul>

The plan for the rest of today:
<ul>

<li>Walk through requirements doc</li>

<li>Generate scenarios</li>

<li>walk through scenarios, updating requirements</li>

</ul>



<h3>Requirements discussion</h3>

<ul>
 
<li>lose
     1.1 and 1.1.1: architecture is settling  not overdoing use of handlers</li>
 
<li>server-initiated
     solicit/response (in WSDL spec)</li>
 
<li>4
     options (synch/asynch, client-initiated vs server-initiated)</li>
 
<ul type="circle">
  
<li>requestor/provider
      </li>
  
<li>Facets
      (Steve):</li>
  
<ul type="square">
   
<li>Who
       initiates (server or client)</li>
   
<li>1-way/2-way</li>
   
<li>asynch/synch</li>
   
<li>(1-way
       synch makes no sense, so 7 options)</li>
   
<li>2-way
       asynch?</li>
  
</ul>
  
<li>Glen:
      what is underlying protocol doesn't support synchronous (such as smtp)?</li>
  
<li>Waqar:
      what about async request expecting ack, vs. one not expecting one?</li>
  
<li>Is this (a)synchronous at the <b>API</b> level, or the <b>transport</b> level?</li>
  
<li>Call
      this topic "message exchange patterns"</li>
  
<li>"Synchronous"
      == blocking</li>
  
<li>everything is initiated
      by a client of the axis engine, which can be on requestor,
      intermediary, or provider</li>
  
<li>Q:
      in a one-way WSDL message, can you specify a fault? James: yes, but spec doesn't say what
      to do with the fault. Stuart:
      thinks treatment of fault is above the message layer.</li>
  
<li>WSDL
      1.1 one-way only has input, but doesn't have output or fault (Steve
      brought up)</li>
  
<li>Stuart:
      Service in wsdl is more like operation.</li>
 
</ul>
 
<li>What
     can we dispatch by?</li>
 
<ul type="circle">
  
<li>Dispatch
      by transport URL</li>
  
<li>Dispatch
      by HTTP SOAPAction</li>
  
<li>Dispatch
      by QName of first body entry</li>
  
<li>Dispatch,
      using custom handler, by any information available)</li>
 
</ul>
 
<li>How
     many RPC's per message, and where</li>
 
<ul type="circle">
  
<li>Axis
      will NOT support a RPC invocation specified in a header</li>
  
<li>Axis
      will support only one RPC invocation per body entry.</li>
  
<li>Suggestion to remove "first" from body child, 6-2 against.</li>
 
</ul>
 
<li>XML
     Prototocol - Status</li>
 
<ul type="circle">
  
<li>Something
      will be published in April  issues with SOAP 1.1 that need to be fixed</li>
  
<li>July-ish:
      first XML protocol spec  soap 1.1 with fixes to some issues</li>
  
<li>November:
      proposed recommendation</li>
  
<li>December:
      1.0 spec  recommendation</li>
 
</ul>
 
<li>Intermediaries:
     Glen: TRLSoap has implemented them to some extent.</li>
 
<ul type="circle">
  
<li>Steve:
      state of the art is Single-hop fake.</li>
 
</ul>
 
<li>SOAP
     Encoding Support</li>
 
<ul type="circle">
  
<li>We
      use for RPC, and yet won't require xsi:type (<b>type info can come from a
      reference to a schema outside the message</b>) </li>
 
</ul>
 
<li>Performance</li>
 
<ul type="circle">
  
<li>Action
      Item: need to research alternative benchmarks for SOAP performance (Jim
      volunteered) and for interoperability.</li>
  
<ul type="square">
   
<li>UI</li>
  
</ul>
  
<li>Glen
      was willing to prioritize "not significantly slower" as want but not
      required. Jim advocated that we
      need at release, and Steve agreed.</li>
 
</ul>

</ul>


<p>Discussion of metrics - some arguments as to whether it's a Handler or an API.  Well, logging is an API, maybe metrics are as well...</p>


<p>
<i><b>ACTION ITEM: Glen will investigate JRun's metrics API and share with the group.</b></i>
</p>


<p>We need to have some kind of "Required header" parameter either in the WSDD or as an API in the Handler itself if we want "pre-flight" knowledge of required headers (and perhaps a default fault response)...</p>


<p>Big discussion about header handling - jukebox handler, there were worries that it's a security risk.  Glen notes that the handlers that are in the jukebox's registry are limited, just like the handlers on a chain, you just don't need to call them all in order...doesn't seem like a risk.</p>



<hr>


<h2>Day 2</h2>

<h3>1 March 2001</h3>


<b>Attendees:</b>

<ul>

<li>Glen</li>

<li>Steve</li>

<li>Doug</li>

<li>Jacek</li>

<li>Jim</li>

</ul>

Agenda (wish list):
<ul>

<li>Finish revision of requirements</li>

<li>Develop rough use case scenarios</li>

<li>Revisit requirements after use cases</li>

<li>Glen: supplier pattern</li>

<li>Steve: WSDD</li>

<li>All: streaming parser</li>

</ul>


<p>Code on BOTH client and Server looks like this?</p>


<span class="codefrag">
Handler handler = Axis.getHandler(name1);
MessageContext mc = new MessageContext();
// set up MC properties, including target!
handler.invoke(mc);
</span>


<h3>Requirements review, continued</h3>


<ul>
 
<li>Service
     Description</li>
 
<ul type="circle">
  
<li>Interaction
      between WSDL and WSDD. Each can
      be used to create the other?</li>
  
<li>Steve:
      hard to generate wsdl for document (rather than rpc).</li>
  
<li>Jacek:
      treat the WSDD as the master</li>
  
<li>Jim:
      no, WSDL is the standard, WSDD is just our team's proposal.</li>
  
<li>Glen:
      WSDD may not contain all the info needed to generate a WSDL file</li>
  
<li>WSDD
      can contain either (1) pointer to existing WSDL file or (2) enough data
      (possibly, but not certainly) to generate a WSDL from scratch, or (3)
      enough data which in combination with existing WSDL, to generate an
      updated WSDL.</li>
  
<li>WSDD
      should provide cross-checking (WSDL not consistent with WSDD)</li>
  
<li>(I
      missed some issues here: there's flexibility here that makes this
      difficult  e.g. what serializer?)</li>
  
<li>DISCO
      on Axis root added.</li>
  
<li>Client-side</li>
  
<ul type="square">
   
<li>Default
       will be simple case: generate a proxy</li>
   
<li>But
       WSDL can require a digital signature header  want to be able to have
       WSDD on client side to deploy a chain that includes a digital signature
       generator.</li>
   
<li>Doug:
       where to get digital signature handler?</li>
	   
<ul>
   
<li>Steve/Glen: wsdl can include pointer to handler.</li>
   
<li>Glen: there are extension elements in
       WSDL.</li>
	   
</ul>
   
<li>Added
       as wish proxy generation from wsdl (and wsdd). Stated: java, possibly c++</li>
  
</ul>
 
</ul>
 
<li>Platform</li>
 
<ul type="circle">
  
<li>Surprising
      amount of interest in doing C++ implementation (Glen, Steve, Jacek) for
      performance, but was listed as wish [P5]. Background: James Snell added this, including using local
      services (e.g. COM).</li>
 
</ul>
 
<li>Transports
     </li>
 
<ul type="circle">
  
<li>SMTP
      sender and POP3 poller.  Assume external mail server
      available.  This is what
      Apache SOAP 2 does.</li>
  
<li>Glen:
      do we want to provide a generic (fast) transport between handlers?</li>
  
<ul type="square">
   
<li>Transport
       Sender</li>
   
<li>Glen:
       all transport-specific chains end in a router. Oops, maybe not; if no router at end, look at target
       service field and if not null, invoke that service; then look <i>again</i> to see if target service is not null.  Loop until null.</li>
   
<li>Order</li>
   
<ul>
    
<li>Transport
        chain  no router</li>
    
<li>Global
        chain  no router</li>
   
</ul>
  
</ul>
  
<li>
<i>(Lots
      of discussion on axis engine and dispatching)</i>
</li>
  
<li>Jim
      asked whether any of these transport cases could be punted  these
      asymmetric cases of HTTP request asking for SMTP response. Glen, Steve, Jacek all said no, we
      need to support all of these.</li>
  
<li>(Discussion
      over how to send asymmetric response to request sent over one-way
      protocol: callback, or configure in a Transport Sender and if return
      message is non-null, send and then null out return message so it. Callback or null-out message? Steve and Jacek: putting up to
      committer vote would be a big morass? Jacek: ok, grumble, fallback.</li>
  
<li>Doug:
      are we going to support multi-cast? Jacek: why not? Jim: why?</li>
  
<li>Things
      that Transport Listener must call and set:</li>
  
<ul type="square">
   
<li>Static
       handler Axis.getHandler(String tlID);</li>
   
<li>Request
       chain bag ID</li>
   
<li>Response
       chain bag ID</li>
   
<li>Target
       bad ID</li>
   
<li>Transport
       Sender</li>
  
</ul>
  
<li>Jacek
      prefers many small registries over fewer larger ones. Glen said that smaller hash tables
      perform lookups faster.</li>
  
<ul type="square">
   
<li>Services (deployed handlers)</li>
   
<li>Handlers
       (available handlers)</li>
   
<li>(After
       much discussion, settled on 2)</li>
  
</ul>
 
</ul>
 
<li>Data
     Encoding</li>
 
<ul type="circle">
  
<li>Steve:
      (de)serialization only makes sense for RPC, not document handling.</li>
  
<li>Jacek
      would love to see general serialization at 1.0 release.</li>
  
<li>Serialization
      may occur anywhere, not in one fixed place in Axis architecture.</li>
 
</ul>

</ul>



<h2>Streaming Parser Discussion</h2>


<p>For reading in input, we use the PDOM model - <br>
We have either a SAX event source or a pull parser underneath something that looks like JDOM.<br>
In the SAX case:<br>

<ol>

<li>a thread starts processing the SAX event stream, and blocks until told to continue.</li>

<li>When people ask for a particular element (i.e. getNextChild()), the parser thread unblocks, and runs the SAX event stream through, building up the JDOM object model, until it gets to the desired element/attribute/etc.  Then it blocks again, and returns control to the getWhatever() API.</li>

</ol>

</p>
Sot the Message API gets: (or maybe JDOM gets the latter three)<br>
<br> 

<span class="codefrag">
getAsElement()
parseAsSAX(SAXHandler)
getAsXMLStream()
getAsByteStream()
</span>


<p>Does getAsByteStream() terminate the option of doing anything else afterwards?</p>

How do we test this?  Metrics:
<ol>

<li>Use PDOM, read first few elements, then stream rest to file</li>

<li>Use JDOM, process first few elements, then write to file</li>

<li>Stream bytes from file to file</li>

</ol>

<p>do this for small (1K), medium (50K), and large (10 meg) files</p>


<p>On the output side, we should be able to setAsStream, and hand the element a stream which will eventually be pulled for content when someone does a getAsStream() on the whole doc.  This means a proxy stream which clunks its way down the message, draining streams it encounters along the way.</p>


<p>Open question - is it easy/efficient to get a JDOM Element as a stream/string, as opposed to a whole doc?  Looks like Element.getSerializedForm() isn't implemented yet?</p>


<p>Pull parser discussion - if possible, a real pull parser would avoid the multi-threading, and probably perform better than the SAX-based PDOM model.  We'll look into this!</p>


<hr>


<p>Project Participants:</p>


<ul>
 
<li>PM: Waqar
     (Vitria)</li>
 
<li>Coders:
     Doug, Steve, Glen, Jacek, Jim, James, Yuichi, Ryoh</li>
 
<ul type="circle">
  
<li>Glen
      and Doug can work on this a lot</li>
  
<li>James
      doing stuff</li>
  
<li>Steve
      doesn't have much time for coding</li>
 
</ul>
 
<li>Others:
     George, Chris Nelson, Kevin Mitchell, Sanjiva, Matt, </li>
 
<li>Sam
     for political and process stuff.</li>
 
<li>Connection
     to XML Protocol: Glen, Waqar, Jacek</li>
 
<ul type="circle">
  
<li>Stuart
      for Conversations</li>
 
</ul>
 
<li>Connection
     to Apache 2.x: Doug, Glen, Sanjiva</li>
 
<li>(Glen:
     SOAP 2.1 documentation is bad, could impact us  less credibility).</li>

</ul>

</p>
    
  

<div id="pdf" align="right">
<a href="F2F-2.pdf"><img alt="PDF" src="../skin/images/pdfdoc.gif" class="skin"><br>
          PDF</a>
</div>
</div>
</div>
</div>
</td>
</tr>
</tbody>
</table>
<div id="footer">
<table summary="footer" cellspacing="0" cellpadding="4" width="100%" border="0">
<tbody>
<tr>
<td colspan="2">
<div align="center">
<div class="copyright">
              Copyright &copy; 2000-2005&nbsp;The Apache Software Foundation. All rights reserved.
            </div>
</div>
</td>
</tr>
<tr>
<td align="left"></td><td align="right">
<div align="right">
<div class="credit"></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</body>
</html>
