<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<body link="#355491" alink="#4262a1" vlink="#355491" style="background: #e2e2e2; margin: 0; padding: 20px;">

<div>
        <table cellpadding="0" bgcolor="#FFFFFF" border="0" cellspacing="0" style="border: 1px solid #dadada; margin-bottom: 30px; width: 100%; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
                <tbody>
                        <tr>

                                <td>

                                        <table border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" style="border: solid 2px #ccc; background: #dadada; width: 100%; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
                                                <tbody>
                                                        <tr>
                                                                <td bgcolor="#000000" valign="middle" height="58px" style="border-bottom: 1px solid #ccc; padding: 20px; -moz-border-radius-topleft: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 5px; -webkit-border-top-left-radius: 5px;">
                                                                        <h1 style="color: #333333; font: bold 22px Arial, Helvetica, sans-serif; margin: 0; display: block !important;">
                                                                        <!-- To have a header image/logo replace the name below with your img tag -->
                                                                        <!-- Email clients will render the images when the message is read so any image -->
                                                                        <!-- must be made available on a public server, so that all recipients can load the image. -->
                                                                        <a href="http://community.jboss.org/index.jspa" style="text-decoration: none; color: #E1E1E1">JBoss Community</a></h1>
                                                                </td>

                                                        </tr>
                                                        <tr>
                                                                <td bgcolor="#FFFFFF" style="font: normal 12px Arial, Helvetica, sans-serif; color:#333333; padding: 20px;  -moz-border-radius-bottomleft: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 5px; -webkit-border-bottom-left-radius: 5px;"><h3 style="margin: 10px 0 5px; font-size: 17px; font-weight: normal;">
    DNA integration with Java EE 
</h3>
<span style="margin-bottom: 10px;">
    modified by <a href="http://community.jboss.org/people/admin">Administrator Administrator</a> in <i>EJB3</i> - <a href="http://community.jboss.org/docs/DOC-12952">View the full document</a>
</span>
<hr style="margin: 20px 0; border: none; background-color: #dadada; height: 1px;">

<div class="jive-rendered-content"><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><h2 style="text-align: justify;"><span lang="EN-US" style="font-weight: normal; font-style: normal;">JBoss DNA integration with enterprise services or one of possible answers to the Ultimate Question of Life, the Universe, and Everything </span></h2><p class="MsoNormal" style="text-align: justify;"><span lang="EN-US">Well, while the answer is not that simple like <strong><a class="jive-link-external-small" href="http://en.wikipedia.org/wiki/42_(number)">42</a></strong> but considering that JBoss DNA will utilize other <a class="jive-link-external-small" href="http://www.jboss.org/projects">JBoss technologies and frameworks</a> it is not that complex either - the integration picture might look like following:</span></p><p class="MsoNormal" style="text-align: justify;"><a href="http://community.jboss.org/servlet/JiveServlet/showImage/102-12952-1-1073/dna-jee.PNG"><span> http://community.jboss.org/servlet/JiveServlet/downloadImage/102-12952-1-1073/450-267/dna-jee.PNG </span></a></p><p class="MsoNormal" style="text-align: justify;"><span lang="EN-US" style="font-weight: normal; font-style: normal;"><a href="#"><span> # </span></a></span></p><h3 style="text-align: justify;"><span lang="EN-US">Why Seam?</span></h3><p class="MsoNormal" style="text-align: justify;"><span lang="EN-US">Basically it explained in short here <a class="jive-link-external-small" href="http://seamframework.org/Home/WhySeam">http://seamframework.org/Home/WhySeam</a></span></p><p class="MsoNormal" style="text-align: justify;"><span lang="EN-US">Many people think that JBoss Seam is just another JSF integration framework. No, it&rsquo;s not just. </span><span style="font-family: Wingdings;"><span>J</span></span></p><p class="MsoNormal" style="text-align: justify;"><span lang="EN-US">It&rsquo;s all about integration infrastructure, <a class="jive-link-external-small" href="http://docs.jboss.com/seam/2.1.0.SP1/reference/en-US/html/concepts.html">conversation management</a>, various services support, and </span><span class="section"><a class="jive-link-external-small" href="http://docs.jboss.com/seam/2.1.0.SP1/reference/en-US/html/concepts.html#d0e3941">bijection</a>. One might call it &ldquo;<strong><em>universal glue for services</em></strong>&#8221; &ndash; at least </span><span lang="EN-US">in Java world. </span></p><p class="MsoNormal" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p class="MsoNormal" style="text-align: justify;"><span lang="EN-US">Some advantages of using <strong>Seam</strong> as the core of web service layer infrastructure (from DNA prospective):</span></p><p class="MsoNormal" style="text-align: justify;"><strong>View &amp; presentation layer</strong><span lang="EN-US">:</span></p><p class="MsoNormal" style="margin-left: 36pt; text-align: justify; text-indent: -18pt;"><span lang="EN-US"><span>-<span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span></span></span><span lang="EN-US">built-in support for <strong>JSF</strong> (generic); </span></p><p class="MsoNormal" style="margin-left: 36pt; text-align: justify; text-indent: -18pt;"><span lang="EN-US"><span>-<span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span></span></span><span lang="EN-US">built-in support for <strong>RichFaces</strong> and <strong>Facelets</strong> (Rich JSF implementation &ndash; </span><strong>AJAX</strong><strong>+XHTML</strong><span lang="EN-US">)</span></p><p class="MsoNormal" style="margin-left: 36pt; text-align: justify; text-indent: -18pt;"><span lang="EN-US"><span>-<span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span></span></span><a class="jive-link-external-small" href="http://docs.jboss.com/seam/2.1.0.SP1/reference/en-US/html/remoting.html">Seam Remoting</a></p><p class="MsoNormal" style="margin-left: 36pt; text-align: justify; text-indent: -18pt;"><span>-<span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span></span><span lang="EN-US">integration with <a class="jive-link-external-small" href="http://seamframework.org/Documentation/AlternativeViewLayersOverview">alternative view layers</a>: </span><a class="jive-link-external-small" href="http://seamframework.org/Documentation/GWT">GWT</a>, <a class="jive-link-external-small" href="http://seamframework.org/Documentation/Hessian">Hessian</a>, <a class="jive-link-external-small" href="http://docs.jboss.com/seam/2.1.0.SP1/reference/en-US/html/wicket.html">Wicket</a>, and <a class="jive-link-external-small" href="http://seamframework.org/Documentation/Flex">Flex</a></p><p class="MsoNormal" style="margin-left: 36pt; text-align: justify; text-indent: -18pt;"><em>-&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </em>flexible <a class="jive-link-external-small" href="http://docs.jboss.com/seam/2.1.0.SP1/reference/en-US/html/jbpm.html#d0e6504">page flow</a>: - <em>stateless navigation model(</em>Using JSF or Seam navigation rules<em>)</em> and <em>stateful navigation model (JBPM)</em></p><p class="MsoNormal" style="margin-left: 36pt; text-align: justify; text-indent: -18pt;"><span>-<span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span></span><em>support for reporting services: <a class="jive-link-external-small" href="http://docs.jboss.com/seam/2.1.0.SP1/reference/en-US/html/itext.html"><span>iText PDF</span></a>, <a class="jive-link-external-small" href="http://docs.jboss.com/seam/2.1.0.SP1/reference/en-US/html/excel.html"><span>MS Excel</span></a>, <a class="jive-link-external-small" href="http://docs.jboss.com/seam/2.1.0.SP1/reference/en-US/html/mail.html"><span>e-mail</span></a>, </em></p><p class="MsoNormal" style="text-align: justify;"><strong>Services layer</strong><span lang="EN-US">:</span></p><p class="MsoNormal" style="margin-left: 36pt; text-align: justify; text-indent: -18pt;"><span lang="EN-US"><span>-<span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span></span></span><span lang="EN-US">built-in support for business processes and decisions: JBoss <strong>Rules</strong> (<strong>Drools) and JBoss <a class="jive-link-external-small" href="http://docs.jboss.com/seam/2.1.0.SP1/reference/en-US/html/jbpm.html#d0e6803">JBPM</a></strong>; </span></p><p class="MsoNormal" style="margin-left: 36pt; text-align: justify; text-indent: -18pt;"><span lang="EN-US"><span>-<span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span></span></span><span lang="EN-US"><a class="jive-link-external-small" href="http://docs.jboss.com/seam/2.1.0.SP1/reference/en-US/html/security.html">advanced security model</a> based on JAAS.</span></p><p class="MsoNormal" style="margin-left: 36pt; text-align: justify; text-indent: -18pt;"><span lang="EN-US"><span>-<span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span></span></span><span lang="EN-US"><a class="jive-link-external-small" href="http://docs.jboss.com/seam/2.1.0.SP1/reference/en-US/html/spring.html">Spring framework integration</a>;</span></p><p class="MsoNormal" style="margin-left: 36pt; text-align: justify; text-indent: -18pt;"><span lang="EN-US"><span>-<span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span></span></span><span lang="EN-US"><a class="jive-link-external-small" href="http://docs.jboss.com/seam/2.1.0.SP1/reference/en-US/html/webservices.html">Web services</a>;</span></p><p class="MsoNormal" style="margin-left: 36pt; text-align: justify; text-indent: -18pt;"><span>-<span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span></span><a class="jive-link-external-small" href="http://docs.jboss.com/seam/2.1.0.SP1/reference/en-US/html/rss.html">RSS</a> support;</p><p class="MsoNormal" style="margin-left: 36pt; text-align: justify; text-indent: -18pt;"><span>-<span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span></span>Flexible <a class="jive-link-external-small" href="http://docs.jboss.com/seam/2.1.0.SP1/reference/en-US/html/configuration.html">packaging model</a>;</p><h2 style="text-align: justify;"><span lang="EN-US">View &amp; presentation layer</span></h2><p class="MsoNormal" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p class="MsoNormal" style="text-align: justify;"><span lang="EN-US">I respectfully disagree with romney (<a class="jive-link-external-small" href="http://www.jboss.com/index.html?module=bb&amp;op=viewtopic&amp;t=132054">DNA user interface discussion</a>) and not convinced that &ldquo;</span><span class="postbody"><em>FLEX would be <strong>the preferred choice</strong> because it would support a dynamic user interface which will support a very expressive type of user interface. I[romney] believe html/Ajax have some limitation in this area especially when dealing with large amount of data/information.</em></span><span lang="EN-US">&#8221;</span></p><p class="MsoNormal" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p class="MsoNormal" style="text-align: justify;"><span lang="EN-US">I&rsquo;m not against it as one of possible implementations but <a class="jive-link-external-small" href="http://www.hciidc.in/2008/07/21/flex-limitations/">Flex may have as many limitations as any other RIA framework</a> &ndash; everything depends on a design - for example, loading millions of records at a time (instead of paging) might &ldquo;kill&#8221; any even native application. Also in order to integrate with Flex some intermediate framework(s)/service(s) needs to be deployed/configured onto application server &ndash; like <a class="jive-link-external-small" href="http://www.graniteds.org/confluence/pages/viewpage.action?pageId=229378">Granite Data Services</a> which adds an extra level of complexity. </span></p><p class="MsoNormal" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p class="MsoNormal" style="text-align: justify;"><span lang="EN-US">On the other hand there are other ways to implement rich UI while still having it simple, maintainable and thin.</span></p><p class="MsoNormal" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p class="MsoNormal" style="text-align: justify;"><span lang="EN-US"><a class="jive-link-external-small" href="http://java.sun.com/javaee/javaserverfaces/">Java Server Faces technology</a> allows <a class="jive-link-external-small" href="http://java.sun.com/javaee/5/docs/tutorial/doc/bnaqd.html">abstracting particular presentation format from middle tier UI controller layer and follows MVC pattern</a> - it separates model (<strong>UIComponent</strong>) from RenderKits which in turn allows using different render kits while still having same POJO Web controller layer.</span></p><p class="MsoNormal" style="text-align: justify;"><strong>JSF</strong><span lang="EN-US"> has flexible functionality to substitute not only different rendering kits on the fly or by configuration but also it allows plugging in <strong>JSF phase listeners</strong> to do custom work &ndash; e.g. invoke business rules to decide, load or create view page on the fly, etc. Other frameworks like <strong>JBoss Seam</strong> are going much further than that. </span></p><p class="MsoNormal" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p class="MsoNormal" style="text-align: justify;"><span lang="EN-US">Different <strong>free rendering kits exists on JSF market</strong> &ndash; such as <a class="jive-link-external-small" href="http://www.jboss.org/jbossrichfaces/">JBoss RichFaces</a> (XHTML, JS, AJAX), <a class="jive-link-external-small" href="https://facelets.dev.java.net/">Facelets</a> (JSF templates + declarative composition of UI components using XHTML), <a class="jive-link-external-small" href="http://xulfaces.sourceforge.net/">XulFaces</a> (JSF + XUL), project <a class="jive-link-external-small" href="http://woodstock.dev.java.net/">Woodstock</a>, <a class="jive-link-external-small" href="http://www.icefaces.org/main/product/product-overview.iface">ICESoft ICEfaces</a>,<span>&#160; </span><a class="jive-link-external-small" href="https://mobilejsf.dev.java.net/">Mobile JSF</a> (WML, </span>XHTML-MP<span lang="EN-US">), and many more. </span></p><p class="MsoNormal" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p class="MsoNormal" style="text-align: justify;"><strong>JBoss RichFaces</strong><span lang="EN-US"> (JSF+AJAX) is very powerful, feature rich, lightweight and simple to use AJAX framework that implements <strong>Java Server Faces</strong> spec and supports dynamic interface based on <strong>JS + XHTML</strong> &ndash; de-facto standards for dynamic web applications:</span></p><p class="MsoNormal" style="margin-left: 36pt; text-align: justify; text-indent: -18pt;"><span lang="EN-US"><span>-<span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span></span></span><span lang="EN-US"><a class="jive-link-external-small" href="http://www.jboss.org/file-access/default/members/jbossrichfaces/freezone/docs/devguide/en/html/RichFacesComponentsLibrary.html">100+ components and UI controls</a> (including but not limiting to <a class="jive-link-external-small" href="http://livedemo.exadel.com/richfaces-demo/richfaces/calendar.jsf?c=calendar&amp;tab=usage">calendar</a>, <a class="jive-link-external-small" href="http://livedemo.exadel.com/richfaces-demo/richfaces/inplaceInput.jsf?c=inplaceInput&amp;tab=usage">inplace input</a> and <a class="jive-link-external-small" href="http://livedemo.exadel.com/richfaces-demo/richfaces/inplaceSelect.jsf?c=inplaceSelect&amp;tab=usage">select</a>, <a class="jive-link-external-small" href="http://livedemo.exadel.com/richfaces-demo/richfaces/tree.jsf?c=tree&amp;tab=usage">tree</a>, <a class="jive-link-external-small" href="http://livedemo.exadel.com/richfaces-demo/richfaces/toolBar.jsf?c=toolBar&amp;tab=usage">toolbar</a>, <a class="jive-link-external-small" href="http://livedemo.exadel.com/richfaces-demo/richfaces/dropDownMenu.jsf?c=menuGroup&amp;tab=usage">menu</a>, <a class="jive-link-external-small" href="http://livedemo.exadel.com/richfaces-demo/richfaces/tabPanel.jsf?c=tabPanel&amp;tab=usage">tabbed panels</a>, etc);</span></p><p class="MsoNormal" style="margin-left: 36pt; text-align: justify; text-indent: -18pt;"><span lang="EN-US"><span>-<span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span></span></span><a class="jive-link-external-small" href="http://www.jboss.org/file-access/default/members/jbossrichfaces/freezone/docs/devguide/en/html/fileUpload.html">Ajax-ed files upload to server</a> (an example - <a class="jive-link-external-small" href="http://livedemo.exadel.com/richfaces-demo/richfaces/fileUpload.jsf?c=fileUpload&amp;tab=usage">http://livedemo.exadel.com/richfaces-demo/richfaces/fileUpload.jsf?c=fileUpload&amp;tab=usage</a>)<span lang="EN-US"></span></p><p class="MsoNormal" style="margin-left: 36pt; text-align: justify; text-indent: -18pt;"><span class="MsoHyperlink"><span lang="EN-US" style="text-decoration: none;"><span>-<span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span></span></span></span><span lang="EN-US"><a class="jive-link-external-small" href="http://livedemo.exadel.com/richfaces-demo/richfaces/plugnskin.jsf?c=plugnskin&amp;tab=usage">Plug-n-skin</a></span></p><p class="MsoNormal" style="margin-left: 36pt; text-align: justify; text-indent: -18pt;"><span lang="EN-US"><span>-<span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span></span></span><span lang="EN-US">Standard JSF controls extended to support </span><span lang="EN-US">AJAX</span><span lang="EN-US">; </span></p><p class="MsoNormal" style="margin-left: 36pt; text-align: justify; text-indent: -18pt;"><span lang="EN-US"><span>-<span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span></span></span><span lang="EN-US"><a class="jive-link-external-small" href="http://livedemo.exadel.com/richfaces-demo/richfaces/dragSupport.jsf?c=dragSupport&amp;tab=usage">drag</a> and <a class="jive-link-external-small" href="http://livedemo.exadel.com/richfaces-demo/richfaces/dragSupport.jsf?c=dropSupport&amp;tab=usage">drop</a> support. </span></p><p class="MsoNormal" style="margin-left: 36pt; text-align: justify; text-indent: -18pt;"><span lang="EN-US"><span>-<span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span></span></span><span lang="EN-US"><a class="jive-link-external-small" href="http://www.jboss.org/file-access/default/members/jbossrichfaces/freezone/docs/devguide/en/html/jQuery.html">JQuery support</a> (see example with <strong><em>Fisheye effect</em></strong> - <a class="jive-link-external-small" href="http://livedemo.exadel.com/richfaces-demo/richfaces/jQuery.jsf?c=jQuery&amp;tab=usage">http://livedemo.exadel.com/richfaces-demo/richfaces/jQuery.jsf?c=jQuery&amp;tab=usage</a> );</span></p><p class="MsoNormal" style="margin-left: 36pt; text-align: justify; text-indent: -18pt;"><span lang="EN-US"><span>-<span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span></span></span><span lang="EN-US"><a class="jive-link-external-small" href="http://livedemo.exadel.com/richfaces-demo/richfaces/effect.jsf?c=effect&amp;tab=usage">JS effects</a>;</span></p><p class="MsoNormal" style="margin-left: 36pt; text-align: justify; text-indent: -18pt;"><span lang="EN-US"><span>-<span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span></span></span><span lang="EN-US"> </span></p><p class="MsoNormal" style="text-align: justify;"><span lang="EN-US">It is very easy to develop rich UI while still having thin client (without any necessity to download any plug-ins or virtual machines). See more examples here - </span><span style="font-family: Arial; font-size: 10pt;"><a class="jive-link-external-small" href="http://livedemo.exadel.com/richfaces-demo/richfaces/support.jsf" target="_blank">http://livedemo.exadel.com/richfaces-demo/richfaces/support.jsf</a>&#160; </span></p><p class="MsoNormal" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p class="MsoNormal" style="text-align: justify;"><span lang="EN-US">On the other hand, <a class="jive-link-external-small" href="http://www.exadel.com/web/portal/home">same company</a> that gave us <strong>RichFaces</strong> and <strong>Ajax4Jsf</strong> &ndash; also gave another alternative - <a class="jive-link-external-small" href="http://exadel.com/web/portal/flamingo">Exadel Flamingo</a> &ndash; an integration of <strong>Flex and JavaFX</strong> with JBoss Seam, and <a class="jive-link-external-small" href="http://exadel.com/web/portal/fiji">Exadel Fiji</a> that extends JSF by allowing the use of <strong>Flex with JSF</strong> components and within a jsf page. See examples here - </span><span style="font-family: Arial; font-size: 10pt;"><a class="jive-link-external-small" href="http://exadel.com/web/portal/flamingo/demo" target="_blank">http://exadel.com/web/portal/flamingo/demo</a> and here - <a class="jive-link-external-small" href="http://livedemo.exadel.com/fiji-demo/" target="_blank">http://livedemo.exadel.com/fiji-demo/</a></span></p><p class="MsoNormal" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p class="MsoNormal" style="text-align: justify;"><span lang="EN-US">Another alternative would be to use <a class="jive-link-external-small" href="http://xulfaces.sourceforge.net/">XULFaces</a> &ndash; an integration of <strong>Java Server Faces</strong> and <a class="jive-link-external-small" href="http://www.mozilla.org/projects/xul/">XUL</a> &ndash; powerful </span><em>XML User Interface Language </em><span>that r</span>elies on multiple existing web standards and technologies, including <a class="jive-link-external-small" href="http://en.wikipedia.org/wiki/Cascading_Style_Sheets">CSS</a>, <a class="jive-link-external-small" href="http://en.wikipedia.org/wiki/JavaScript">JavaScript</a>, and <a class="jive-link-external-small" href="http://en.wikipedia.org/wiki/Document_Object_Model">DOM</a> and <strong>integrates with native UI</strong>.<span> <span lang="EN-US">For example, <a class="jive-link-external-small" href="http://en.wikipedia.org/wiki/XULRunner">XulRunner</a> might be very serious alternative to other approaches, and already used to some degree in famous IDEs like <a class="jive-link-external-small" href="http://ftp.mozilla.org/pub/mozilla.org/xulrunner/eclipse/">Eclipse</a> and <a class="jive-link-external-small" href="http://wiki.netbeans.org/EmbeddedBrowser">NetBeans</a> as embedded Internet browser widget. </span></span></p><p class="MsoNormal" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p class="MsoNormal" style="text-align: justify;"><span lang="EN-US">I believe that <strong>putting all eggs into single UI basket might be disastrous</strong> to any project with UI functionality &ndash; a number of new RIA frameworks are emerging as we speak. Who knows, the <strong>Java FX</strong> might be the next killer RIA in the nearest future &ndash; based on declarative language + extremely mature MVC UI framework <strong>Swing</strong> + <a class="jive-link-external-small" href="http://java.sun.com/javase/6/webnotes/6u10.html">newest enhancements <span> </span>in deployment model, Swing and applet in JRE 6u10</a> might completely change the picture of RIA and desktop.</span></p><p class="MsoNormal" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p class="MsoNormal" style="text-align: justify;"><span lang="EN-US">I don&rsquo;t want to start another thread about which platform/framework is better - <strong>that&rsquo;s not the point that I&rsquo;m trying to make</strong>. My point is simple: <strong>I believe in &ldquo;AND&#8221; (integration) - in contrast with &ldquo;OR&#8221; or &ldquo;VS&#8221; (</strong></span><strong>segregation</strong><strong>)</strong><span lang="EN-US">. </span><span style="font-family: Wingdings;"><span>J</span></span><span lang="EN-US"> </span></p><p class="MsoNormal" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p class="MsoNormal" style="text-align: justify;"><strong>Proper infrastructure for middle layer that rely on standards is the key to success for an enterprise application</strong><span lang="EN-US"> - that will enable and simplify access to an application from different existing and new clients and let community to do any other way.</span></p><p class="MsoNormal" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><h2 style="text-align: justify;"><span lang="EN-US">Services layer</span></h2><h3><span lang="EN-US">Java Content Repository API (a.k.a. <a class="jive-link-external-small" href="http://jcp.org/en/jsr/detail?id=170">JSR-170</a> and <a class="jive-link-external-small" href="http://jcp.org/en/jsr/detail?id=283">JSR-283</a>)</span></h3><p class="MsoNormal" style="text-align: justify;"><span lang="EN-US">No questions here &ndash; it simple and powerful way to access hierarchical and flat content <strong>from Java applications</strong> using loose coupling like following:</span></p><p class="MsoNormal" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><div style="border: 1pt solid windowtext; padding: 1pt 4pt;"><p class="MsoNormal" style="border: medium none; padding: 0cm; text-align: justify;"><span style="font-size: 8pt;">// Get the Repository object </span></p><p class="MsoNormal" style="border: medium none; padding: 0cm; text-align: justify;"><span style="font-size: 8pt;">InitialContext ctx = ... Repository repository = (Repository)ctx.lookup("myrepo");</span></p><p class="MsoNormal" style="border: medium none; padding: 0cm; text-align: justify;"><span style="font-size: 8pt;">// Get a Credentials object </span></p><p class="MsoNormal" style="border: medium none; padding: 0cm; text-align: justify;"><span style="font-size: 8pt;">Credentials credentials = new SimpleCredentials("MyName", "MyPassword".toCharArray());</span></p><p class="MsoNormal" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p class="MsoNormal" style="border: medium none; padding: 0cm; text-align: justify;"><span style="font-size: 8pt;">// Get a Session </span></p><p class="MsoNormal" style="border: medium none; padding: 0cm; text-align: justify;"><span style="font-size: 8pt;">Session mySession = repository.login(credentials, "MyWorkspace");</span></p><p class="MsoNormal" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p class="MsoNormal" style="border: medium none; padding: 0cm; text-align: justify;"><span style="font-size: 8pt;">// get root node</span></p><p class="MsoNormal" style="border: medium none; padding: 0cm; text-align: justify;"><span style="font-size: 8pt;">Node root = mySession.getRootNode();</span></p><p class="MsoNormal" style="border: medium none; padding: 0cm; text-align: justify;"><span style="font-size: 8pt;">// get child node</span></p><p class="MsoNormal" style="border: medium none; padding: 0cm; text-align: justify;"><span style="font-size: 8pt;">Node node = root.getNode(&ldquo;/a/b/c&#8221;);</span></p><p class="MsoNormal" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></div><p class="MsoNormal" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p class="MsoNormal" style="text-align: justify;"><span lang="EN-US"><a class="jive-link-external-small" href="http://jackrabbit.apache.org/">Apache JackRabbit</a> </span>s a fully conforming implementation of the Content Repository for Java Technology API (JCR) and <span lang="EN-US">supports different deployment modes including <strong><a class="jive-link-external-small" href="http://jackrabbit.apache.org/deployment-models.html">embedded JCR container</a> </strong>mode. However, it has some performance limitations </span>(in the current design)<span> <span lang="EN-US">&ndash; <a class="jive-link-external-small" href="http://wiki.apache.org/jackrabbit/Performance">http://wiki.apache.org/jackrabbit/Performance</a></span></span></p><p class="MsoNormal" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p class="MsoNormal" style="text-align: justify;"><span lang="EN-US">One of other possible implementations might use <strong><a class="jive-link-external-small" href="http://www.jboss.org/jbosscache/">JBoss Cache</a></strong> in its core &ndash; together with graph API. Sounds strange? From bird's-eye view prospective &ndash; perhaps. But closer look shows similarity in architecture: transactional <a class="jive-link-external-small" href="http://www.jboss.org/file-access/default/members/jbosscache/freezone/docs/3.0.0.CR3/userguide_en/html_single/index.html#architecture.tree_structure">tree structure of nodes</a> with caching, <a class="jive-link-external-small" href="http://www.jboss.org/file-access/default/members/jbosscache/freezone/docs/3.0.0.CR3/userguide_en/html_single/index.html#clustering">clustering</a> and <a class="jive-link-external-small" href="http://www.jboss.org/file-access/default/members/jbosscache/freezone/docs/3.0.0.CR3/userguide_en/html_single/index.html#cl.impls">persistence support</a> (<strong>JDBCCacheLoader</strong>, FileCacheLoader, Amazon S3 CacheLoader, ETC) out of box &ndash; it might be an excellent choice for lightweight implementation of JCR API. </span></p><p class="MsoNormal" style="text-align: justify;"><span lang="EN-US">Typical JBoss usage example:</span></p><div style="border: 1pt solid windowtext; padding: 1pt 4pt;"><pre style="border: medium none; padding: 0cm;"><span class="javaoperator"><span style="font-size: 8pt;"><span>&#160;&#160; </span>//</span></span><span class="javaplain"><span style="font-size: 8pt;"> </span></span><span class="javatype"><span style="font-size: 8pt;">Let</span></span><span class="javaplain"><span style="font-size: 8pt;">'s get a hold of the root node</span></span><span class="javaseparator"><span style="font-size: 8pt;">.</span></span><span style="font-size: 8pt;"></span></pre><pre style="border: medium none; padding: 0cm;"><span class="javaplain"><span style="font-size: 8pt;">&#160;&#160; </span></span><span class="javatype"><span style="font-size: 8pt;">Node</span></span><span class="javaplain"><span style="font-size: 8pt;"> rootNode </span></span><span class="javaoperator"><span style="font-size: 8pt;">=</span></span><span class="javaplain"><span style="font-size: 8pt;"> cache</span></span><span class="javaseparator"><span style="font-size: 8pt;">.</span></span><span class="javaplain"><span style="font-size: 8pt;">getRoot</span></span><span class="javaseparator"><span style="font-size: 8pt;">();</span></span><span style="font-size: 8pt;"></span></pre><pre style="border: medium none; padding: 0cm;"><span style="font-size: 8pt;"> </span></pre><pre style="border: medium none; padding: 0cm;"><span class="javaplain"><span style="font-size: 8pt;">&#160;&#160; </span></span><span class="javaoperator"><span style="font-size: 8pt;">//</span></span><span class="javaplain"><span style="font-size: 8pt;"> </span></span><span class="javatype"><span style="font-size: 8pt;">Remember</span></span><span class="javaseparator"><span style="font-size: 8pt;">,</span></span><span class="javaplain"><span style="font-size: 8pt;"> </span></span><span class="javatype"><span style="font-size: 8pt;">JBoss</span></span><span class="javaplain"><span style="font-size: 8pt;"> </span></span><span class="javatype"><span style="font-size: 8pt;">Cache</span></span><span class="javaplain"><span style="font-size: 8pt;"> stores data in a tree structure</span></span><span class="javaseparator"><span style="font-size: 8pt;">.</span></span><span style="font-size: 8pt;"></span></pre><pre style="border: medium none; padding: 0cm;"><span class="javaplain"><span style="font-size: 8pt;">&#160;&#160; </span></span><span class="javaoperator"><span style="font-size: 8pt;">//</span></span><span class="javaplain"><span style="font-size: 8pt;"> </span></span><span class="javatype"><span style="font-size: 8pt;">All</span></span><span class="javaplain"><span style="font-size: 8pt;"> nodes in the tree structure are identified by </span></span><span class="javatype"><span style="font-size: 8pt;">Fqn</span></span><span class="javaplain"><span style="font-size: 8pt;"> objects</span></span><span class="javaseparator"><span style="font-size: 8pt;">.</span></span><span style="font-size: 8pt;"></span></pre><pre style="border: medium none; padding: 0cm;"><span class="javaplain"><span style="font-size: 8pt;">&#160;&#160; </span></span><span class="javatype"><span style="font-size: 8pt;">Fqn</span></span><span class="javaplain"><span style="font-size: 8pt;"> peterGriffinFqn </span></span><span class="javaoperator"><span style="font-size: 8pt;">=</span></span><span class="javaplain"><span style="font-size: 8pt;"> </span></span><span class="javatype"><span style="font-size: 8pt;">Fqn</span></span><span class="javaseparator"><span style="font-size: 8pt;">.</span></span><span class="javaplain"><span style="font-size: 8pt;">fromString</span></span><span class="javaseparator"><span style="font-size: 8pt;">(</span></span><span class="javaliteral"><span style="font-size: 8pt;">"/griffin/peter"</span></span><span class="javaseparator"><span style="font-size: 8pt;">);</span></span><span style="font-size: 8pt;"></span></pre><pre style="border: medium none; padding: 0cm;"><span style="font-size: 8pt;"> </span></pre><pre style="border: medium none; padding: 0cm;"><span class="javaplain"><span style="font-size: 8pt;">&#160;&#160; </span></span><span class="javaoperator"><span style="font-size: 8pt;">//</span></span><span class="javaplain"><span style="font-size: 8pt;"> </span></span><span class="javatype"><span style="font-size: 8pt;">Create</span></span><span class="javaplain"><span style="font-size: 8pt;"> a </span></span><span class="javakeyword"><span style="font-size: 8pt;">new</span></span><span class="javaplain"><span style="font-size: 8pt;"> </span></span><span class="javatype"><span style="font-size: 8pt;">Node</span></span><span style="font-size: 8pt;"></span></pre><pre style="border: medium none; padding: 0cm;"><span class="javaplain"><span style="font-size: 8pt;">&#160;&#160; </span></span><span class="javatype"><span style="font-size: 8pt;">Node</span></span><span class="javaplain"><span style="font-size: 8pt;"> peterGriffin </span></span><span class="javaoperator"><span style="font-size: 8pt;">=</span></span><span class="javaplain"><span style="font-size: 8pt;"> rootNode</span></span><span class="javaseparator"><span style="font-size: 8pt;">.</span></span><span class="javaplain"><span style="font-size: 8pt;">addChild</span></span><span class="javaseparator"><span style="font-size: 8pt;">(</span></span><span class="javaplain"><span style="font-size: 8pt;">peterGriffinFqn</span></span><span class="javaseparator"><span style="font-size: 8pt;">);</span></span><span style="font-size: 8pt;"></span></pre><pre style="border: medium none; padding: 0cm;"><span style="font-size: 8pt;"> </span></pre><pre style="border: medium none; padding: 0cm;"><span class="javaplain"><span style="font-size: 8pt;">&#160;&#160; </span></span><span class="javaoperator"><span style="font-size: 8pt;">//</span></span><span class="javaplain"><span style="font-size: 8pt;"> let's store some data in the node</span></span><span style="font-size: 8pt;"></span></pre><pre style="border: medium none; padding: 0cm;"><span class="javaplain"><span style="font-size: 8pt;">&#160;&#160; peterGriffin</span></span><span class="javaseparator"><span style="font-size: 8pt;">.</span></span><span class="javaplain"><span style="font-size: 8pt;">put</span></span><span class="javaseparator"><span style="font-size: 8pt;">(</span></span><span class="javaliteral"><span style="font-size: 8pt;">"isCartoonCharacter"</span></span><span class="javaseparator"><span style="font-size: 8pt;">,</span></span><span class="javaplain"><span style="font-size: 8pt;"> </span></span><span class="javatype"><span style="font-size: 8pt;">Boolean</span></span><span class="javaseparator"><span style="font-size: 8pt;">.</span></span><span class="javaplain"><span style="font-size: 8pt;">TRUE</span></span><span class="javaseparator"><span style="font-size: 8pt;">);</span></span><span style="font-size: 8pt;"></span></pre><pre style="border: medium none; padding: 0cm;"><span class="javaplain"><span style="font-size: 8pt;">&#160;&#160; peterGriffin</span></span><span class="javaseparator"><span style="font-size: 8pt;">.</span></span><span class="javaplain"><span style="font-size: 8pt;">put</span></span><span class="javaseparator"><span style="font-size: 8pt;">(</span></span><span class="javaliteral"><span style="font-size: 8pt;">"favoriteDrink"</span></span><span class="javaseparator"><span style="font-size: 8pt;">,</span></span><span class="javaplain"><span style="font-size: 8pt;"> </span></span><span class="javakeyword"><span style="font-size: 8pt;">new</span></span><span class="javaplain"><span style="font-size: 8pt;"> </span></span><span class="javatype"><span style="font-size: 8pt;">Beer</span></span><span class="javaseparator"><span style="font-size: 8pt;">());</span></span><span style="font-size: 8pt;"></span></pre></div><p class="MsoNormal" style="text-align: justify;">It looks very similar to JCR access code example above, isn&rsquo;t it?</p><p class="MsoNormal" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p class="MsoNormal" style="text-align: justify;"><span lang="EN-US">What about applications that built using technologies other than Java? The answer is also simple &ndash;it is essential to support widely deployed open standard&rsquo;s and de-facto implementations - see below.</span></p><h3><span lang="EN-US"><a class="jive-link-external-small" href="http://www.webdav.org/">WebDAV</a></span></h3><p class="MsoNormal" style="text-align: justify;"><span lang="EN-US">Despite on critique and its limitations this standard is not dead yet and might be useful by </span>allowing external clients such as Microsoft Windows and Apple OS X to connect to, read and edit the content from JCR compliant repository<span lang="EN-US">. However, it has some issues i</span>n <a class="jive-link-external-small" href="http://en.wikipedia.org/wiki/Windows_Vista">Windows Vista</a>, only the WebDAV redirector is present by default; the original "Web folders" client has been removed. The "Web folders" client is only present if the <a class="jive-link-external-small" href="http://www.microsoft.com/downloads/details.aspx?familyid=17C36612-632E-4C04-9382-987622ED1D64&amp;displaylang=en">Microsoft Update for Web Folders is installed</a>.</p><p class="MsoNormal" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p class="MsoNormal" style="text-align: justify;">For example, Apache JackRabbit has <a class="jive-link-external-small" href="http://jackrabbit.apache.org/jackrabbit-webdav-library.html">WebDAV module</a><span>&#160; </span>in the form of Servlet packaged in <a class="jive-link-external-small" href="http://jackrabbit.apache.org/jackrabbit-web-application.html">WAR application</a> &ndash; specifically <a class="jive-link-external-small" href="http://jackrabbit.apache.org/api/1.4/org/apache/jackrabbit/webdav/jcr/JCRWebdavServerServlet.html">JCRWebdavServerServlet</a>.</p><h3><em><span style="font-style: normal; font-family: Arial;">Common Internet File System</span></em><em> (CIFS)</em> support</h3><p class="MsoNormal" style="text-align: justify;"><span lang="EN-US">Another possible extension for JBoss DNA is to support <a class="jive-link-external-small" href="http://www.samba.org/cifs/">CIFS</a>. </span>CIFS is the standard file sharing protocol on the Microsoft Windows platform (e.g. Map Network Drive ...)<span lang="EN-US">. </span></p><p class="MsoNormal" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p class="MsoNormal" style="text-align: justify;"><a class="jive-link-external-small" href="http://jcifs.samba.org/">JCIFS</a><span>&#160; </span>is a client library that implements the CIFS/SMB networking protocol in 100% Java.</p><p class="MsoNormal" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p class="MsoNormal" style="text-align: justify;"><strong><a class="jive-link-external-small" href="http://www.alfresco.com/products/aifs/">Alfresco JLAN</a></strong><span lang="EN-US"> uses a virtual file system interface that allows plugging in custom file system implementation with the core server handling all of the network protocol exchange between the client and server. JLAN is Java implementation of Window's CIFS (Common Internet File System), in addition to supporting NFS and FTP.</span></p><p class="MsoNormal" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p class="MsoNormal" style="text-align: justify;"><strong>Apache commons VFS</strong><span lang="EN-US"> </span>provides <a class="jive-link-external-small" href="http://commons.apache.org/vfs/filesystems.html#CIFS">access to the files on a CIFS server</a>. <span><span> </span><span lang="EN-US"></span></span></p><p class="MsoNormal" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><h3><span lang="EN-US">Service auto discovery (<a class="jive-link-external-small" href="http://en.wikipedia.org/wiki/Zeroconf">zero configuration networking</a>)</span></h3><p class="MsoNormal" style="text-align: justify;"><span lang="EN-US">Federated repository works with multiple resources that require some sort of configuration and automatic discovery of services on IP networks. While it is might be difficult to enable <strong>zeroconf</strong> for some external resources without prior deploying some agents &ndash; it worth to at least enable auto-discovery of JBoss DNA Federated repository &ndash; it might be very important for JBoss DNA clients and for JBoss DNA itself in a scenario where DNA repository might sit on top of hierarchy of other DNA repositories. It is very likely scenario for global companies that have distributed, independently managed offices but still want to benefit from federated repository features. </span></p><p class="MsoNormal" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p class="MsoNormal" style="text-align: justify;"><strong><a class="jive-link-external-small" href="http://www.apple.com/macosx/technology/bonjour.html">Bonjour</a></strong>, formerly <strong>Rendezvous</strong>, is Apple Inc.'s trade name for its implementation of <strong>Zeroconf</strong>, a service discovery protocol. Bonjour locates devices such as printers, as well as other computers, and the services that those devices offer on a local network using multicast Domain Name System service records. This feature used in <strong>iTunes</strong> to advertise playlist.</p><p class="MsoNormal" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p class="MsoNormal" style="text-align: justify;"><a class="jive-link-external-small" href="http://www.apple.com/support/downloads/bonjourforwindows.html">Bonjour for Windows</a> includes a plug-in for Internet Explorer, so you can set up a Bonjour-enabled device without knowing its IP address.</p><p class="MsoNormal" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p class="MsoNormal" style="text-align: justify;"><strong><a class="jive-link-external-small" href="http://jmdns.sourceforge.net/">JmDNS</a></strong> as a pure Java implementation of <strong>mDNS/DNS-</strong>SD might help with implementing discovery of other instances of JBoss DNA repository. It is used by <a class="jive-link-external-small" href="http://activemq.apache.org/discovery.html">Apache ActiveMQ</a> which implements Discovery Agent to detect remote services such as remote JMS brokers.</p><p class="MsoNormal" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><h3><span lang="EN-US">Atom based publishing service</span></h3><p class="MsoNormal" style="text-align: justify;"><span lang="EN-US"><a class="jive-link-external-small" href="http://www.ietf.org/rfc/rfc5023.txt">JCR + Atom Publishing Protocol</a> &ndash; seams to be a winning combination based on <a class="jive-link-external-small" href="http://en.wikipedia.org/wiki/Representational_State_Transfer">REST</a> principles. </span></p><p class="MsoNormal" style="text-align: justify;"><span lang="EN-US">It is especially important for those who don&rsquo;t want to use JCR or Java APIs directly. </span></p><p class="MsoNormal" style="text-align: justify;"><span lang="EN-US"><a class="jive-link-external-small" href="https://jsr311.dev.java.net/">JAX-RS</a> (a.k.a <a class="jive-link-external-small" href="http://jcp.org/en/jsr/detail?id=311">JSR-311</a> The Java<sup>TM</sup> API for RESTful Web Services) and its implementations like <a class="jive-link-external-small" href="http://www.jboss.org/resteasy/">JBoss RestEasy</a>, <a class="jive-link-external-small" href="https://jersey.dev.java.net/">Jersey</a><span>&#160; </span>plus <a class="jive-link-external-small" href="http://incubator.apache.org/abdera/">Apache Abdera</a> (high performance implementation of </span>Atom Syndication Format (<a class="jive-link-external-small" href="http://www.ietf.org/rfc/rfc4287.txt">RFC 4287</a>) and Atom Publishing Protocol (<a class="jive-link-external-small" href="http://www.ietf.org/rfc/rfc5023.txt">RFC 5023</a>) specifications<span lang="EN-US">) and <a class="jive-link-external-small" href="https://rome.dev.java.net/">Rome</a> (</span><em>RSS 0.90, RSS 0.91 Netscape, RSS 0.91 Userland, RSS 0.92, RSS 0.93, RSS 0.94, RSS 1.0, RSS 2.0, Atom 0.3, and Atom 1.0</em><span lang="EN-US">), will make an implementation as simple as possible. </span></p><p class="MsoNormal" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p class="MsoNormal" style="text-align: justify;"><span lang="EN-US">Not to mention that <a class="jive-link-external-small" href="http://bill.burkecentral.com/2008/11/10/jax-rs-atom-support-with-resteasy/">RestEasy now implements Atom</a> (thanks to </span>Randall for pointing that out<span lang="EN-US">) and supports various </span>marshallers like JAXB, JAXB +JSON<span lang="EN-US">.</span></p><p class="MsoNormal" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><h3><span lang="EN-US">Content Management Interoperability Services API (a.k.a CMIS)</span></h3><p class="MsoNormal" style="text-align: justify;"><span lang="EN-US">An <a class="jive-link-external-small" href="http://en.wikipedia.org/wiki/Content_Management_Interoperability_Services">emerging standard</a> is a nice addition to <strong>JCR</strong> and <strong>APP</strong> way to access content repositories of any sort based on <strong>Web Services</strong>. It is already been supported by open source community &ndash; <a class="jive-link-external-small" href="http://wiki.alfresco.com/wiki/CMIS">Alfresco CMIS</a> &ndash; is an example). Basically, it completes the picture of the repository API - JCR, Atom Publishing Protocol, and WebDAV may work together to satisfy any customer needs.</span></p><h3><span lang="EN-US">Open Search</span></h3><p class="MsoNormal" style="text-align: justify;"><span lang="EN-US">It is difficult to imagine having any sort of repository without ability to search. It is not surprising that JCR API specification has at least &#188; of entire spec space allocated for search capability. But again, what about applications that built using technologies other than Java? </span></p><p class="MsoNormal" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p class="MsoNormal" style="text-align: justify;"><span lang="EN-US">The <a class="jive-link-external-small" href="http://www.opensearch.org/">Open Search</a> might be the answer together with <a class="jive-link-external-small" href="http://lucene-ws.net/">Lucene Web Service</a> implementation &ndash; which is a <strong>REST-compliant Java servlet</strong> capable of searching and managing multiple <strong>Lucene indices via the web</strong>. It is built upon the Atom Publishing Protocol and <strong>conforms to the OpenSearch 1.1</strong> standard. It sounds very promising.</span></p><p class="MsoNormal" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><h3><span lang="EN-US">JBoss DNA packaging and deployment</span></h3><p class="MsoNormal" style="text-align: justify;"><span lang="EN-US">JBoss DNA consist of lots of modules and services &ndash; so it is very important to define proper packaging that suits most of use cases and deployment models while still having small number of artifacts.</span></p><p class="MsoNormal" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p class="MsoNormal">IMO, RESTful service (any other WS planned?) as well as web UI application components as well as other DNA services might be deployed in any particular combination &ndash; part of standard enterprise archive (<strong>EAR</strong>&#160; ) as two independent&#160;&#160; <strong>WAR</strong> modules + DNA JCR implementationas JBoss service archive <a class="jive-link-wiki-small" href="http://community.jboss.org/docs/DOC-12212">SAR</a> and/or as JEE standard <a class="jive-link-external-small" href="http://java.sun.com/j2ee/connector/overview.html">JCA Connector</a> + DNA other services (EJB3 artefacts likeSLSB/SFSB, MDB, TB, etc) .</p><p class="MsoNormal" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p class="MsoNormal">For example, Apache JackRabbit has <a class="jive-link-external-small" href="http://jackrabbit.apache.org/jackrabbit-jca-resource-adapter.html">JCA Resource Adapter</a> and <a class="jive-link-external-small" href="http://jackrabbit.apache.org/deployment-models.html">various deployment scenarios</a>.</p><p class="MsoNormal" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p class="MsoNormal">Additionally, having standard packaging artefacts like above actually will enable JBoss DNA deployment onto JEE servers different from JBoss&#160; AS (for instance, if a client will require).</p><p class="MsoNormal" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p class="MsoNormal"><a class="jive-link-external-small" href="http://docs.codehaus.org/display/MAVENUSER/Creating+JBoss+SAR+(Service+ARchive)+Artifacts">Maven has support for standard and non standard JBoss packaging artefacts</a> &ndash; thanks to guys from Codehouse.org and&#160;&#160; <a class="jive-link-external-small" href="http://maven.apache.org/plugins/index.html">Maven plugins comunity</a>.</p><p class="MsoNormal" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><h2 style="text-align: justify;"><span lang="EN-US">References</span></h2><p class="ecmsonormal" style="text-align: justify;"><span style="font-family: Arial; font-size: 10pt;"><a class="jive-link-external-small" href="http://docs.jboss.com/seam/2.1.0.SP1/reference/en-US/html/" target="_blank">http://docs.jboss.com/seam/2.1.0.SP1/reference/en-US/html/</a>&#160;&#160;&#160;&#160;&#160;&#160;&#160; JBoss Seam </span><span style="font-size: 10pt;">2.1.0.SP1, Builtin support for JSF and Richfaces</span></p><p class="ecmsonormal" style="margin: 0cm 0cm 0.0001pt; text-align: justify;"><span style="font-size: 10pt;"><a class="jive-link-external-small" href="http://docs.jboss.com/seam/2.1.0.SP1/reference/en-US/html/concepts.html#d0e3491" target="_blank">http://docs.jboss.com/seam/2.1.0.SP1/reference/en-US/html/concepts.html#d0e3491</a>&#160;&#160;&#160; Context Management</span></p><p class="ecmsonormal" style="margin: 0cm 0cm 0.0001pt; text-align: justify;"><span style="font-size: 10pt;"><a class="jive-link-external-small" href="http://docs.jboss.com/seam/2.1.0.SP1/reference/en-US/html/webservices.html" target="_blank">http://docs.jboss.com/seam/2.1.0.SP1/reference/en-US/html/webservices.html</a>&#160;&#160; Webservices, REST (RestEasy integration) </span></p><p class="ecmsonormal" style="margin: 0cm 0cm 0.0001pt; text-align: justify;"><span style="font-size: 10pt;"><a class="jive-link-external-small" href="http://docs.jboss.com/seam/2.1.0.SP1/reference/en-US/html/remoting.html" target="_blank">http://docs.jboss.com/seam/2.1.0.SP1/reference/en-US/html/remoting.html</a>&#160;&#160;&#160;&#160;&#160;&#160;&#160; Remoting/AJAX</span></p><p class="ecmsonormal" style="margin: 0cm 0cm 0.0001pt; text-align: justify;"><span style="font-size: 10pt;"><a class="jive-link-external-small" href="http://docs.jboss.com/seam/2.1.0.SP1/reference/en-US/html/events.html#d0e5013" target="_blank">http://docs.jboss.com/seam/2.1.0.SP1/reference/en-US/html/events.html#d0e5013</a>&#160;&#160;&#160;&#160;&#160;&#160;&#160; URL rewriting / bookmarkable pages</span></p><p class="ecmsonormal" style="margin: 0cm 0cm 0.0001pt; text-align: justify;"><span style="font-size: 10pt;"><a class="jive-link-external-small" href="http://docs.jboss.com/seam/2.1.0.SP1/reference/en-US/html/events.html#events.pageaction.navigation" target="_blank">http://docs.jboss.com/seam/2.1.0.SP1/reference/en-US/html/events.html#events.pageaction.navigation</a>&#160;&#160; Flexible Navigation</span></p><p class="ecmsonormal" style="margin: 0cm 0cm 0.0001pt; text-align: justify;"><span style="font-size: 10pt;"><a class="jive-link-external-small" href="http://docs.jboss.com/seam/2.1.0.SP1/reference/en-US/html/jbpm.html" target="_blank">http://docs.jboss.com/seam/2.1.0.SP1/reference/en-US/html/jbpm.html</a> Support for JBPM</span></p><p class="ecmsonormal" style="margin: 0cm 0cm 0.0001pt; text-align: justify;"><span style="font-family: Arial; font-size: 10pt;"><a class="jive-link-external-small" href="http://docs.jboss.com/seam/2.1.0.SP1/reference/en-US/html/drools.html" target="_blank">http://docs.jboss.com/seam/2.1.0.SP1/reference/en-US/html/drools.html</a>&#160;&#160;&#160; </span><span style="font-size: 10pt;">Support for Drools</span></p><p class="ecmsonormal" style="margin: 0cm 0cm 0.0001pt; text-align: justify;"><span style="font-family: Arial; font-size: 10pt;"><a class="jive-link-external-small" href="http://docs.jboss.com/seam/2.1.0.SP1/reference/en-US/html/spring.html" target="_blank">http://docs.jboss.com/seam/2.1.0.SP1/reference/en-US/html/spring.html</a>&#160;&#160;&#160; Spring Framework integration&#160;&#160;&#160;&#160;&#160; </span><span style="font-size: 10pt;"></span></p><p class="ecmsonormal" style="margin: 0cm 0cm 0.0001pt; text-align: justify;"></p><p class="ecmsonormal" style="margin: 0cm 0cm 0.0001pt; text-align: justify;"><span style="font-family: Arial; font-size: 10pt;"><a class="jive-link-external-small" href="http://docs.jboss.com/seam/2.1.0.SP1/reference/en-US/html/groovy.html" target="_blank">http://docs.jboss.com/seam/2.1.0.SP1/reference/en-US/html/groovy.html</a>&#160;&#160; Groovy integration</span><span style="font-size: 10pt;"></span></p><p class="ecmsonormal" style="margin: 0cm 0cm 0.0001pt; text-align: justify;"><span style="font-family: Arial; font-size: 10pt;"><a class="jive-link-external-small" href="http://docs.jboss.com/seam/2.1.0.SP1/reference/en-US/html/wicket.html" target="_blank">http://docs.jboss.com/seam/2.1.0.SP1/reference/en-US/html/wicket.html</a>&#160;&#160; Wicket integration</span><span style="font-size: 10pt;"></span></p><p class="ecmsonormal" style="margin: 0cm 0cm 0.0001pt; text-align: justify;"><span style="font-family: Arial; font-size: 10pt;"><a class="jive-link-external-small" href="http://docs.jboss.com/seam/2.1.0.SP1/reference/en-US/html/gwt.html" target="_blank">http://docs.jboss.com/seam/2.1.0.SP1/reference/en-US/html/gwt.html</a>&#160;&#160;&#160;&#160;&#160;&#160; Google Web Toolkit integration</span><span style="font-size: 10pt;"></span></p><p class="ecmsonormal" style="margin: 0cm 0cm 0.0001pt; text-align: justify;"></p><p class="ecmsonormal" style="margin: 0cm 0cm 0.0001pt; text-align: justify;"><span style="font-family: Arial; font-size: 10pt;"><a class="jive-link-external-small" href="http://docs.jboss.com/seam/2.1.0.SP1/reference/en-US/html/security.html" target="_blank">http://docs.jboss.com/seam/2.1.0.SP1/reference/en-US/html/security.html</a> JAAS Security</span><span style="font-size: 10pt;"></span></p><p class="ecmsonormal" style="margin: 0cm 0cm 0.0001pt; text-align: justify;"><span style="font-family: Arial; font-size: 10pt;"><a class="jive-link-external-small" href="http://docs.jboss.com/seam/2.1.0.SP1/reference/en-US/html/itext.html" target="_blank">http://docs.jboss.com/seam/2.1.0.SP1/reference/en-US/html/itext.html</a>&#160;&#160;&#160;&#160;&#160; iText/PDF integration</span><span style="font-size: 10pt;"></span></p><p class="ecmsonormal" style="margin: 0cm 0cm 0.0001pt; text-align: justify;"><span style="font-family: Arial; font-size: 10pt;"><a class="jive-link-external-small" href="http://docs.jboss.com/seam/2.1.0.SP1/reference/en-US/html/rss.html" target="_blank">http://docs.jboss.com/seam/2.1.0.SP1/reference/en-US/html/rss.html</a>&#160;&#160;&#160;&#160;&#160;&#160;&#160; RSS support</span><span style="font-size: 10pt;"></span></p><p class="ecmsonormal" style="margin: 0cm 0cm 0.0001pt; text-align: justify;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </p><p class="ecmsonormal" style="margin: 0cm 0cm 0.0001pt; text-align: justify;"><span style="font-family: Arial; font-size: 10pt;"><a class="jive-link-external-small" href="http://docs.jboss.com/seam/2.1.0.SP1/reference/en-US/html/configuration.html%20Flexible%20packaging%20in%20JEE5" target="_blank">http://docs.jboss.com/seam/2.1.0.SP1/reference/en-US/html/configuration.html Flexible packaging in JEE5</a> / JSE&#160;&#160;&#160;&#160; </span><span style="font-size: 10pt;"></span></p><p class="ecmsonormal" style="margin: 0cm 0cm 0.0001pt; text-align: justify;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </p><p class="ecmsonormal" style="margin: 0cm 0cm 0.0001pt; text-align: justify;"><span style="font-family: Arial; font-size: 10pt;"><a class="jive-link-external-small" href="http://java.dzone.com/articles/flex-j2ee-developers-case-gran" target="_blank">http://java.dzone.com/articles/flex-j2ee-developers-case-gran</a>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Flex for J2EE Developers (using Seam)</span><span style="font-size: 10pt;"></span></p><p class="ecmsonormal" style="margin: 0cm 0cm 0.0001pt; text-align: justify;"><span style="font-family: Arial; font-size: 10pt;"><a class="jive-link-external-small" href="http://www.seamframework.org/Community/FlexAndSeamIntegration" target="_blank">http://www.seamframework.org/Community/FlexAndSeamIntegration</a>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Flex and Seam Integration</span><span style="font-size: 10pt;"></span></p><p class="ecmsonormal" style="margin: 0cm 0cm 0.0001pt; text-align: justify;"></p><p class="ecmsonormal" style="margin: 0cm 0cm 0.0001pt; text-align: justify;"><span style="font-family: Arial; font-size: 10pt;"><a class="jive-link-external-small" href="http://livedemo.exadel.com/richfaces-demo/richfaces/support.jsf" target="_blank">http://livedemo.exadel.com/richfaces-demo/richfaces/support.jsf</a>&#160;&#160; RichFaces Demo</span><span style="font-size: 10pt;"></span></p><p class="ecmsonormal" style="margin: 0cm 0cm 0.0001pt; text-align: justify;"></p><p class="ecmsonormal" style="margin: 0cm 0cm 0.0001pt; text-align: justify;"><span style="font-family: Arial; font-size: 10pt;"><a class="jive-link-external-small" href="http://exadel.com/web/portal/flamingo" target="_blank">http://exadel.com/web/portal/flamingo</a>&#160;&#160;&#160;&#160;&#160; </span><span style="font-size: 10pt;">With Exadel Flamingo, Flex or JavaFX can be easily <strong>glued to Seam or Spring</strong>. And, in the future, Flamingo will be extended to provide glue for other RIA technologies.</span></p><p class="ecmsonormal" style="margin: 0cm 0cm 0.0001pt; text-align: justify;"><span style="font-family: Arial; font-size: 10pt;"><a class="jive-link-external-small" href="http://www.infoq.com/news/2008/06/flamingo-flex-and-java-dev" target="_blank">http://www.infoq.com/news/2008/06/flamingo-flex-and-java-dev</a>&#160;&#160;&#160;&#160;&#160;&#160; Introductory article</span><span style="font-size: 10pt;"></span></p><p class="ecmsonormal" style="margin: 0cm 0cm 0.0001pt; text-align: justify;"><span style="font-family: Arial; font-size: 10pt;"><a class="jive-link-external-small" href="http://www.jamesward.com/wordpress/2008/09/05/integrating-flex-and-jsf-with-exadel-fiji/" target="_blank">http://www.jamesward.com/wordpress/2008/09/05/integrating-flex-and-jsf-with-exadel-fiji/</a>&#160;&#160;&#160;&#160;&#160; Another article </span><span style="font-size: 10pt;"></span></p><p class="ecmsonormal" style="margin: 0cm 0cm 0.0001pt; text-align: justify;"><span style="font-family: Arial; font-size: 10pt;"><a class="jive-link-external-small" href="http://exadel.com/web/portal/flamingo/demo" target="_blank">http://exadel.com/web/portal/flamingo/demo</a>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="font-size: 10pt;">Exadel Flamingo demo</span></p><p class="ecmsonormal" style="margin: 0cm 0cm 0.0001pt; text-align: justify;"><span style="font-family: Arial; font-size: 10pt;"><a class="jive-link-external-small" href="http://demo.flamingo.exadel.com/booking/" target="_blank">http://demo.flamingo.exadel.com/booking/</a>&#160; </span><span style="font-size: 10pt;"></span></p><p class="ecmsonormal" style="margin: 0cm 0cm 0.0001pt; text-align: justify;"><span style="font-family: Arial; font-size: 10pt;"><a class="jive-link-external-small" href="http://livedemo.exadel.com/fiji-demo/" target="_blank">http://livedemo.exadel.com/fiji-demo/</a>&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="font-size: 10pt;">Exadel </span><span style="font-size: 10pt;">Fiji</span><span style="font-size: 10pt;"> extends JSF by allowing the use of Flex with JSF components and within a jsf page.</span></p></div>

<div style="background-color: #f4f4f4; padding: 10px; margin-top: 20px;">
    <p style="margin: 0;">Comment by <a href="http://community.jboss.org/docs/DOC-12952">going to Community</a></p>

        <p style="margin: 0;">Create a new document in EJB3 at <a href="http://community.jboss.org/choose-container!input.jspa?contentType=102&containerType=14&container=2029">Community</a></p>
</div></td>
                        </tr>
                    </tbody>
                </table>


                </td>
            </tr>
        </tbody>
    </table>

</div>

</body>
</html>