User: jung Date: 00/12/04 04:35:27 Modified: docs/papers soapjBoss.htm Log: adopted to latest jboss container, added decimal and date removed some problems due to forward-referencing in meta-data added serialisation policy Revision Changes Path 1.2 +1025 -1025zoap/docs/papers/soapjBoss.htm Index: soapjBoss.htm =================================================================== RCS file: /products/cvs/ejboss/zoap/docs/papers/soapjBoss.htm,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- soapjBoss.htm 2000/08/10 21:04:55 1.1 +++ soapjBoss.htm 2000/12/04 12:35:26 1.2 @@ -1,1025 +1,1025 @@ -<!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&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&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]> <![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]> <![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'><SOAP:Envelope -xmlns:SOAP="urn:schemas-xmlsoap-org:soap.v1"><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><SOAP:Body><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><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="Some-Namespace-URI"><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'><symbol>DIS</symbol><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'></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></SOAP:Body><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'></SOAP:Envelope></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 <symbol/> -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]> <![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]> <![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]> <![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]> <![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]> <![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]> <![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]> <![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> +<!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&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&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]> <![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]> <![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'><SOAP:Envelope +xmlns:SOAP="urn:schemas-xmlsoap-org:soap.v1"><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><SOAP:Body><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><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="Some-Namespace-URI"><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'><symbol>DIS</symbol><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'></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></SOAP:Body><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'></SOAP:Envelope></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 <symbol/> +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]> <![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]> <![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]> <![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]> <![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]> <![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]> <![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]> <![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>
