1 2 3 Previous Next 41 Replies Latest reply on Nov 28, 2007 2:22 AM by sysmat

    Exadel, JBoss and Seam

    gavin.king

      For those who have not yet seen the announcement here:

      http://www.theserverside.com/news/thread.tss?thread_id=44506

      Let me give a quick summary of what is happening, and what it means for Seam users:

      * The Exadel RichFaces JSF component suite, and the Exadel Studio Pro eclipse plugin suite are being released into open source as "JBoss RichFaces" and "Red Hat Developer Studio" under LGPL and GPL licenses respectively. Ajax4JSF, which was already open source, will also be hosted at JBoss.

      * The existing team at Exadel will continue to develop RichFaces, RHDS and Ajax4JSF.

      * Existing functionality in JBoss IDE will be integrated with Exadel Studio Pro and maintained by the existing JBoss IDE team.

      * Future development of the combined toolset will emphasize support for Seam and also Hibernate. The goal here is to build a deeply integrated and insanely productive development environment that is comparable to Microsoft's .Net.

      * Existing JSF components in Seam will be migrated to the Ajax4JSF CDK (component development kit).

      * Since a vibrant JSF ecosystem is of absolutely critical importance to Seam, we will continue to work with the development teams of other component suites (icefaces, trinidad, woodstock, etc) to ensure that Seam and the JSF tooling works well with these products. IMO, there will never be a single dominant vendor in this space, since UI is such a personal thing. We will also be working to make it easier to use different component suites together. For example, Trinidad and RichFaces can already co-exist, but we've got some ideas for making the experience of using them together even better.

      * Exadel and JBoss hope to make a big contribution to the next revision of JSF, slated for Java EE 6.

      I would like to welcome the Exadel folks to the Seam community!

      In case you havn't noticed, this is the best thing that has ever happened to Seam, and is going to take us to the next level on productivity. I've personally dreamed of an opportunity to lead an effort like this for a Long Time :-)

        • 1. Re: Exadel, JBoss and Seam
          kukeltje

           

          insanely productive

          if you guys keep adding features at the pace you currently are, we go definately insane for trying to keep up :-)

          Go Seam... oh and Gavin... don't YOU go insane....

          • 2. Re: Exadel, JBoss and Seam
            kukeltje

            Forgot the quote....from TSS:

            The very good news here is that Gavin King is taking a leadership role in that "Grand Unification" and will lead the vision of these two strategic aspects: tooling and programming model. Given Gavin's credibility in giving back productivity to the developers, you should expect great innovations. I am personally thrilled to see Gavin take on that strategic responsibility.




            • 3. Re: Exadel, JBoss and Seam

              Could someone comment on the current compatibility of JBoss Richfaces with Seam?

              When might there be an example posted that demonstrates integration of the various JBoss Richfaces components?

              I have been trying to determine if I should use Ajax4JSF or Icefaces. I have a rather large application built on Seam, but I have not added any Ajax support.

              At this point would the Seam team members recommend JBoss Richfaces or Icefaces for a application that only uses Tomahawk(soon to be phased out of my app)?

              • 4. Re: Exadel, JBoss and Seam
                gavin.king

                Make sure you check out the demo here:

                http://livedemo.exadel.com/richfaces-demo/

                • 5. Re: Exadel, JBoss and Seam
                  gavin.king

                   

                  "supernovasoftware.com" wrote:
                  Could someone comment on the current compatibility of JBoss Richfaces with Seam?

                  When might there be an example posted that demonstrates integration of the various JBoss Richfaces components?

                  I have been trying to determine if I should use Ajax4JSF or Icefaces. I have a rather large application built on Seam, but I have not added any Ajax support.

                  At this point would the Seam team members recommend JBoss Richfaces or Icefaces for a application that only uses Tomahawk(soon to be phased out of my app)?


                  At present, Ajax4JSF is known to be compatible with Seam, and I am not aware of any major issues.

                  Seam users have reported a number of problems using ICE Faces with Seam, and as far as I understand these issues, I am inclined to characterize them more as bugs in ICE Faces than bugs in Seam. The ICE guys were working on these issues, and I hope to see them resolved soon.

                  I'm not aware that RichFaces has been tested with Seam yet (though perhaps Exadel have done some preliminary work that I'm not aware of) but I don't expect many major issues since RichFaces is based upon the Ajax4JSF core which is known to work well.

                  Obviously our goal is to get a Seam + RichFaces demo done ASAP. Note that this deal was only signed a couple of days ago ;-)


                  • 6. Re: Exadel, JBoss and Seam

                    Gavin,

                    Thank you for the prompt reply.

                    I have been looking into purchasing Exadel Studio Pro and Richfaces recently. It rocks that JBoss is open sourcing these products. :)

                    This has been the story with most of the commercial or non JBoss OS products I have researched. Just as I am close to deciding on them, JBoss integrates it.

                    I personally prefer Seamgen the other examples because is seems to include more of the "latest approach". I would like to see Richfaces integrated there.

                    • 7. Re: Exadel, JBoss and Seam
                      alexsmirnov

                      Most of RichFaces components was tested with JBOSS Seam 1.2 GA.
                      Currently, we found only one issue - for tree component, it's not possible to create model from EJB beans in ejb-jar, due to classloading problems. For resolve this issue, we need to separate API and implementation classes.

                      • 8. Re: Exadel, JBoss and Seam
                        tony.herstell1

                        Please tell us what to add, where, to get RichFaces to work with Seam.

                        With IceFaces it was a case of just dropping jars into EAR and updating the META-INF/application.xml

                         <!-- Icefaces -->
                         <module>
                         <java>icefaces.jar</java>
                         </module>
                        
                         <module>
                         <java>icefaces-comps.jar</java>
                         </module>
                        
                         <module>
                         <java>el-api.jar</java>
                         </module>
                        
                         <module>
                         <java>el-ri.jar</java>
                         </module>
                        
                         <module>
                         <java>icefaces-facelets.jar</java>
                         </module>
                        
                         <module>
                         <java>commons-fileupload.jar</java>
                         </module>
                        



                        Referencing the above jars into the War (as remote jars)
                         icefaces.jar, icefaces-comps.jar and icefaces-facelets.jar
                        


                        Lobbing in the icefaces-component.tld in the WEB-INF (for some reason I haven't fathomed yet)

                        Referencing icefaces in the .xhtml pages
                         xmlns:ice="http://www.icesoft.com/icefaces/component"
                        


                        Adding the backing bean support
                         /*
                         * GUI Support methods
                         */
                        
                         public String applyFilter() {
                         log.info("> applyFilter");
                         /*
                         * Set the model to to the results returned from the constraints
                         */
                         log.info("Finding all the required organisations returned from the constraints" + organisation);
                         applyQueryBasedOnSearchCriteria();
                         log.info("< applyFilter");
                         return null;
                         }
                        
                         /**
                         * The panel stack is controlled by a group of radio buttons and their state
                         * changes call this method to register the newly selected panel.
                         *
                         * @param event
                         * new value of event contains the new selected panel name.
                         */
                         public void selectedSearchCriteriaPanelChanged(ValueChangeEvent event) {
                         log.info("> selectedSearchCriteriaPanelChanged");
                         log.info("applyingSearchCriteriaChange (All/Filtered)");
                         if (event.getNewValue() != null) {
                         selectedSearchCriteriaPanel = event.getNewValue().toString();
                         log.info(selectedSearchCriteriaPanel + " selected");
                         if (selectedSearchCriteriaPanel.equals(ALL_OPTION)) {
                         applyAllQuery();
                         } else {
                         applyQueryBasedOnSearchCriteria();
                         }
                         } else {
                         log.info("null new event passed in. Error!");
                         }
                         log.info("< selectedSearchCriteriaPanelChanged");
                         }
                        
                        
                         private void sort() {
                         Comparator organisationComparator = new Comparator() {
                        
                         public int compare(Object o1, Object o2) {
                         Organisation organisation1 = (Organisation)o1;
                         Organisation organisation2 = (Organisation)o2;
                        
                         if (sortColumn == null) {
                         return 0;
                         }
                        
                         if (sortColumn.equals(messages.get("column_title_name"))) {
                         // Surname
                         if (!ascending) {
                         return (organisation1.getName().compareTo(organisation2.getName()));
                         } else {
                         return (organisation2.getName().compareTo(organisation1.getName()));
                         }
                         } else if (sortColumn.equals(messages.get("column_title_physical"))) {
                         // Firstname
                         if (ascending) {
                         if (organisation1.getPhysical() == true && organisation2.getPhysical() == false) {
                         return 1;
                         } else if (organisation1.getPhysical() == organisation2.getPhysical()) {
                         return 0;
                         } else if (organisation1.getPhysical() == false && organisation2.getPhysical() == true) {
                         return -1;
                         }
                         } else {
                         if (organisation2.getPhysical() == true && organisation1.getPhysical() == false) {
                         return 1;
                         } else if (organisation2.getPhysical() == organisation1.getPhysical()) {
                         return 0;
                         } else if (organisation2.getPhysical() == false && organisation1.getPhysical() == true) {
                         return -1;
                         }
                         }
                         } else if (sortColumn.equals(messages.get("column_title_creation_date"))) {
                         // Creation Date
                         if (ascending) {
                         return (organisation1.getDates().getCreationDate().compareTo(organisation2.getDates().getCreationDate()));
                         } else {
                         return (organisation2.getDates().getCreationDate().compareTo(organisation1.getDates().getCreationDate()));
                         }
                         }
                         return 0;
                         }
                         };
                        
                         if (organisations != null) {
                         Arrays.sort(organisations, organisationComparator);
                         }
                         }
                        
                        


                        Some "intersting" xml in web.xml page.
                         <context-param>
                         <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
                         <param-value>client</param-value>
                         </context-param>
                        
                         <context-param>
                         <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
                         <param-value>.xhtml</param-value>
                         </context-param>
                        
                         <context-param>
                         <param-name>facelets.DEVELOPMENT</param-name>
                         <param-value>true</param-value>
                         </context-param>
                        
                         <context-param>
                         <param-name>com.icesoft.faces.actionURLSuffix</param-name>
                         <param-value>.seam</param-value>
                         </context-param>
                        
                         <context-param>
                         <param-name>com.icesoft.faces.synchronousUpdate</param-name>
                         <param-value>true</param-value>
                         </context-param>
                        
                         <servlet>
                         <servlet-name>Faces Servlet</servlet-name>
                         <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
                         <load-on-startup>1</load-on-startup>
                         </servlet>
                        
                         <!-- Added as trail from http://support.icesoft.com/jive/servlet/KbServlet/download/623-102-847/SeamKBArticle.txt
                         <context-param>
                         <param-name>com.icesoft.faces.doJSFStateManagement</param-name>
                         <param-value>true</param-value>
                         </context-param>
                         -->
                        
                         <!-- Faces Servlet Mapping -->
                        <!--
                         <servlet-mapping>
                         <servlet-name>Faces Servlet</servlet-name>
                         <url-pattern>*.seam</url-pattern>
                         </servlet-mapping>
                        
                        -->
                        
                         <servlet>
                         <servlet-name>Blocking Servlet</servlet-name>
                         <servlet-class>com.icesoft.faces.webapp.xmlhttp.BlockingServlet</servlet-class>
                         <load-on-startup> 1 </load-on-startup>
                         </servlet>
                        
                         <servlet>
                         <servlet-name>Persistent Faces Servlet</servlet-name>
                         <servlet-class>com.icesoft.faces.webapp.xmlhttp.PersistentFacesServlet</servlet-class>
                         <load-on-startup>1</load-on-startup>
                         </servlet>
                        
                         <servlet-mapping>
                         <servlet-name>Persistent Faces Servlet</servlet-name>
                         <url-pattern>/xmlhttp/*</url-pattern>
                         </servlet-mapping>
                        
                         <servlet-mapping>
                         <servlet-name>Persistent Faces Servlet</servlet-name>
                         <url-pattern>/xmlhttp/*</url-pattern>
                         </servlet-mapping>
                        
                         <servlet-mapping>
                         <servlet-name>Persistent Faces Servlet</servlet-name>
                         <url-pattern>*.iface</url-pattern>
                         </servlet-mapping>
                        
                         <!-- file upload Servlet -->
                         <servlet>
                         <servlet-name>uploadServlet</servlet-name>
                         <servlet-class>com.icesoft.faces.component.inputfile.FileUploadServlet</servlet-class>
                         <load-on-startup> 1 </load-on-startup>
                         </servlet>
                        
                         <servlet-mapping>
                         <servlet-name>uploadServlet</servlet-name>
                         <url-pattern>/uploadHtml</url-pattern>
                         </servlet-mapping>
                        



                        Just a short post should give me a starting point.

                        • 9. Re: Exadel, JBoss and Seam
                          lisaanm

                          Hi.,
                          As Exadel-Jboss combination rocks, which is really a great news for all J2EE/JEE communities, the team should provide a short integration guide for RichFaces-Seam, which I suppose is going to make a revolution in the field of RIA.

                          Thanks

                          • 10. Re: Exadel, JBoss and Seam
                            rmemoria

                            That's really GREAT!!! (Seam + Ajax4JSF + RichFaces) and (JBOSS + Exadel IDE) all together.

                            From the deep of my heart... CONGRATULATIONS for a such good product. It has helped me a lot...

                            But...
                            I've seen the MS Visual Studio 2005. The IDE is super, but unfortunately it is M$ .NET.

                            The JBOSS Eclipse IDE + Exadel IDE helps a lot, but sometimes I have to do a lot of "manual working" like XML configs.

                            It would be great having such a really productive IDE, where we could visually develop systems.

                            Anyway... congratulations again

                            Best,
                            Ricardo

                            • 11. Re: Exadel, JBoss and Seam
                              pmuir

                              There are BIG plans in store for the IDE to make it rival .NET - and will take the pain out of writing XML :) Once the dust has settled Red Hat Developer Studio's JIRA will start to fill up I'm sure ;)

                              • 12. Re: Exadel, JBoss and Seam
                                pmuir

                                 

                                "lisaanm" wrote:
                                the team should provide a short integration guide for RichFaces-Seam


                                AFAIK you would set up a project as if for ajax4jsf (seam-gen will do this for you :) and just drop the richfaces jar into WEB-INF/lib

                                • 13. Re: Exadel, JBoss and Seam
                                  tnfink

                                   

                                  "petemuir" wrote:
                                  "lisaanm" wrote:
                                  the team should provide a short integration guide for RichFaces-Seam


                                  AFAIK you would set up a project as if for ajax4jsf (seam-gen will do this for you :) and just drop the richfaces jar into WEB-INF/lib


                                  we tried this. But it only worked with simple components (e.g., the separator). If we bound the suggestion box to a Seam managed bean, we encountered class loading problems. We then put the jars from richfaces, ajaf4jsf, and oscache into the root of the EAR and added them as Java-modules. This solved the problems.

                                  We tested the suggestion box, the data table, and the panel and everything worked fine. The skins seem to be missing and the documentation is a little bit sparse.
                                  But all in all, it is usable now and it can only become better :-)

                                  • 14. Re: Exadel, JBoss and Seam

                                     


                                    JBOSS + Exadel IDE

                                    is there any deadline when would it be ?



                                    1 2 3 Previous Next