User: jung    
  Date: 00/09/08 00:58:04

  Added:       zoap/papers soapjBoss.htm
  Log:
  Added the concept white paper.
  
  Revision  Changes    Path
  1.1                  website/zoap/papers/soapjBoss.htm
  
  Index: soapjBoss.htm
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  <html xmlns:v="urn:schemas-microsoft-com:vml"
  xmlns:o="urn:schemas-microsoft-com:office:office"
  xmlns:w="urn:schemas-microsoft-com:office:word"
  xmlns="http://www.w3.org/TR/REC-html40">
  
  <head>
  <meta http-equiv=Content-Type content="text/html; charset=windows-1252">
  <meta name=ProgId content=Word.Document>
  <meta name=Generator content="Microsoft Word 9">
  <meta name=Originator content="Microsoft Word 9">
  <link rel=File-List href="./soapjBoss-Dateien/filelist.xml">
  <link rel=Edit-Time-Data href="./soapjBoss-Dateien/editdata.mso">
  <!--[if !mso]>
  <style>
  v\:* {behavior:url(#default#VML);}
  o\:* {behavior:url(#default#VML);}
  w\:* {behavior:url(#default#VML);}
  .shape {behavior:url(#default#VML);}
  </style>
  <![endif]-->
  <title>Migration Strategy</title>
  <!--[if gte mso 9]><xml>
   <o:DocumentProperties>
    <o:Subject>Technical White Paper</o:Subject>
    <o:Keywords>infor:CE infor:com migration technical logical</o:Keywords>
    <o:LastAuthor>Dr. Christoph Georg Jung</o:LastAuthor>
    <o:Revision>50</o:Revision>
    <o:Created>2000-05-25T09:22:00Z</o:Created>
    <o:LastSaved>2000-06-17T07:28:00Z</o:LastSaved>
    <o:Pages>8</o:Pages>
    <o:Words>4145</o:Words>
    <o:Characters>23627</o:Characters>
    <o:Category>Technical White Paper</o:Category>
    <o:Manager>Dr. Christoph Georg Jung</o:Manager>
    <o:Company>infor: business solutions AG</o:Company>
    <o:Lines>196</o:Lines>
    <o:Paragraphs>47</o:Paragraphs>
    <o:CharactersWithSpaces>29015</o:CharactersWithSpaces>
    <o:Version>9.2812</o:Version>
   </o:DocumentProperties>
  </xml><![endif]--><!--[if gte mso 9]><xml>
   <w:WordDocument>
    <w:HyphenationZone>21</w:HyphenationZone>
   </w:WordDocument>
  </xml><![endif]-->
  <style>
  <!--
   /* Font Definitions */
  @font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;
        mso-font-charset:0;
        mso-generic-font-family:swiss;
        mso-font-pitch:variable;
        mso-font-signature:553679495 -2147483648 8 0 66047 0;}
   /* Style Definitions */
  p.MsoNormal, li.MsoNormal, div.MsoNormal
        {mso-style-parent:"";
        margin:0cm;
        margin-bottom:.0001pt;
        mso-pagination:widow-orphan;
        font-size:12.0pt;
        font-family:"Times New Roman";
        mso-fareast-font-family:"Times New Roman";}
  h1
        {margin-right:0cm;
        mso-margin-top-alt:auto;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        mso-pagination:widow-orphan;
        mso-outline-level:1;
        font-size:24.0pt;
        font-family:"Times New Roman";
        mso-font-kerning:18.0pt;
        font-weight:bold;}
  h2
        {margin-right:0cm;
        mso-margin-top-alt:auto;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        mso-pagination:widow-orphan;
        mso-outline-level:2;
        font-size:18.0pt;
        font-family:"Times New Roman";
        font-weight:bold;}
  h3
        {mso-style-next:Standard;
        margin-top:12.0pt;
        margin-right:0cm;
        margin-bottom:3.0pt;
        margin-left:0cm;
        mso-pagination:widow-orphan;
        mso-outline-level:3;
        font-size:13.0pt;
        font-family:Arial;
        font-weight:bold;}
  h4
        {mso-style-next:Standard;
        margin-top:0cm;
        margin-right:0cm;
        margin-bottom:0cm;
        margin-left:35.4pt;
        margin-bottom:.0001pt;
        text-align:center;
        mso-pagination:widow-orphan;
        mso-outline-level:4;
        font-size:14.0pt;
        mso-bidi-font-size:12.0pt;
        font-family:"Times New Roman";
        mso-ansi-language:EN-US;
        font-weight:bold;}
  p.MsoCaption, li.MsoCaption, div.MsoCaption
        {mso-style-next:Standard;
        margin:0cm;
        margin-bottom:.0001pt;
        text-align:center;
        mso-pagination:widow-orphan;
        font-size:14.0pt;
        mso-bidi-font-size:12.0pt;
        font-family:"Times New Roman";
        mso-fareast-font-family:"Times New Roman";
        mso-ansi-language:EN-US;
        font-weight:bold;}
  p.MsoBodyTextIndent, li.MsoBodyTextIndent, div.MsoBodyTextIndent
        {margin-top:0cm;
        margin-right:0cm;
        margin-bottom:0cm;
        margin-left:36.0pt;
        margin-bottom:.0001pt;
        mso-pagination:widow-orphan;
        font-size:12.0pt;
        font-family:"Times New Roman";
        mso-fareast-font-family:"Times New Roman";
        mso-ansi-language:EN-US;}
  a:link, span.MsoHyperlink
        {color:blue;
        text-decoration:underline;
        text-underline:single;}
  a:visited, span.MsoHyperlinkFollowed
        {color:purple;
        text-decoration:underline;
        text-underline:single;}
  p.MsoDocumentMap, li.MsoDocumentMap, div.MsoDocumentMap
        {margin:0cm;
        margin-bottom:.0001pt;
        mso-pagination:widow-orphan;
        background:navy;
        font-size:12.0pt;
        font-family:Tahoma;
        mso-fareast-font-family:"Times New Roman";}
  p
        {margin-right:0cm;
        mso-margin-top-alt:auto;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        mso-pagination:widow-orphan;
        font-size:12.0pt;
        font-family:"Times New Roman";
        mso-fareast-font-family:"Times New Roman";}
  address
        {margin:0cm;
        margin-bottom:.0001pt;
        mso-pagination:widow-orphan;
        font-size:12.0pt;
        font-family:"Times New Roman";
        font-style:italic;}
  pre
        {margin:0cm;
        margin-bottom:.0001pt;
        mso-pagination:widow-orphan;
        tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 
412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
        font-size:10.0pt;
        font-family:"Courier New";
        mso-fareast-font-family:"Courier New";
        color:black;}
  tt
        {mso-ascii-font-family:"Courier New";
        mso-fareast-font-family:"Courier New";
        mso-hansi-font-family:"Courier New";
        mso-bidi-font-family:"Courier New";}
  p.Preformatted, li.Preformatted, div.Preformatted
        {mso-style-name:Preformatted;
        margin:0cm;
        margin-bottom:.0001pt;
        mso-pagination:widow-orphan;
        tab-stops:0cm 47.95pt 95.9pt 143.85pt 191.8pt 239.75pt 287.7pt 335.65pt 
383.6pt 431.55pt 479.5pt;
        layout-grid-mode:char;
        font-size:10.0pt;
        font-family:"Courier New";
        mso-fareast-font-family:"Times New Roman";
        mso-bidi-font-family:"Times New Roman";}
  @page Section1
        {size:595.3pt 841.9pt;
        margin:70.85pt 70.85pt 2.0cm 70.85pt;
        mso-header-margin:35.4pt;
        mso-footer-margin:35.4pt;
        mso-paper-source:0;}
  div.Section1
        {page:Section1;}
  -->
  </style>
  <!--[if gte mso 9]><xml>
   <o:shapedefaults v:ext="edit" spidmax="1034"/>
  </xml><![endif]--><!--[if gte mso 9]><xml>
   <o:shapelayout v:ext="edit">
    <o:idmap v:ext="edit" data="1"/>
   </o:shapelayout></xml><![endif]-->
  </head>
  
  <body bgcolor=white lang=DE link=blue vlink=purple style='tab-interval:35.4pt'>
  
  <div class=Section1>
  
  <p><span lang=EN-US style='mso-ansi-language:EN-US'><a
  href="http://www.infor.de/">infor:business solutions AG</a>, Technical White
  Paper Series<o:p></o:p></span></p>
  
  <h1 align=center style='text-align:center'><span lang=EN-US style='mso-ansi-language:
  EN-US'>Simple Access to Complex Beans: Integrating SOAP with Enterprise
  Java-Beans�<o:p></o:p></span></h1>
  
  <h2 align=center style='text-align:center'><i><span lang=EN-US
  style='mso-ansi-language:EN-US'>A Request for Comments<o:p></o:p></span></i></h2>
  
  <p align=center style='text-align:center'><strong>Christoph G. Jung </strong></p>
  
  <address style='text-align:center'><a href="http://www.infor.de/">infor:business
  solutions AG</a><br>
  Vincenz-Prie�nitz-Stra�e 3, D-76131 Karlsruhe<br>
  e-mail: <a 
href="mailto:[EMAIL PROTECTED]">Christoph.Jung</a>@infor.de,</address>
  
  
  <div class=MsoNormal align=center style='text-align:center'>
  
  <hr size=2 width="100%" align=center>
  
  </div>
  
  
  <h2><strong><span lang=EN-US 
style='mso-ansi-language:EN-US;font-weight:normal'>Abstract</span></strong><span
  lang=EN-US style='mso-ansi-language:EN-US'> <o:p></o:p></span></h2>
  
  <p class=MsoNormal style='margin-right:36.0pt;mso-margin-top-alt:auto;
  mso-margin-bottom-alt:auto;margin-left:36.0pt'><i><span lang=EN-US
  style='mso-ansi-language:EN-US'>Enterprise Java-Beans�</span></i><span
  lang=EN-US style='mso-ansi-language:EN-US'> provide a promising 
<i>object-oriented</i>
  and declarative programming platform for business applications. Open-Source
  projects, such as <i>jBoss</i>, reconcile this technology with the verve of a
  skilled and motivated development community striving to state-of-the-art
  implementations with features, such as hot-deploy, compilation-less remote
  access, modular technical architecture, etc. On the other hand, there is a
  trend to extend the usage of the <i>eXtensible Markup Language</i> as a
  replacement for traditional middleware. The <i>Simple Object Access 
Protocol</i>,<span
  style="mso-spacerun: yes">� </span>for example, that is currently supported by
  the major players Microsoft and IBM, is close to bridge the gap between
  inherently COM-based Desktop-Front-Ends and Java�-Based Application-Tiers. In
  this paper we scetch a possible integration of<span style="mso-spacerun: yes">�
  </span>XML-middleware and EJB at hand of the two products/specifications jBoss
  and SOAP. The advantage of this approach is the possibility of a clean and
  structured development in object-oriented terms as given by the EJB platform
  paired with a loosely-coupled interoperability infrastructure which has not yet
  been possible to this extent with ancestor technologies. <o:p></o:p></span></p>
  
  
  <div class=MsoNormal align=center style='text-align:center'>
  
  <hr size=2 width="100%" align=center>
  
  </div>
  
  
  <h2><a name=introduction><span lang=EN-US style='mso-ansi-language:EN-US;
  font-weight:normal'>1. Introduction: </span></a><span lang=EN-US
  style='mso-ansi-language:EN-US;font-weight:normal'>EJB versus XML-based
  Middleware<o:p></o:p></span></h2>
  
  <p style='margin-left:35.4pt'><span lang=EN-US style='mso-ansi-language:EN-US'>In
  the recent decade, <i>Object-Oriented Programming</i><span style="mso-spacerun:
  yes">� </span>(OOP) <a href="migration.htm#migration">[5]</a> has ben
  established as a highly suitable paradigm for building business applications.
  Besides a well-structured, formalised development cycle including massive tool
  support, the field has brought up a new generation of<span style="mso-spacerun:
  yes">� </span>runtime environments called <i>Transaction Processing Monitors</i>
  (TPM) that are able to take the technical burden of distribution, transaction
  handling, and security from the application programmers. Premier examples of
  modern TPM�s are the <i><a href="http://www.microsoft.com/com+">Microsoft 
COM+</a></i>
  framework (formerly known as the <i>Microsoft Transaction Server</i>, MTS), <i><a
  href="http://www.bea.com/">Bea�s Tuxedo</a></i> and up-to-date <i><a
  href="http://www.j2ee.com/">Enterprise JavaBeans�</a></i> (EJB) <a
  href="migration.htm#migration">[7]</a> products. <o:p></o:p></span></p>
  
  <p style='margin-left:35.4pt'><span lang=EN-US 
style='mso-ansi-language:EN-US'>Especially
  the latter, by relying on <i><a href="http://java.sun.com/">Java�</a></i> with
  its clean programming model, its practical �Write Once, Run Everywhere� vision,
  and last but not least with its the massive support by industry and individual 
engineers,
  has developed into a prime OO-platform for the �middle tier�. Much recently,
  Open-Source projects, such as <a href="http://www.enhydra.org/">Enhydra</a>, <a
  href="http://www.objectweb.org/">Jonas</a>, and <a 
href="http://www.jboss.org/">jBoss</a>,
  have entered the EJB�-market and are likely to broaden the technological vision
  in the middle-term perspective. In <a href="#jboss">Section 2</a>, we will
  discuss some of the leading concepts behind the jBoss application server.<span
  style="mso-spacerun: yes">��� </span><o:p></o:p></span></p>
  
  <p style='margin-left:35.4pt'><span lang=EN-US style='mso-ansi-language:EN-US'>A
  parallel thread of R&amp;D in that area is dedicated to <i>Component-Based
  Software Engineering </i>(CBSE) <a href="migration.htm#migration">[9]</a>. The
  basic critique that is uttered against the interface-based <i>COM</i>- or 
<i>CORBA</i>-based
  middleware of current TPM�s is that they do not allow a loose coupling of
  individual pieces of software, hindering the plug-and-play of business
  components in the long run. For this purpose, failure- and versioning-tolerant
  interaction mechanisms are pushed forwared. <i><a 
href="http://www.mom.org/">Message-Oriented
  Middleware</a></i> (MoM) with its flexible and asynchronous publish/subscribe
  model has been rediscovered as a suitable transport and brought up a new
  generation of products, such as <i><a
  href="http://www.microsoft.com/products/msmq">Microsoft Message Queue</a> </i>(MSMQ),
  the <i><a href="http://java.sun.com/products/jms">Java Messaging Service</a></i>
  (JMS), andthelike. <o:p></o:p></span></p>
  
  <p style='margin-left:35.4pt'><span lang=EN-US 
style='mso-ansi-language:EN-US'>Furthermore,
  the incredible momentum that the <i><a href="http://www.xml.org/">eXtensible
  Markup Language</a></i> (XML) has reached much recently and that let people
  even rethink the future of <a href="http://www.w3c.org/">(X)HTML</a> can be
  traced back to the question of finding a suitable exchange format between
  application components. The upcoming <i><a href="http://www.soap.org/">Simple
  Object Access Protocol</a></i> (SOAP) combines asynchronous HTTP-based
  messaging with an XML-based data-binding and is backed by, e.g., <a
  href="http://www.microsoft.com/">Microsoft</a> and <a 
href="http://www.ibm.com/">IBM</a>.
  By relying on open standards, it has the potential to define the first real
  cross-platform interoperability infrastructure. We will discuss some of the
  SOAP details in Section 3.<o:p></o:p></span></p>
  
  <p style='margin-left:35.4pt'><span lang=EN-US 
style='mso-ansi-language:EN-US'>Initially,
  these two approaches seem not quite compatible being either focussed on
  strongly-typed compile-time analysis versus weakly-tagged runtime analysis.
  Indeed, they are however rather complementary giving us combinedly the means to
  a) safely and comfortably develop application logic in an object-oriented
  manner and to b) flexibly and transparently deploy this logic within a
  loosely-coupled framework. With the example of jBoss and SOAP, we will scetch a
  possible integrative architecture in Section 4 and its prototypical
  implementation in Section 5 (The Zero-Effort Object Access Package � ZOAP) that
  is currently implemented in a R&amp;D initiative of <a
  href="http://www.infor.de/">infor:business solutions AG</a>.<span
  style="mso-spacerun: yes">� </span>The goal of this initiative is the
  development of a state-of-the-art runtime environment for <i>Enterprise
  Resource-Planning</i> (ERP). Preliminary results have been already described in
  separate technical white papers <a href="migration.htm#migration">[1]</a>, <a
  href="#paper10">[10]</a>.<o:p></o:p></span></p>
  
  <h2><a name=OOP></a><a name=jboss><span style='mso-bookmark:OOP'><span
  lang=EN-US style='mso-ansi-language:EN-US;font-weight:normal'>2. 
</span></span></a><span
  style='mso-bookmark:jboss'><span lang=EN-US style='mso-ansi-language:EN-US;
  font-weight:normal'>jBoss: An Open Source EJB-Server <o:p></o:p></span></span></h2>
  
  <span style='mso-bookmark:jboss'></span>
  
  <h3 style='margin-left:35.4pt'><span lang=EN-US style='mso-ansi-language:EN-US'>2.1
  Ingredients of EJB�<o:p></o:p></span></h3>
  
  <p style='margin-left:36.0pt;text-indent:-.6pt'><span lang=EN-US
  style='mso-ansi-language:EN-US'>EJB�, rather than being a conrete product,
  appears to be a standardised specification and logical architecture (<a
  href="#cake">Figure 1</a>) for multi-tiered, object-oriented applications that
  has been defined by an industrial consortium under the leadership of <a
  href="http://www.sun.com/">Sun Microsystems Ltd.</a> (SUN), also the inventors
  of the Java� language.<span style="mso-spacerun: yes">� </span>Each application
  in the EJB sense consists of a set of<span style="mso-spacerun: yes">� 
</span><i>entity
  beans</i>, such as of class </span><tt><span lang=EN-US style='font-size:10.0pt;
  font-family:"Courier New";mso-ansi-language:EN-US'>BusinessPartner</span></tt><span
  lang=EN-US style='mso-ansi-language:EN-US'> or </span><tt><span lang=EN-US
  style='font-size:10.0pt;font-family:"Courier 
New";mso-ansi-language:EN-US'>PurchaseOrder</span></tt><span
  lang=EN-US style='mso-ansi-language:EN-US'>,<span style="mso-spacerun: yes">�
  </span>that are the actual subjects or data of the application. The
  manipulation of entitiy beans and hence the provision of business methods is
  the task of so-called <i>session beans</i>, such as a </span><tt><span
  lang=EN-US style='font-size:10.0pt;font-family:"Courier New";mso-ansi-language:
  EN-US'>DocumentAdministrator</span></tt><span lang=EN-US style='mso-ansi-language:
  EN-US'> that manages related documents of type </span><tt><span lang=EN-US
  style='font-size:10.0pt;font-family:"Courier 
New";mso-ansi-language:EN-US'>RequestForProposal</span></tt><span
  lang=EN-US style='mso-ansi-language:EN-US'>, </span><tt><span lang=EN-US
  style='font-size:10.0pt;font-family:"Courier 
New";mso-ansi-language:EN-US'>Proposal</span></tt><span
  lang=EN-US style='mso-ansi-language:EN-US'>, or </span><tt><span lang=EN-US
  style='font-size:10.0pt;font-family:"Courier 
New";mso-ansi-language:EN-US'>Quote</span></tt><span
  lang=EN-US style='mso-ansi-language:EN-US'>. For example, the </span><tt><span
  lang=EN-US style='font-size:10.0pt;font-family:"Courier New";mso-ansi-language:
  EN-US'>DocumentAdministrator</span></tt><span lang=EN-US style='mso-ansi-language:
  EN-US'> could have a method </span><tt><span lang=EN-US style='font-size:10.0pt;
  font-family:"Courier New";mso-ansi-language:EN-US'>createPurchaseOrder(Quote
  quote)</span></tt><span lang=EN-US style='mso-ansi-language:EN-US'> that
  creates a new </span><tt><span lang=EN-US style='font-size:10.0pt;font-family:
  "Courier New";mso-ansi-language:EN-US'>PurchaseOrder</span></tt><span
  lang=EN-US style='mso-ansi-language:EN-US'> in the system as a reaction to an
  incoming </span><tt><span lang=EN-US style='font-size:10.0pt;font-family:"Courier 
New";
  mso-ansi-language:EN-US'>Quote</span></tt><span lang=EN-US style='mso-ansi-language:
  EN-US'> given by a particular </span><tt><span lang=EN-US style='font-size:
  10.0pt;font-family:"Courier New";mso-ansi-language:EN-US'>Vendor</span></tt><span
  lang=EN-US style='mso-ansi-language:EN-US'> business partner <a
  href="#footnote1">*</a>. <o:p></o:p></span></p>
  
  <p align=center style='margin-left:35.45pt;text-align:center'><span lang=EN-US
  style='mso-ansi-language:EN-US'><!--[if gte vml 1]><v:shapetype id="_x0000_t75"
   coordsize="21600,21600" o:spt="75" o:preferrelative="t" 
path="m@4@5l@4@11@9@11@9@5xe"
   filled="f" stroked="f">
   <v:stroke joinstyle="miter"/>
   <v:formulas>
    <v:f eqn="if lineDrawn pixelLineWidth 0"/>
    <v:f eqn="sum @0 1 0"/>
    <v:f eqn="sum 0 0 @1"/>
    <v:f eqn="prod @2 1 2"/>
    <v:f eqn="prod @3 21600 pixelWidth"/>
    <v:f eqn="prod @3 21600 pixelHeight"/>
    <v:f eqn="sum @0 0 1"/>
    <v:f eqn="prod @6 1 2"/>
    <v:f eqn="prod @7 21600 pixelWidth"/>
    <v:f eqn="sum @8 21600 0"/>
    <v:f eqn="prod @7 21600 pixelHeight"/>
    <v:f eqn="sum @10 21600 0"/>
   </v:formulas>
   <v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>
   <o:lock v:ext="edit" aspectratio="t"/>
  </v:shapetype><v:shape id="_x0000_i1027" type="#_x0000_t75" style='width:453.75pt;
   height:331.5pt'>
   <v:imagedata src="./soapjBoss-Dateien/image001.gif" o:title="ejb"/>
  </v:shape><![endif]--><![if !vml]><img border=0 width=605 height=442
  src="./soapjBoss-Dateien/image002.gif" 
v:shapes="_x0000_i1027"><![endif]><o:p></o:p></span></p>
  
  <p align=center 
style='margin-left:36.0pt;text-align:center;text-indent:-.6pt'><b><span
  lang=EN-US style='font-size:14.0pt;mso-bidi-font-size:12.0pt;mso-ansi-language:
  EN-US'>Figure 1: Logical Architecture of EJB�</span></b><span lang=EN-US
  style='mso-ansi-language:EN-US'><o:p></o:p></span></p>
  
  <p style='margin-left:36.0pt;text-indent:-.6pt'><span lang=EN-US
  style='mso-ansi-language:EN-US'>Shipped with the proper object-oriented
  application logic are so-called <i>deployment descriptors</i>, which are
  meta-data that describe the envisaged transactional, persistence, security and
  distribution behaviour of the embedded beans. This seperation into operational
  and declarative parts of business logic has been demonstrated to incredibly
  speed up the development process and has been overtaken as a particular
  contribution of<span style="mso-spacerun: yes">� </span>the <i>Microsoft
  Transaction Server</i> (MTS) and other <i>Transaction Processing Monitors</i>
  (TPM�s). <o:p></o:p></span></p>
  
  <p style='margin-left:36.0pt;text-indent:-.6pt'><span lang=EN-US
  style='mso-ansi-language:EN-US'>A full-fledged EJB� runtime environment, also
  called EJB� application server, is now an extension to the Java� language
  platform that is able to run the such packed EJB� applications by connecting
  them to implementations of basic services, such as a data-access service to
  contact an enterprise database, a transaction service to run distributes
  transactions and an <i>Object Request Broker</i> (ORB) to cater for the
  distribution of the applications. For that purpose, the EJB� specification
  introduces another construct called the <i>container </i>that is an intercepting
  wrapper around the deployed enterprise beans and that serves to transparently
  contact and integrate the basic services behind the �application scenes�.<span
  style="mso-spacerun: yes">� </span><o:p></o:p></span></p>
  
  <h3 style='margin-left:35.4pt'><span lang=EN-US style='mso-ansi-language:EN-US'>2.2
  The jBoss Container Architecture<o:p></o:p></span></h3>
  
  <p style='margin-left:36.0pt;text-indent:-.6pt'><span lang=EN-US
  style='mso-ansi-language:EN-US'>As for the implementation of the basic services
  and the container, each final EJB� product has to make its own choices,
  providing different strengths and weaknesses with respect to different
  application areas. The non-commercial <a href="http://www.j2ee.com/">reference
  implementation from Sun</a>, for example, provides a means for testing the
  specification compliance of deployed beans. For example, <a
  href="http://www.persistence.com/">Persistence Powertier�</a>, has been
  designed with respect to stateful data-intensive applications, while <a
  href="http://www.bea.com/">BEA�s Weblogic suite</a>, on the other hand, is
  clearly targetted towards stateless, highly-scalable multi-user environments
  that have to integrate with legacy code. <o:p></o:p></span></p>
  
  <p style='margin-left:36.0pt;text-indent:-.6pt'><span lang=EN-US
  style='mso-ansi-language:EN-US'>Hence, the EJB� approach opens up a broad
  market where every customer can find the �ideal� server, but is nevertheless
  given the possiblity to change the implementation platform withouth having to
  change its application logic � a clear competition advantage. Yet, this promise
  has however not fully come true, since for optimisation purposes, for example,
  when running batches over enterprise databases of considerable size, one is
  still forced to use proprietary extensions of the vendors which makes the
  deployability in other servers impossible or at least very difficult. 
<o:p></o:p></span></p>
  
  <p style='margin-left:36.0pt;text-indent:-.6pt'><span lang=EN-US
  style='mso-ansi-language:EN-US'>Furthermore, we could think about areas, such
  as in building internet-aware <i>Enterprise Resource Planning</i> (ERP), in
  which the EJB� �customer� is itself an <i>Independent Software Vendor</i> (ISV)
  that needs to extend the basic services of the server in order to fit its
  needs, for example, to integrate with the latest e-commerce interoperability
  standard (and these are quite frequently changing in these days �). Opening up
  the container structure for third-parties is of course not in the vital
  interest of EJB� vendors.<o:p></o:p></span></p>
  
  <p style='margin-left:36.0pt;text-indent:-.6pt'><span lang=EN-US
  style='mso-ansi-language:EN-US'>This is what brought us into looking at the <i>Open
  Source Community </i>for EJB�-related products, where implementations of ORB�s,
  data-access tiers, and other central parts of enterprise applications have been
  already around for a couple of years. The advantage of choosing such a
  development model for an ISV is that the runtime environment code is maintained
  and shared by a large community of industry and motivated developers and that
  it<span style="mso-spacerun: yes">� </span>is open to necessary adaptions and
  extensions. On the other hand, the �capital� which is the application logic and
  its deployment information, still remains the non-disclosed property of the
  ISV. Due to the declarative approach of EJB�, such a clean seperation in
  licensing different parts of the system (GNU public license versus a commercial
  license) is encouraged. <o:p></o:p></span></p>
  
  <p style='margin-left:36.0pt;text-indent:-.6pt'><span lang=EN-US
  style='mso-ansi-language:EN-US'>Much recently, we find the first functional
  open-source TPM�s and application servers. <a 
href="http://www.enhydra.org/">Enhydra</a>
  from <a href="http://www.lutris.com/">Lutris</a>, for example, is currently a
  very advanced platform for e-commerce type of applications. It merged in 1999
  with the <a href="http://www.objectweb.org/">Jonas</a> effort of <a
  href="http://www.bull.com/">Bull</a> and <a 
href="http://www.france-telecom.fr/">France
  Telecom</a> to provide a ful-fledged EJB1.1 compliant server. While these
  projects did already start in 1998 and earlier, <a 
href="http://www.jboss.org/">jBoss</a>
  is a relatively young initiative mainly sponsored by <a
  href="http://www.telkel.com/">Telkel</a> that aims to build a
  technologically-revolutionary container making full usage of the Java2 platform
  (<a href="#container">Figure 2</a>).<o:p></o:p></span></p>
  
  <p style='margin-left:36.0pt;text-indent:-.6pt'><span lang=EN-US
  style='mso-ansi-language:EN-US'><![if 
!supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></span></p>
  
  <p align=center style='margin-left:53.4pt;text-align:center'><a name=container><span
  lang=EN-US style='mso-ansi-language:EN-US'><!--[if gte vml 1]><v:shape 
id="_x0000_i1028"
   type="#_x0000_t75" style='width:453.75pt;height:268.5pt'>
   <v:imagedata src="./soapjBoss-Dateien/image003.gif" o:title="jBoss"/>
  </v:shape><![endif]--><![if !vml]><img border=0 width=605 height=358
  src="./soapjBoss-Dateien/image004.gif" 
v:shapes="_x0000_i1028"><![endif]><o:p></o:p></span></a></p>
  
  <p align=center style='margin-left:36.0pt;text-align:center;text-indent:-.6pt'><span
  style='mso-bookmark:container'><strong><span lang=EN-US style='font-size:14.0pt;
  mso-bidi-font-size:12.0pt;mso-ansi-language:EN-US'>Figure 2: Modular Container
  Architecture of jBoss</span></strong></span><strong><span lang=EN-US
  
style='font-size:14.0pt;mso-bidi-font-size:12.0pt;mso-ansi-language:EN-US'><o:p></o:p></span></strong></p>
  
  <p style='margin-left:36.0pt;text-indent:-.6pt'><span lang=EN-US
  style='mso-ansi-language:EN-US'>The fundamental contribution of jBoss, besides
  a plethora of useful new features, such as hot-deploy and <i>Java Management
  eXtension</i>-compliance, is to modularize the container into a configurable
  set of interceptors, each of which is responsible for contacting and managing a
  different basic service integrated into the runtime. For example, there is an
  invoker-interceptor that receives incoming method-calls over the middleware
  (currently: Java�s built-in <i>Remote-Method-Invocation</i> over the <i>Java
  Remote Method Protocol</i>) and derserialises data into Java objects. There
  follows a security interceptor based on the <i>Java Authentication and
  Authorization Service </i>that sets and checks permissions of the incoming
  thread. jBoss provides a transaction interceptor that analyses and manages
  transactional behaviour followed by a persistence interceptor (for entity
  beans) that interfaces an underlying SQL database via a particular persistence
  service (JAWS/Minerva) and JDBC-connectivity.<o:p></o:p></span></p>
  
  <p style='margin-left:36.0pt;text-indent:-.6pt'><span lang=EN-US
  style='mso-ansi-language:EN-US'>This chain of interceptors (implemented as
  transparent and compilation-less Java2 proxies) is now extremely configurable,
  the actual container just being the management unit that connects them to each
  other and that provides the meta-data for the application in a central manner.
  Particular interceptors can be extended, replaced, removed or added, depending
  on the actual needs of the final application. This is the key to easily
  integrate, for example, different middleware paradigms into the EJB� platform �
  something which is highly difficult and opaque for the application in almost
  all other EJB� servers, today. <o:p></o:p></span></p>
  
  <h2 style='text-align:justify'><a name=inforCE><span lang=EN-US
  style='mso-ansi-language:EN-US;font-weight:normal'>3. </span></a><span
  lang=EN-US style='mso-ansi-language:EN-US;font-weight:normal'>SOAP: The Simple
  Object Access Protocol<o:p></o:p></span></h2>
  
  <p style='margin-left:36.0pt;text-indent:-.6pt'><span lang=EN-US
  style='mso-ansi-language:EN-US'>There is exactly one place where the TPM/EJB�
  concept currently falls short which is the possiblity of letting different
  EJB-applications (we rather say component to such a self-contained structure)
  depoyed in heterogeneous and globally networked enteprise systems talk to each
  other. This is necessary if we think of the increasing level of global
  interoperability, for example in future supply-chain management. This is also
  necessary if we plan to break up formerly monolithic systems, such as an ERP
  system into more easily maintainable and upgradable sub-components.<span
  style="mso-spacerun: yes">� </span><o:p></o:p></span></p>
  
  <p style='margin-left:36.0pt;text-indent:-.6pt'><span lang=EN-US
  style='mso-ansi-language:EN-US'>The problem that is posed, then, is the style
  of distributed object access inherent in the �traditional� concepts of
  COM/CORBA/RMI. In both COM and CORBA, remote calls are usually handled
  synchronously to retain a transparent programming semantics. When we think of
  systems comprised out of several hundreds of enterprise components,<span
  style="mso-spacerun: yes">� </span>this amounts to either a resource-consuming
  amount of point-to-point connections or requires a sophisticated, and hence
  potentially instable connection management builtin to the systems. Furthermore,
  in both COM and CORBA, remote object access is done via publishing interfaces
  and precompiled data-structures to be shared by the interacting components.
  When incrementally changing the data-structures and interfaces in one
  component, this often requires to recompile dependent parts, e.g., <i>remote
  stubs, value holders, and helpers</i>, in other components as well. This will
  be no more possible in up-scaled global systems of the future. Even dynamic
  class loading is not a real solution to that problem since it relies on
  proprietary runtime environments and it lacks the safety of<span
  style="mso-spacerun: yes">� </span>precompiled information. Hence, a
  self-contained component should be shipped with all the classes that it must
  interact with at runtime.<o:p></o:p></span></p>
  
  <p style='margin-left:35.4pt'><span lang=EN-US style='mso-ansi-language:EN-US'>The
  <i><a href="http://www.w3c.org/">eXtensible Markup Language</a></i> (XML) that
  is brought forward by the W3C consortium as <b>the </b>next standard underlying
  even (X)HTML, promises to remedy this issue. This is because XML provides a
  uniform and failure-tolerant method for describing and exchanging structured
  data. Initiatives, such as <a href="http://www.bizztalk.com/">Bizztalk</a>,
  have already adopted XML as the basis to translate between heterogenous
  business applications. For distributed business components to connect to each
  other seamlessly, asynchronously, and probably through existing firewall
  structures, XML is also proposed as the encoding language within the standard,
  lightweight HTTP and SMTP transport protocols to comprise the <i><a
  href="http://msdn.microsoft.com/xml/general/">Simple Object Access Protocol</a></i>,
  shortly SOAP. Both XML as well as HTTP and SMTP are in the meantime a
  convention that is equally shared by both the Java� and the COM-world. Hence,
  SOAP has the potential to define the first practical interoperability device
  between these two worlds. <o:p></o:p></span></p>
  
  <p style='margin-left:35.4pt'><span lang=EN-US style='mso-ansi-language:EN-US'>In
  <a href="#soap">Figure 3</a>, we have scetched an example SOAP message embedded
  into an http-request which is taken from the SOAP 1.1 specification. We
  recognize that it uses a quite simple POST-method to carry the actual payload,
  which is a properly tagged XML-Document, from the client to the server. The URI
  and a part of the http-header specify the dedicated server service more
  precisely. In the shipped XML-document, the special namespace �SOAP� with its
  attached Xml-Schema definition under �urn:schemas-xmlsoap-org:soap.v1�
  decribes, how the body of the Soap-Request must be structured.<span
  style="mso-spacerun: yes">� </span>For example, it always needs a so-called
  envelope around the actual content of the message which is interpreted as a
  method-call (getLastTradePrice(�DIS�)) on some target object (bound to the URL
  /StockQuote in this example). </span><tt><span lang=EN-US style='font-size:
  10.0pt;font-family:"Courier New";mso-ansi-language:EN-US'><o:p></o:p></span></tt></p>
  
  <p style='margin-left:36.0pt;text-indent:-.6pt'><a name=soap><tt><span
  lang=EN-US style='font-size:10.0pt;font-family:"Courier New";mso-ansi-language:
  EN-US'>POST /StockQuote HTTP/1.1<o:p></o:p></span></tt></a></p>
  
  <p style='margin-left:36.0pt;text-indent:-.6pt'><span 
style='mso-bookmark:soap'><tt><span
  lang=EN-US style='font-size:10.0pt;font-family:"Courier New";mso-ansi-language:
  EN-US'>Host: www.stockquoteserver.com<o:p></o:p></span></tt></span></p>
  
  <p style='margin-left:36.0pt;text-indent:-.6pt'><span 
style='mso-bookmark:soap'><tt><span
  lang=EN-US style='font-size:10.0pt;font-family:"Courier New";mso-ansi-language:
  EN-US'>Content-Type: text/xml<o:p></o:p></span></tt></span></p>
  
  <p style='margin-left:36.0pt;text-indent:-.6pt'><span 
style='mso-bookmark:soap'><tt><span
  lang=EN-US style='font-size:10.0pt;font-family:"Courier New";mso-ansi-language:
  EN-US'>Content-Length: nnnn<o:p></o:p></span></tt></span></p>
  
  <p style='margin-left:36.0pt;text-indent:-.6pt'><span 
style='mso-bookmark:soap'><tt><span
  lang=EN-US style='font-size:10.0pt;font-family:"Courier New";mso-ansi-language:
  EN-US'>SOAPMethodName: 
Some-Namespace-URI#GetLastTradePrice<o:p></o:p></span></tt></span></p>
  
  <p><span style='mso-bookmark:soap'><tt><span lang=EN-US style='font-size:10.0pt;
  font-family:"Courier New";mso-ansi-language:EN-US'><![if 
!supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></span></tt></span></p>
  
  <p style='margin-left:36.0pt;text-indent:-.6pt'><span 
style='mso-bookmark:soap'><tt><span
  lang=EN-US style='font-size:10.0pt;font-family:"Courier New";mso-ansi-language:
  EN-US'>&lt;SOAP:Envelope
  
xmlns:SOAP=&quot;urn:schemas-xmlsoap-org:soap.v1&quot;&gt;<o:p></o:p></span></tt></span></p>
  
  <p style='margin-left:36.0pt;text-indent:-.6pt'><span 
style='mso-bookmark:soap'><tt><span
  lang=EN-US style='font-size:10.0pt;font-family:"Courier New";mso-ansi-language:
  EN-US'><span style="mso-spacerun: yes">��� 
</span>&lt;SOAP:Body&gt;<o:p></o:p></span></tt></span></p>
  
  <p style='margin-left:36.0pt;text-indent:-.6pt'><span 
style='mso-bookmark:soap'><tt><span
  lang=EN-US style='font-size:10.0pt;font-family:"Courier New";mso-ansi-language:
  EN-US'><span style="mso-spacerun: yes">������� </span>&lt;m:GetLastTradePrice 
<o:p></o:p></span></tt></span></p>
  
  <p style='margin-left:36.0pt;text-indent:-.6pt'><span 
style='mso-bookmark:soap'><tt><span
  lang=EN-US style='font-size:10.0pt;font-family:"Courier New";mso-ansi-language:
  EN-US'><span style="mso-spacerun: yes">����������� 
</span>xmlns:m=&quot;Some-Namespace-URI&quot;&gt;<o:p></o:p></span></tt></span></p>
  
  <p style='margin-left:36.0pt;text-indent:-.6pt'><span 
style='mso-bookmark:soap'><tt><span
  lang=EN-US style='font-size:10.0pt;font-family:"Courier New";mso-ansi-language:
  EN-US'><span style="mso-spacerun: yes">��������������� 
</span></span></tt></span><span
  style='mso-bookmark:soap'><tt><span lang=FR style='font-size:10.0pt;font-family:
  "Courier 
New";mso-ansi-language:FR'>&lt;symbol&gt;DIS&lt;/symbol&gt;<o:p></o:p></span></tt></span></p>
  
  <p style='margin-left:36.0pt;text-indent:-.6pt'><span 
style='mso-bookmark:soap'><tt><span
  lang=FR style='font-size:10.0pt;font-family:"Courier New";mso-ansi-language:
  FR'><span style="mso-spacerun: yes">������� </span></span></tt></span><span
  style='mso-bookmark:soap'><tt><span lang=EN-US style='font-size:10.0pt;
  font-family:"Courier 
New";mso-ansi-language:EN-US'>&lt;/m:GetLastTradePrice&gt;<o:p></o:p></span></tt></span></p>
  
  <p style='margin-left:36.0pt;text-indent:-.6pt'><span 
style='mso-bookmark:soap'><tt><span
  lang=EN-US style='font-size:10.0pt;font-family:"Courier New";mso-ansi-language:
  EN-US'><span style="mso-spacerun: yes">��� 
</span>&lt;/SOAP:Body&gt;<o:p></o:p></span></tt></span></p>
  
  <p style='margin-left:36.0pt;text-indent:-.6pt'><span 
style='mso-bookmark:soap'><tt><span
  lang=EN-US style='font-size:10.0pt;font-family:"Courier New";mso-ansi-language:
  EN-US'>&lt;/SOAP:Envelope&gt;</span></tt></span><span style='mso-bookmark:soap'><span
  lang=EN-US style='mso-ansi-language:EN-US'><o:p></o:p></span></span></p>
  
  <p align=center style='margin-left:36.0pt;text-align:center;text-indent:-.6pt'><span
  style='mso-bookmark:soap'><b><span lang=EN-US style='mso-ansi-language:EN-US'>Figure
  3: Soap-Message via http-request<o:p></o:p></span></b></span></p>
  
  <span style='mso-bookmark:soap'></span>
  
  <p style='margin-left:36.0pt;text-indent:-.6pt'><span lang=EN-US
  style='mso-ansi-language:EN-US'>We see that SOAP is quite neutral with respect
  to the underlying transport since textual XML representations can be loaded
  into nearly all IP-based transports we can think of. We also see that SOAP is
  quite neutral with respect to the underlying object model and programming
  platform, since the way in which the content is processed is not determined at
  all. For example, a Java�-based recipient could deserialize the given call into
  a proper method call by binding a string �DIS� to the embedded &lt;symbol/&gt;
  tag. We could also imagine some other service that immediately processes the
  XML structure without taking an object-oriented stance at all.<o:p></o:p></span></p>
  
  <p style='margin-left:35.4pt'><span lang=EN-US style='mso-ansi-language:EN-US'>SOAP
  is also quite neutral with respect to synchronicity. It is possible for the
  server to send the result of the method call as an ordinary SOAP message in the
  corresponding http-response. It is also possible that the presented request is
  queued, persisted, routed, and later executed on a different machine such that
  the response (including faults, etc.) is send with a delay<span
  style="mso-spacerun: yes">� </span>to an SMTP or HTTP server on which the
  original sender of the method call listens.<span style="mso-spacerun: yes">�
  </span><o:p></o:p></span></p>
  
  <p style='margin-left:35.4pt'><span lang=EN-US style='mso-ansi-language:EN-US'>And
  SOAP is currently supported by industry coming both from the MS-world, i.e,
  Microsoft themselves, and the Java�-world � IBM has recently commited its
  e-business activities tightly to this platform. Hence, the first reference
  implementations of the latest 1.1 standard are already available as
  COM-components or Java implementations, alternatively.<o:p></o:p></span></p>
  
  <p style='margin-left:35.4pt'><span lang=EN-US style='mso-ansi-language:EN-US'>From
  these considerations, it becomes clear that it would be highly desirable to
  integrate such a simple, but powerful object access mechanism to the Enterprise
  Java-Beans� platform as well, opening up the OO-centered application logic to
  global Internet services. <o:p></o:p></span></p>
  
  <h2><a name=realisation><span lang=EN-US style='mso-ansi-language:EN-US;
  font-weight:normal'>4</span></a><a name=technicalCoupling><span
  style='mso-bookmark:realisation'><span lang=EN-US style='mso-ansi-language:
  EN-US;font-weight:normal'>. </span></span></a><span 
style='mso-bookmark:realisation'><span
  lang=EN-US style='mso-ansi-language:EN-US;font-weight:normal'>An Integration of
  SOAP with EJB� </span></span><span lang=EN-US style='mso-ansi-language:EN-US;
  font-weight:normal'><o:p></o:p></span></h2>
  
  <p style='margin-left:35.4pt'>Due to the modular and open structure of jBoss,
  an initial support for SOAP is architecturally straightforward. Similar to the
  already existing or planned invoker-interceptors for JRMP1.1, JRMP1.2, or
  IIOP2.3, we could imagine an alternative SOAP-invoker (Figure 4) sitting as the
  first interceptor in the jBoss container�s chain of responsibility. In Figure
  4, we have even scetched the in-principle possiblity of having several parallel
  interceptor chains leading to the same bean and<span style="mso-spacerun:
  yes">� </span>allowing for simultanous access via different interoperability
  protocols. SOAP-invokers are registered in a dedicated HTTP-Server that is started
  as a separate jBoss-service (mlet) in the application server. When registering,
  the invokers obtain a unique extension path to the root-URL of the HTTP-Server.
  For example, if the bean�s home is normally available under the JNDI name
  �test/TestBean�, we make it available under SOAP with the URL <tt><span
  style='mso-ansi-font-size:12.0pt;mso-bidi-font-size:12.0pt;mso-ascii-font-family:
  "Times New Roman";mso-fareast-font-family:"Times New Roman";mso-hansi-font-family:
  "Times New Roman";mso-bidi-font-family:"Times New Roman"'><a
  href="http://localhost:2121/test/TestBean/">http://localhost:2121/test/TestBean/</a>.
  </span></tt><tt><span style='font-size:10.0pt;font-family:"Courier 
New"'><o:p></o:p></span></tt></p>
  
  <p align=center style='margin-left:36.0pt;text-align:center;text-indent:-.6pt'><span
  lang=EN-US style='mso-ansi-language:EN-US'><![if 
!supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></span></p>
  
  <p class=MsoCaption><span lang=EN-US><!--[if gte vml 1]><v:shape id="_x0000_i1029"
   type="#_x0000_t75" style='width:453.75pt;height:319.5pt'>
   <v:imagedata src="./soapjBoss-Dateien/image005.gif" o:title="soapInterceptor"/>
  </v:shape><![endif]--><![if !vml]><img border=0 width=605 height=426
  src="./soapjBoss-Dateien/image006.gif" v:shapes="_x0000_i1029"><![endif]></span></p>
  
  <p class=MsoCaption><span lang=EN-US><![if 
!supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></span></p>
  
  <p class=MsoCaption><span lang=EN-US>Figure 4: SOAP Interceptors for Providing
  SOAP Services</span></p>
  
  <p class=MsoBodyTextIndent><span lang=EN-US><![if 
!supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></span></p>
  
  <p style='margin-left:35.4pt'>Stateless access via SOAP now goes the following
  route: The client (which may be a transparent SOAP-proxy that allows seemless
  remote access via remote interfaces, see below) sends a SOAP-enabled
  HTTP-Request to the HTTP-Server using the identifying URL as above. The server
  then routes this request (still unparsed) to the registered invoker under the
  relative path. The invoker is now responsible for deserialising the
  SOAP-envelope and its contents into a proper Java-method-call using a
  bean-specific databinding which is planned to be specified via an extende 
EJB/jBoss-meta-data
  annotation in the future. The deserialised method call is then fed into the
  interceptor chain as an ordinary bean-method call for further processing (for
  SOAP, we think that we do not need any of the home-interface methods for the
  time being). </p>
  
  <p style='margin-left:35.4pt'><![if 
!supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>
  
  <p style='margin-left:35.4pt'>Similarly, the result of the method execution
  which could also be application and app-server exceptions raised is again
  intercepted by the invoker that derialises them into a proper SOAP-envelope
  using its bean-attached databinding. In a first, synchronous implementation,
  this envelope would be put into an http-response that is handed to the
  HTTP-Server and returned to the blocked client thread. What we already gain is
  that the client and the server data structures are completely decoupled from
  each other � e.g., a Java-Client could use different versions of the data
  classes than the ones that are present in the application beans where the
  individual databindings have a common denominator that allows a tolerant and
  useful exchange. </p>
  
  <p style='margin-left:35.4pt'><![if 
!supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>
  
  <p style='margin-left:35.4pt'>In a more advanced asynchronous setting, we would
  send this envelope in a separate message, e.g., via SMTP, to the original
  sender of the method call. <span lang=EN-US style='mso-ansi-language:EN-US'>For
  this purpose, the sender could identify itself in the message with a unique
  URI. The directory- or rather home-based URI�s that we have just presented are
  not yet enough for such a unique identification that is also needed if we like
  to access stateful beans, such as stateful session beans and entity beans. Fror
  this purpose, we woul like to introduce a mechanism that maps string-based
  file-handles, e.g., <a
  
href="http://localhost:2121/test/TestBusinessService/0815">http://localhost:2121/test/TestBusinessService/0815</a>,
  into a uniqu EJB-handle or hash key that points to a single bean or object
  instance in the VM. We preliminary resolve the important question of
  Distributed Garbage Collection by persistent http-connections that, when close,
  release all attached stateful bean instances. However, this is not yet fully
  worked out and we rely on our experiences with a first implementation that is
  currently under development.<o:p></o:p></span></p>
  
  <p align=center style='margin-left:36.0pt;text-align:center;text-indent:-.6pt'><span
  lang=EN-US style='mso-ansi-language:EN-US'><!--[if gte vml 1]><v:shape 
id="_x0000_i1030"
   type="#_x0000_t75" style='width:453pt;height:401.25pt'>
   <v:imagedata src="./soapjBoss-Dateien/image007.gif" o:title="soapProxy"/>
  </v:shape><![endif]--><![if !vml]><img border=0 width=604 height=535
  src="./soapjBoss-Dateien/image008.gif" 
v:shapes="_x0000_i1030"><![endif]><o:p></o:p></span></p>
  
  <p align=center 
style='margin-left:36.0pt;text-align:center;text-indent:-.6pt'><b><span
  lang=EN-US style='font-size:14.0pt;mso-bidi-font-size:12.0pt;mso-ansi-language:
  EN-US'>Figure 5: SOAP-Proxies for Accessing SOAP Services<o:p></o:p></span></b></p>
  
  <p style='margin-left:35.4pt'><tt><span style='mso-ansi-font-size:12.0pt;
  mso-bidi-font-size:12.0pt;mso-ascii-font-family:"Times New 
Roman";mso-fareast-font-family:
  "Times New Roman";mso-hansi-font-family:"Times New Roman";mso-bidi-font-family:
  "Times New Roman"'>To allow for loosely-coupled inter-bean operations and a 
transparent
  Java-client access, we would like to propose a SOAP-proxy structure (Figure 5).
  That is an implementation of the java.lang.reflect.InvocationHandler interface
  which allows to hide a generic framework behind application or rather remote
  interfaces at runtime. The application or the client will then be presented an
  object that behaves as if it was an ordinary object implementing that
  interface, but indeed, method calls are invoking a dedicated generic method on
  the invocation handler that serialises them into SOAP envelopes (inversely<span
  style="mso-spacerun: yes">� </span>to the invoker above) and sends them via
  HTTP or SMTP. Upon reception of a response (maybe by an integrated
  HTTP-Server), the return value is deserialised and given back as the result of
  the method call (or raised as an exception if it was a fault message). Since a
  SOAP-proxy is tight to a given URL, it can be easily (de-)serialised via IIOP
  and also via XML/SOAP, again.</span></tt></p>
  
  <h2><span lang=EN-US style='mso-ansi-language:EN-US'>5. The ZOAP 
project<o:p></o:p></span></h2>
  
  <p style='margin-left:35.4pt'><tt><span style='mso-ansi-font-size:12.0pt;
  mso-bidi-font-size:12.0pt;mso-ascii-font-family:"Times New 
Roman";mso-fareast-font-family:
  "Times New Roman";mso-hansi-font-family:"Times New Roman";mso-bidi-font-family:
  "Times New Roman"'>The Zero-Effort Object Access Package (ZOAP) is a
  prototypical implementation of SOAP for EJB� that integrates with jBoss. It
  comes with two sub-packages which are infor:X (the infor:business solutions AG
  XML databinding service) and jHTTP (a lightweight abstract HTTP-Server
  implementation that can be used to implement various http-based transfer
  mechanisms for files, XML-documents, etc.). On top of those, ZOAP provides Java
  abstractions for SOAP messages, SOAP-enabled services and proxies, and, in
  particular, an implementation of SOAP-over-HTTP. </span></tt><tt><span
  lang=EN-US style='mso-ansi-font-size:12.0pt;mso-bidi-font-size:12.0pt;
  mso-ascii-font-family:"Times New Roman";mso-fareast-font-family:"Times New Roman";
  mso-hansi-font-family:"Times New Roman";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-US'>In addition, ZOAP provides a jBoss-compatible invoker
  class that builds on those abstractions.<span style="mso-spacerun: yes">�
  </span><o:p></o:p></span></tt></p>
  
  <p style='margin-left:35.4pt'><tt><span style='mso-ansi-font-size:12.0pt;
  mso-bidi-font-size:12.0pt;mso-ascii-font-family:"Times New 
Roman";mso-fareast-font-family:
  "Times New Roman";mso-hansi-font-family:"Times New Roman";mso-bidi-font-family:
  "Times New Roman"'>The rationale behind not using an existing and free SOAP
  implementation, such as the one from IBM, are technically and strategically.
  Technically, the IBM implementation relies on the resource-consuming
  Xerces-parser and uses the costly Domain-Object-Model interface of that parser
  to deserialise XML messages. Furthermore, the databindings have no immediate
  support for XML-Schemas which we see as important when building generic
  components that need meta-data to be shipped with the actual object data.
  Strategically, we would like to provide a fully GPL-compatible module in the
  end. The rationale behind not using a powerful servlet-engine or http-server
  implementation, such as tomcat, is that for experimenting with the internal
  architecture, a pure-Java implementation that is widely controllable at runtime
  seems the better choice.<o:p></o:p></span></tt></p>
  
  <p style='margin-left:35.4pt'><tt><span style='mso-ansi-font-size:12.0pt;
  mso-bidi-font-size:12.0pt;mso-ascii-font-family:"Times New 
Roman";mso-fareast-font-family:
  "Times New Roman";mso-hansi-font-family:"Times New Roman";mso-bidi-font-family:
  "Times New Roman"'><![if 
!supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></span></tt></p>
  
  <p style='margin-left:35.4pt'><tt><span style='mso-ansi-font-size:12.0pt;
  mso-bidi-font-size:12.0pt;mso-ascii-font-family:"Times New 
Roman";mso-fareast-font-family:
  "Times New Roman";mso-hansi-font-family:"Times New Roman";mso-bidi-font-family:
  "Times New Roman"'>A first version of ZOAP is already working with the usual
  restrictions wrt. specification compatibility, robustness, and functionality.
  We plan to release it in the near future. Planned extensions are (in order) a)
  clean-up of<span style="mso-spacerun: yes">� </span>exception handling and the
  meta-data structure, b) full integration with jBoss also wrt to dgc,<span
  style="mso-spacerun: yes">� </span>c) compatibility to the MS-Soap
  implementation, and d) asynchronous requests and message queue support. 
<o:p></o:p></span></tt></p>
  
  
  <h2 align=center style='text-align:center'>
  
  <hr size=2 width="100%" align=center>
  
  </h2>
  
  
  <h2><a name=conclusion><span lang=EN-US 
style='mso-ansi-language:EN-US'>Conclusion</span></a><span
  lang=EN-US style='mso-ansi-language:EN-US'> <o:p></o:p></span></h2>
  
  <p class=MsoBodyTextIndent><tt><span lang=EN-US style='mso-ansi-font-size:12.0pt;
  mso-bidi-font-size:12.0pt;mso-ascii-font-family:"Times New 
Roman";mso-fareast-font-family:
  "Times New Roman";mso-hansi-font-family:"Times New Roman";mso-bidi-font-family:
  "Times New Roman"'>We have argumented for an integration of<span
  style="mso-spacerun: yes">� </span>loosely-coupled Xml-based messaging
  mechanisms, such as SOAP, into strictly-typed object-oriented business
  programming platforms, such as EJB�. ZOAP (The Zimple Object Access Package) is
  a prototypical implementation of SOAP for EJB� that integrates with the modular
  Open-Source application server jBoss. It should be released under the GPL in
  the near future. </span></tt></p>
  
  
  <h2 align=center style='text-align:center'>
  
  <hr size=2 width="100%" align=center>
  
  </h2>
  
  
  <h2><span lang=EN-US 
style='mso-ansi-language:EN-US;font-weight:normal'>Footnotes<o:p></o:p></span></h2>
  
  <p><a name=footnote1><span lang=EN-US style='mso-ansi-language:EN-US'>(*)<span
  style='mso-tab-count:1'>������ </span>Please note that the terminology in this
  paper is the personal interpretation of the author and is just to motivate some
  very basic concepts. A concise and authorised introduction into EJB� is not the
  scope of this document and should rather be obtained directly from the </span></a><a
  href="http://www.j2ee.com/"><span style='mso-bookmark:footnote1'><span
  lang=EN-US style='mso-ansi-language:EN-US'>official sources</span></span><span
  style='mso-bookmark:footnote1'></span></a><span style='mso-bookmark:footnote1'><span
  lang=EN-US style='mso-ansi-language:EN-US'>.</span></span><span lang=EN-US
  style='mso-ansi-language:EN-US'><o:p></o:p></span></p>
  
  <h2><span lang=EN-US 
style='mso-ansi-language:EN-US;font-weight:normal'>References<o:p></o:p></span></h2>
  
  <p style='margin-left:35.4pt'><a name=migration><span lang=EN-US
  style='mso-ansi-language:EN-US'>[1]<span style='mso-tab-count:1'>������ 
</span></span></a><a
  href="migration.html"><span style='mso-bookmark:migration'><span lang=EN-US
  style='mso-ansi-language:EN-US'>Hofmann B., Jung, C. G., Kaufmann, G., Sch�rk,
  A., and Wolber, M.: The infor:Component Engine � A 5<sup>th</sup> Generation
  Runtime Environment for Internet-Aware Business Applications</span></span><span
  style='mso-bookmark:migration'></span></a><span style='mso-bookmark:migration'><span
  lang=EN-US style='mso-ansi-language:EN-US'>, Technical White Paper,
  infor:business solutions AG, Karlsruhe, March, 2000</span></span><span
  lang=EN-US style='mso-ansi-language:EN-US'><o:p></o:p></span></p>
  
  <p style='margin-left:35.4pt'><span lang=EN-US 
style='mso-ansi-language:EN-US'>[2]<span
  style='mso-tab-count:1'>������ </span></span><a
  href="http://java.sun.com/products/ejb/pdf/zona.pdf"><span lang=EN-US
  style='mso-ansi-language:EN-US'>Enterprise JavaBeans</span><sup><span
  lang=EN-US style='font-size:7.5pt;mso-ansi-language:EN-US'>TM</span></sup><span
  lang=EN-US style='mso-ansi-language:EN-US'> Technology � A Business Benefits
  Analysis</span></a><span lang=EN-US style='mso-ansi-language:EN-US'> (pdf
  file), A Zona Research Paper, Zona Research Inc., June, 1999<o:p></o:p></span></p>
  
  <p style='margin-left:35.4pt'><span lang=EN-US 
style='mso-ansi-language:EN-US'>[3]<span
  style='mso-tab-count:1'>������ </span></span><a 
href="http://www.forrester.com/"><span
  lang=EN-US style='mso-ansi-language:EN-US'>Forrester Research Report 
6-99</span></a><span
  lang=EN-US style='mso-ansi-language:EN-US'>, Forrester Research, June, 
1999<o:p></o:p></span></p>
  
  <p style='margin-left:35.4pt'><span lang=EN-US 
style='mso-ansi-language:EN-US'>[4]<span
  style='mso-tab-count:1'>������ </span>Booch, Jacobson, Rumbough: The Unfied
  Modelling Language Reference Guide, Addison-Wesley, 1998<o:p></o:p></span></p>
  
  <p style='margin-left:35.4pt'><span lang=EN-US 
style='mso-ansi-language:EN-US'>[5]<span
  style='mso-tab-count:1'>������ </span>Coleman, D., Arnold, P., Bodoff, S.,
  Dollin, C., Gilchrist, H., Hayes, F., and Jeremaes, P.: Object-Oriented
  Development: The Fusion Method, Addison-Wesley, 1998<o:p></o:p></span></p>
  
  <p style='margin-left:35.4pt'>[6]<span style='mso-tab-count:1'>������ </span>Prasse,
  K., Feinkonzept f�r die Lj4-Java Kopplung, Technical White Paper,
  infor:business solutions AG, Karlsruhe, February, 2000</p>
  
  <p style='margin-left:35.4pt'><span lang=FR style='mso-ansi-language:FR'>[7]<span
  style='mso-tab-count:1'>������ </span>Monson-Haefel, R.: Enterprise Java-Beans,
  O-Reilly, 1999<o:p></o:p></span></p>
  
  <p style='margin-left:35.4pt'><span lang=FR style='mso-ansi-language:FR'><span
  style="mso-spacerun: yes">�</span></span><span lang=EN-US style='mso-ansi-language:
  EN-US'>[9]<span style='mso-tab-count:1'>����� </span>Atkinson, C., K�hne, T.,
  and Bunse, C.: Dimensions of Component-Based Development, Fourth International
  Workshop on Component-Oriented Programming, 1999<o:p></o:p></span></p>
  
  <p style='margin-left:35.4pt'><a name=paper10><span lang=EN-US
  style='mso-ansi-language:EN-US'>[10]<span style='mso-tab-count:1'>���� 
</span></span></a><a
  href="migration.html"><span style='mso-bookmark:paper10'><span lang=EN-US
  style='mso-ansi-language:EN-US'>Hofmann B., Jung, C. G., Kaufmann, G., Prasse,
  K., Sch�rk, A., and Wolber, M.: From 4th Generation Languages to 5th Generation
  Containers � Taking the Step into Internet-Aware Business 
Applications</span></span><span
  style='mso-bookmark:paper10'></span></a><span style='mso-bookmark:paper10'><span
  lang=EN-US style='mso-ansi-language:EN-US'>, Technical White Paper,
  infor:business solutions AG, Karlsruhe, April, 2000<o:p></o:p></span></span></p>
  
  <span style='mso-bookmark:paper10'></span>
  
  <p style='margin-left:35.4pt'><span lang=EN-US style='mso-ansi-language:EN-US'><![if 
!supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></span></p>
  
  
  <div class=MsoNormal align=center style='text-align:center'>
  
  <hr size=2 width="100%" align=center>
  
  </div>
  
  
  <p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'>� 2000 by
  infor:business solutions AG, All rights reserved.<o:p></o:p></span></p>
  
  </div>
  
  </body>
  
  </html>
  
  
  

Reply via email to