<!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="8" 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.jpg"></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/axis.jpg"></a>
</div>
</td><td valign="top" rowspan="2" align="right" class="search">
<form target="_blank" action="http://www.google.co.jp/search" method="get">
<table summary="search" border="0" cellspacing="0" cellpadding="0">
<tr>
<td bgcolor="#a5b6c6" colspan="3"><img height="10" width="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td>
</tr>
<tr>
<td colspan="3"><img height="8" width="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td>
</tr>
<tr>
<td><img height="1" width="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td nowrap="nowrap"><input value="ws.apache.org" name="sitesearch" type="hidden"><input value="ja" name="hl" type="hidden"><input value="UTF-8" name="ie" type="hidden"><input size="10" name="q" id="query" type="text"><img height="1" width="5" alt="" src="../skin/images/spacer.gif" class="spacer"><input name="Search" value="検索" type="submit">
<br>WS を検索
                          
                          
                      </td><td><img height="1" width="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td>
</tr>
<tr>
<td colspan="3"><img height="7" width="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td>
</tr>
<tr>
<td class="bottom-left-thick"></td><td bgcolor="#a5b6c6"><img height="1" width="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td class="bottom-right-thick"></td>
</tr>
</table>
</form>
</td>
</tr>
</tbody>
</table>
</div>
<table width="100%" cellpadding="0" cellspacing="0" border="0" summary="nav" id="breadcrumbs">
<tbody>
<tr class="status">
<td><a href="http://www.apache.org/">Apache</a> | <a href="http://ws.apache.org/">WS</a><a href=""></a></td><td id="tabs">
<div class="tab">
<span class="selectedTab"><a class="base-selected" href="../index.html">WebServices-Axis</a></span>
</div>
</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">はじめに</a>
</div>
 
<div class="menuItem">
<a href="../news.html">お知らせ</a>
</div>

 
<div class="menuItem">
<a href="http://wiki.apache.org/ws/ja/axis">FAQ/Wiki</a>
</div>
 
<div class="menu">
<span class="menuLabel">活動に参加</span>
  
<div class="menuItem">
<a href="../overview.html">概要</a>
</div>
  
<div class="menuItem">
<a href="../cvs.html">CVS リポジトリ</a>
</div>
  
<div class="menuItem">
<a href="../mail.html">メーリングリスト</a>
</div>
  
<div class="menuItem">
<a href="../ref.html">リファレンスライブラリ</a>
</div>
  
<div class="menuItem">
<a href="../bugs.html">バグ</a>
</div>
  
<div class="menuItem">
<a href="../howtobuild.html">サイト構築方法</a>
</div>
 
</div>
 
<div class="menu">
<span class="menuLabel">Axis (Java)</span>
  
<div class="menuItem">
<a href="../java/index.html">ドキュメント</a>
</div>
  
<div class="menuItem">
<a href="../java/install.html">インストール</a>
</div>
  
<div class="menuItem">
<a href="../java/user-guide.html">ユーザガイド</a>
</div>
  
<div class="menuItem">
<a href="../java/developers-guide.html">開発者ガイド</a>
</div>
  
<div class="menuItem">
<a href="../java/integration-guide.html">統合ガイド</a>
</div>
  
<div class="menuItem">
<a href="../java/architecture-guide.html">アーキテクチャガイド</a>
</div>
  
<div class="menuItem">
<a href="../java/reference.html">リファレンスガイド</a>
</div>
  
<div class="menuItem">
<a href="../java/reading.html">読書ガイド</a>
</div>
  
<div class="menuItem">
<a href="../java/requirements.html">要件</a>
</div>
 
</div>
 
<div class="menu">
<span class="menuLabel">Axis (C++)</span>
  
<div class="menuItem">
<a href="../cpp/index.html">Axis C++ 最新版</a>
</div>
  
<div class="menuItem">
<a href="../cpp/documentation.html">ドキュメント</a>
</div>
  
<div class="menuItem">
<a href="../cpp/download.html">ダウンロード</a>
</div>
  
<div class="menuItem">
<a href="http://wiki.apache.org/ws/FrontPage/AxisCPP">Wiki ページ [英語]</a>
</div>
  
<div class="menuItem">
<a href="../cpp/who.html">メンバ紹介</a>
</div>
  
</div>

<div class="menu">
<span class="menuLabel">ダウンロード</span>
  
<div class="menuItem">
<a href="../releases.html">リリース</a>
</div>
  
<div class="menuItem">
<a href="../interim.html">暫定版</a>
</div>
  
<div class="menuItem">
<a href="http://cvs.apache.org/viewcvs/ws-axis/">ソースコード [英語]</a>
</div>

</div>

<div class="menu">
<span class="menuLabel">翻訳</span>
  
<div class="menuItem">
<a href="http://ws.apache.org/axis/jp/">日本語</a>
</div>

</div>

<div class="menu">
<span class="menuLabel">関連プロジェクト</span>
  
<div class="menuItem">
<a href="http://ws.apache.org/wsif/">WSIF [英語]</a>
</div>
  
<div class="menuItem">
<a href="http://cvs.apache.org/viewcvs/*checkout*/ws-wsil/java/README.htm">WSIL [英語]</a>
</div>
  
<div class="menuItem">
<a href="http://www-124.ibm.com/developerworks/projects/wsdl4j/">WSDL4J [英語]</a>
</div>
  
<div class="menuItem">
<a href="http://www.uddi4j.org/">UDDI4J [英語]</a>
</div>

</div>

<div class="menu">
<span class="menuLabel">その他</span>
  
<div class="menuItem">
<a href="../who.html">メンバ紹介</a>
</div>
  
<div class="menuItem">
<a href="../contact.html">連絡先</a>
</div>
  
<div class="menuItem">
<a href="../legal.html">法関連</a>
</div>
  
<div class="menuItem">
<a href="../docs.html">メモ/ドキュメント</a>
</div>

</div>


</div>
</div>
</div>
</td><td>
<div id="bodycol">
<div class="app">
<div align="center">
<h1>WebServices - Axis</h1>
</div>
<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>
