User: jung Date: 00/09/08 00:58:04 Added: zoap/papers soapjBoss.htm Log: Added the concept white paper. Revision Changes Path 1.1 website/zoap/papers/soapjBoss.htm Index: soapjBoss.htm =================================================================== <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns="http://www.w3.org/TR/REC-html40"> <head> <meta http-equiv=Content-Type content="text/html; charset=windows-1252"> <meta name=ProgId content=Word.Document> <meta name=Generator content="Microsoft Word 9"> <meta name=Originator content="Microsoft Word 9"> <link rel=File-List href="./soapjBoss-Dateien/filelist.xml"> <link rel=Edit-Time-Data href="./soapjBoss-Dateien/editdata.mso"> <!--[if !mso]> <style> v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} </style> <![endif]--> <title>Migration Strategy</title> <!--[if gte mso 9]><xml> <o:DocumentProperties> <o:Subject>Technical White Paper</o:Subject> <o:Keywords>infor:CE infor:com migration technical logical</o:Keywords> <o:LastAuthor>Dr. Christoph Georg Jung</o:LastAuthor> <o:Revision>50</o:Revision> <o:Created>2000-05-25T09:22:00Z</o:Created> <o:LastSaved>2000-06-17T07:28:00Z</o:LastSaved> <o:Pages>8</o:Pages> <o:Words>4145</o:Words> <o:Characters>23627</o:Characters> <o:Category>Technical White Paper</o:Category> <o:Manager>Dr. Christoph Georg Jung</o:Manager> <o:Company>infor: business solutions AG</o:Company> <o:Lines>196</o:Lines> <o:Paragraphs>47</o:Paragraphs> <o:CharactersWithSpaces>29015</o:CharactersWithSpaces> <o:Version>9.2812</o:Version> </o:DocumentProperties> </xml><![endif]--><!--[if gte mso 9]><xml> <w:WordDocument> <w:HyphenationZone>21</w:HyphenationZone> </w:WordDocument> </xml><![endif]--> <style> <!-- /* Font Definitions */ @font-face {font-family:Tahoma; panose-1:2 11 6 4 3 5 4 4 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:553679495 -2147483648 8 0 66047 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman";} h1 {margin-right:0cm; mso-margin-top-alt:auto; mso-margin-bottom-alt:auto; margin-left:0cm; mso-pagination:widow-orphan; mso-outline-level:1; font-size:24.0pt; font-family:"Times New Roman"; mso-font-kerning:18.0pt; font-weight:bold;} h2 {margin-right:0cm; mso-margin-top-alt:auto; mso-margin-bottom-alt:auto; margin-left:0cm; mso-pagination:widow-orphan; mso-outline-level:2; font-size:18.0pt; font-family:"Times New Roman"; font-weight:bold;} h3 {mso-style-next:Standard; margin-top:12.0pt; margin-right:0cm; margin-bottom:3.0pt; margin-left:0cm; mso-pagination:widow-orphan; mso-outline-level:3; font-size:13.0pt; font-family:Arial; font-weight:bold;} h4 {mso-style-next:Standard; margin-top:0cm; margin-right:0cm; margin-bottom:0cm; margin-left:35.4pt; margin-bottom:.0001pt; text-align:center; mso-pagination:widow-orphan; mso-outline-level:4; font-size:14.0pt; mso-bidi-font-size:12.0pt; font-family:"Times New Roman"; mso-ansi-language:EN-US; font-weight:bold;} p.MsoCaption, li.MsoCaption, div.MsoCaption {mso-style-next:Standard; margin:0cm; margin-bottom:.0001pt; text-align:center; mso-pagination:widow-orphan; font-size:14.0pt; mso-bidi-font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman"; mso-ansi-language:EN-US; font-weight:bold;} p.MsoBodyTextIndent, li.MsoBodyTextIndent, div.MsoBodyTextIndent {margin-top:0cm; margin-right:0cm; margin-bottom:0cm; margin-left:36.0pt; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman"; mso-ansi-language:EN-US;} a:link, span.MsoHyperlink {color:blue; text-decoration:underline; text-underline:single;} a:visited, span.MsoHyperlinkFollowed {color:purple; text-decoration:underline; text-underline:single;} p.MsoDocumentMap, li.MsoDocumentMap, div.MsoDocumentMap {margin:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; background:navy; font-size:12.0pt; font-family:Tahoma; mso-fareast-font-family:"Times New Roman";} p {margin-right:0cm; mso-margin-top-alt:auto; mso-margin-bottom-alt:auto; margin-left:0cm; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman";} address {margin:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Times New Roman"; font-style:italic;} pre {margin:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt; font-size:10.0pt; font-family:"Courier New"; mso-fareast-font-family:"Courier New"; color:black;} tt {mso-ascii-font-family:"Courier New"; mso-fareast-font-family:"Courier New"; mso-hansi-font-family:"Courier New"; mso-bidi-font-family:"Courier New";} p.Preformatted, li.Preformatted, div.Preformatted {mso-style-name:Preformatted; margin:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; tab-stops:0cm 47.95pt 95.9pt 143.85pt 191.8pt 239.75pt 287.7pt 335.65pt 383.6pt 431.55pt 479.5pt; layout-grid-mode:char; font-size:10.0pt; font-family:"Courier New"; mso-fareast-font-family:"Times New Roman"; mso-bidi-font-family:"Times New Roman";} @page Section1 {size:595.3pt 841.9pt; margin:70.85pt 70.85pt 2.0cm 70.85pt; mso-header-margin:35.4pt; mso-footer-margin:35.4pt; mso-paper-source:0;} div.Section1 {page:Section1;} --> </style> <!--[if gte mso 9]><xml> <o:shapedefaults v:ext="edit" spidmax="1034"/> </xml><![endif]--><!--[if gte mso 9]><xml> <o:shapelayout v:ext="edit"> <o:idmap v:ext="edit" data="1"/> </o:shapelayout></xml><![endif]--> </head> <body bgcolor=white lang=DE link=blue vlink=purple style='tab-interval:35.4pt'> <div class=Section1> <p><span lang=EN-US style='mso-ansi-language:EN-US'><a href="http://www.infor.de/">infor:business solutions AG</a>, Technical White Paper Series<o:p></o:p></span></p> <h1 align=center style='text-align:center'><span lang=EN-US style='mso-ansi-language: EN-US'>Simple Access to Complex Beans: Integrating SOAP with Enterprise Java-Beans�<o:p></o:p></span></h1> <h2 align=center style='text-align:center'><i><span lang=EN-US style='mso-ansi-language:EN-US'>A Request for Comments<o:p></o:p></span></i></h2> <p align=center style='text-align:center'><strong>Christoph G. Jung </strong></p> <address style='text-align:center'><a href="http://www.infor.de/">infor:business solutions AG</a><br> Vincenz-Prie�nitz-Stra�e 3, D-76131 Karlsruhe<br> e-mail: <a href="mailto:[EMAIL PROTECTED]">Christoph.Jung</a>@infor.de,</address> <div class=MsoNormal align=center style='text-align:center'> <hr size=2 width="100%" align=center> </div> <h2><strong><span lang=EN-US style='mso-ansi-language:EN-US;font-weight:normal'>Abstract</span></strong><span lang=EN-US style='mso-ansi-language:EN-US'> <o:p></o:p></span></h2> <p class=MsoNormal style='margin-right:36.0pt;mso-margin-top-alt:auto; mso-margin-bottom-alt:auto;margin-left:36.0pt'><i><span lang=EN-US style='mso-ansi-language:EN-US'>Enterprise Java-Beans�</span></i><span lang=EN-US style='mso-ansi-language:EN-US'> provide a promising <i>object-oriented</i> and declarative programming platform for business applications. Open-Source projects, such as <i>jBoss</i>, reconcile this technology with the verve of a skilled and motivated development community striving to state-of-the-art implementations with features, such as hot-deploy, compilation-less remote access, modular technical architecture, etc. On the other hand, there is a trend to extend the usage of the <i>eXtensible Markup Language</i> as a replacement for traditional middleware. The <i>Simple Object Access Protocol</i>,<span style="mso-spacerun: yes">� </span>for example, that is currently supported by the major players Microsoft and IBM, is close to bridge the gap between inherently COM-based Desktop-Front-Ends and Java�-Based Application-Tiers. In this paper we scetch a possible integration of<span style="mso-spacerun: yes">� </span>XML-middleware and EJB at hand of the two products/specifications jBoss and SOAP. The advantage of this approach is the possibility of a clean and structured development in object-oriented terms as given by the EJB platform paired with a loosely-coupled interoperability infrastructure which has not yet been possible to this extent with ancestor technologies. <o:p></o:p></span></p> <div class=MsoNormal align=center style='text-align:center'> <hr size=2 width="100%" align=center> </div> <h2><a name=introduction><span lang=EN-US style='mso-ansi-language:EN-US; font-weight:normal'>1. Introduction: </span></a><span lang=EN-US style='mso-ansi-language:EN-US;font-weight:normal'>EJB versus XML-based Middleware<o:p></o:p></span></h2> <p style='margin-left:35.4pt'><span lang=EN-US style='mso-ansi-language:EN-US'>In the recent decade, <i>Object-Oriented Programming</i><span style="mso-spacerun: yes">� </span>(OOP) <a href="migration.htm#migration">[5]</a> has ben established as a highly suitable paradigm for building business applications. Besides a well-structured, formalised development cycle including massive tool support, the field has brought up a new generation of<span style="mso-spacerun: yes">� </span>runtime environments called <i>Transaction Processing Monitors</i> (TPM) that are able to take the technical burden of distribution, transaction handling, and security from the application programmers. Premier examples of modern TPM�s are the <i><a href="http://www.microsoft.com/com+">Microsoft COM+</a></i> framework (formerly known as the <i>Microsoft Transaction Server</i>, MTS), <i><a href="http://www.bea.com/">Bea�s Tuxedo</a></i> and up-to-date <i><a href="http://www.j2ee.com/">Enterprise JavaBeans�</a></i> (EJB) <a href="migration.htm#migration">[7]</a> products. <o:p></o:p></span></p> <p style='margin-left:35.4pt'><span lang=EN-US style='mso-ansi-language:EN-US'>Especially the latter, by relying on <i><a href="http://java.sun.com/">Java�</a></i> with its clean programming model, its practical �Write Once, Run Everywhere� vision, and last but not least with its the massive support by industry and individual engineers, has developed into a prime OO-platform for the �middle tier�. Much recently, Open-Source projects, such as <a href="http://www.enhydra.org/">Enhydra</a>, <a href="http://www.objectweb.org/">Jonas</a>, and <a href="http://www.jboss.org/">jBoss</a>, have entered the EJB�-market and are likely to broaden the technological vision in the middle-term perspective. In <a href="#jboss">Section 2</a>, we will discuss some of the leading concepts behind the jBoss application server.<span style="mso-spacerun: yes">��� </span><o:p></o:p></span></p> <p style='margin-left:35.4pt'><span lang=EN-US style='mso-ansi-language:EN-US'>A parallel thread of R&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>
