<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="https://raibledesigns.com/roller-ui/styles/rss.xsl" media="screen"?><rss version="2.0" 
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:atom="http://www.w3.org/2005/Atom" >
<channel>
  <title>Raible Designs</title>
  <link>https://raibledesigns.com/rd/</link>
      <atom:link rel="self" type="application/rss+xml" href="https://raibledesigns.com/rd/feed/entries/rss?tags=myfaces" />
    <description>Raible Designs is an Enterprise Open Source Consulting company. We specialize in UI and Full Stack Architectures using HTML5, CSS, JavaScript and Java. We love HTML5, Angular, Bootstrap, Spring Boot, and especially JHipster.</description>
  <language>en-us</language>
  <copyright>Copyright 2026</copyright>
  <lastBuildDate>Mon, 30 Mar 2026 03:31:45 -0600</lastBuildDate>
  <generator>Apache Roller (incubating) 5.0.3 (1388864191739:dave)</generator>
        <item>
    <guid isPermaLink="true">https://raibledesigns.com/rd/entry/switching_appfuse_from_myfaces_to</guid>
    <title>Switching AppFuse from MyFaces to PrimeFaces</title>
    <dc:creator>Matt Raible</dc:creator>
    <link>https://raibledesigns.com/rd/entry/switching_appfuse_from_myfaces_to</link>
        <pubDate>Wed, 6 Feb 2013 12:19:34 -0700</pubDate>
    <category>Java</category>
    <category>primefaces</category>
    <category>appfuse</category>
    <category>myfaces</category>
    <category>jsf</category>
            <description>When describing &lt;a href=&quot;http://raibledesigns.com/rd/entry/why_the_bias_against_jsf&quot;&gt;my bias against JSF&lt;/a&gt; back in November, I wrote:&lt;/p&gt;
&lt;p class=&quot;quote&quot;&gt;
... there&apos;s a lot of folks praising JSF 2 (and &lt;a href=&quot;http://primefaces.org/&quot;&gt;PrimeFaces&lt;/a&gt; moreso). That&apos;s why I&apos;ll be integrating it (or merging your pull request) into the 2.3 release of AppFuse. Since PrimeFaces contains a Bootstrap theme, I hope this is a pleasant experience and my overall opinion of JSF improves.
&lt;/p&gt;
&lt;p&gt;Shortly after the &lt;a href=&quot;http://raibledesigns.com/rd/entry/appfuse_2_2_1_released&quot;&gt;AppFuse 2.2.1 release&lt;/a&gt; in December, Gilberto Andrade &lt;a href=&quot;http://issues.appfuse.org/browse/APF-1351&quot;&gt;contributed a sample project&lt;/a&gt; that used &lt;a href=&quot;http://javaserverfaces.java.net/&quot;&gt;Mojarra&lt;/a&gt; (the JSF RI) and &lt;a href=&quot;http://primefaces.org&quot;&gt;PrimeFaces&lt;/a&gt; instead of &lt;a href=&quot;http://myfaces.apache.org/&quot;&gt;MyFaces&lt;/a&gt; and its  &lt;a href=&quot;http://myfaces.apache.org/tomahawk/index.html&quot;&gt;Tomahawk&lt;/a&gt; components. Last week, I spent a few hours integrating Gilberto&apos;s changes into AppFuse&apos;s master branch. You can see all the changes I made (which include a Jetty plugin upgrade and some cleanup) in &lt;a href=&quot;http://source.appfuse.org/cru/CR-3&quot;&gt;this Crucible review&lt;/a&gt;. Feel free to leave comments on ask questions in the review itself.&lt;/p&gt;
&lt;p&gt;
The first thing I noticed when integrating PrimeFaces is you have to add a custom repository in order to get its artifacts via Maven.
&lt;/p&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;
&amp;lt;repositories&amp;gt;
    &amp;lt;repository&amp;gt;
        &amp;lt;id&amp;gt;prime-repo&amp;lt;/id&amp;gt;
        &amp;lt;name&amp;gt;Prime Repo&amp;lt;/name&amp;gt;
        &amp;lt;url&amp;gt;http://repository.primefaces.org&amp;lt;/url&amp;gt;
    &amp;lt;/repository&amp;gt;
&amp;lt;/repositories&amp;gt;
&lt;/pre&gt;
&lt;p&gt;This is unfortunate since all of AppFuse&apos;s other dependencies can be found in Maven Central. It means that if you&apos;re using a JSF archetype, the PrimeFaces repo will be checked for artifacts first, causing an unnecessary slowdown in artifact resolution. I hope the PrimeFaces developers fix this soon.&lt;/p&gt;
&lt;p&gt;While integrating these two frameworks, I ran into a number of issues.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://raibledesigns.com/rd/entry/switching_appfuse_from_myfaces_to#listener&quot;&gt;An IllegalStateException on startup when using &quot;mvn jetty:run&quot;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://raibledesigns.com/rd/entry/switching_appfuse_from_myfaces_to#button&quot;&gt;Conditionally rendering a button disables its click-ability&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://raibledesigns.com/rd/entry/switching_appfuse_from_myfaces_to#bootstrap&quot;&gt;The PrimeFaces Bootstrap theme 404s on some images&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://raibledesigns.com/rd/entry/switching_appfuse_from_myfaces_to#webtest&quot;&gt;Canoo WebTest doesn&apos;t work with fileUpload nor to set checkbox values&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://raibledesigns.com/rd/entry/switching_appfuse_from_myfaces_to#javax.faces.resource&quot;&gt;PrimeFaces resources served up at /javax.faces.resource/* not found&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p id=&quot;listener&quot;&gt;&lt;strong&gt;An IllegalStateException on startup when using &quot;mvn jetty:run&quot;&lt;/strong&gt;&lt;br/&gt;The first issue I encountered was that I was unable to run the app in Jetty. It worked fine in Tomcat but I got the following error in Jetty:
&lt;/p&gt;
&lt;pre&gt;
2013-01-31 22:28:07.683:WARN:/:unavailable
java.lang.IllegalStateException: Application was not properly initialized at startup, could not find Factory: javax.faces.context.FacesContextFactory
at javax.faces.FactoryFinder$FactoryManager.getFactory(FactoryFinder.java:951)
at javax.faces.FactoryFinder.getFactory(FactoryFinder.java:316)
at javax.faces.webapp.FacesServlet.init(FacesServlet.java:302)
at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:492)
at org.eclipse.jetty.servlet.ServletHolder.doStart(ServletHolder.java:312)
&lt;/pre&gt;
&lt;p&gt;I &lt;a href=&quot;http://stackoverflow.com/questions/7886035/could-not-find-factory-javax-faces-context-facescontextfactory/7889899&quot;&gt;found the fix for this on  Stack Overflow&lt;/a&gt; and added the following listener to my web.xml to solve it.&lt;/p&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;
&amp;lt;listener&amp;gt;
    &amp;lt;listener-class&amp;gt;com.sun.faces.config.ConfigureListener&amp;lt;/listener-class&amp;gt;
&amp;lt;/listener&amp;gt;
&lt;/pre&gt;
&lt;p id=&quot;button&quot;&gt;&lt;strong&gt;Conditionally rendering a button disables its click-ability&lt;/strong&gt;&lt;br/&gt;
The next thing I noticed was the Delete button didn&apos;t work when editing a user. It was hidden correctly when adding a user, but clicking on it to delete a user simply refreshes the page. Below is the code I used successfully with MyFaces. For some reason, this doesn&apos;t work with PrimeFaces.&lt;/p&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;
&amp;lt;c:if test=&quot;${not empty userForm.user.id}&quot;&amp;gt;
&amp;lt;h:commandButton value=&quot;#{text&amp;#91;&apos;button.delete&apos;&amp;#93;}&quot; action=&quot;#{userForm.delete}&quot;
    styleClass=&quot;btn&quot; onclick=&quot;return confirmMessage(msgDelConfirm)&quot;/&amp;gt;
&amp;lt;/c:if&amp;gt;
&lt;/pre&gt;
&lt;p&gt;I also tried the following, but no dice. This is currently an &lt;a href=&quot;http://issues.appfuse.org/browse/APF-1366&quot;&gt;open issue&lt;/a&gt;.
&lt;pre class=&quot;brush: xml&quot;&gt;
&amp;lt;h:commandButton rendered=&quot;${not empty userForm.user.id}&quot; value=&quot;#{text&amp;#91;&apos;button.delete&apos;&amp;#93;}&quot; 
    action=&quot;#{userForm.delete}&quot; styleClass=&quot;btn&quot; onclick=&quot;return confirmMessage(msgDelConfirm)&quot;/&amp;gt;
&lt;/pre&gt;
&lt;p id=&quot;bootstrap&quot;&gt;
&lt;strong&gt;The PrimeFaces Bootstrap theme 404s on some images&lt;/strong&gt;&lt;br/&gt;
After integrating PrimeFaces&apos; Bootstrap theme, the following error shows up in server logs.
&lt;/p&gt;
&lt;pre&gt;
[INFO] [talledLocalContainer] Feb 02, 2013 10:40:25 PM com.sun.faces.application.resource.ResourceHandlerImpl logMissingResource
[WARNING] [talledLocalContainer] WARNING: JSF1064: Unable to find or serve resource, images/ui-bg_highlight-hard_70_000000_1x100.png, from library, primefaces-bootstrap.
&lt;/pre&gt;
&lt;p&gt;This seems to have &lt;a href=&quot;http://forum.primefaces.org/viewtopic.php?f=9&amp;t=19250&amp;start=10&quot;&gt;happened before in previous releases&lt;/a&gt; and is currently an &lt;a href=&quot;http://issues.appfuse.org/browse/APF-1367&quot;&gt;open issue&lt;/a&gt;. 
&lt;/p&gt;
&lt;p id=&quot;webtest&quot;&gt;&lt;strong&gt;Canoo WebTest doesn&apos;t work with fileUpload nor to set checkbox values&lt;/strong&gt;&lt;br/&gt;
We use &lt;a href=&quot;http://webtest.canoo.com/webtest/manual/WebTestHome.html&quot;&gt;Canoo WebTest&lt;/a&gt; to run integration tests on the UI in AppFuse. For some reason, performing file uploads and setting checkbox values works fine with MyFaces/Tomahawk, but not with Mojarra/PrimeFaces. I&apos;m not sure if this is caused by the JSF core or the component library, but it &lt;a href=&quot;http://issues.appfuse.org/browse/APF-1368&quot;&gt;remains an open issue&lt;/a&gt;. For now, I&apos;ve just commented out the parts of tests that used to do this.
&lt;/p&gt;
&lt;p&gt;On a related note, getting the real path of a resource from the ServletContext worked fine before the switch, but results in a null value now.&lt;/p&gt;
&lt;pre class=&quot;brush: java&quot;&gt;
String uploadDir = getServletContext().getRealPath(&quot;/resources&quot;) + &quot;/&quot; + request.getRemoteUser() + &quot;/&quot;;
&lt;/pre&gt;
&lt;p id=&quot;javax.faces.resource&quot;&gt;&lt;strong&gt;PrimeFaces resources served up at /javax.faces.resource/* not found&lt;/strong&gt;&lt;br/&gt;While I didn&apos;t have problems with this in AppFuse, I did encounter it in AppFuse Light. I don&apos;t know why there was a difference between the two, but it turned out to be caused by the UrlRewriteFilter and my desire for &lt;a href=&quot;http://raibledesigns.com/rd/entry/extensionless_urls_in_java_web&quot;&gt;extensionless URLs&lt;/a&gt;. The outbound-rule to strip .xhtml from URLs was the culprit. Adding a condition to it solved the problem. Yeah, the condition seems backwards, but it works.
&lt;/p&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;
&amp;lt;outbound-rule match-type=&quot;regex&quot;&amp;gt;
    &amp;lt;condition type=&quot;query-string&quot; operator=&quot;equal&quot;&amp;gt;ln=primefaces&amp;lt;/condition&amp;gt;
    &amp;lt;from&amp;gt;^(.*)\.xhtml(\?.*)?$&amp;lt;/from&amp;gt;
    &amp;lt;to last=&quot;false&quot;&amp;gt;$1$2&amp;lt;/to&amp;gt;
&amp;lt;/outbound-rule&amp;gt;
&lt;/pre&gt;
&lt;p id=&quot;summary&quot;&gt;&lt;strong&gt;Summary&lt;/strong&gt;&lt;br/&gt;
The initial switch to Mojarra/PrimeFaces was pretty easy thanks to Gilberto&apos;s sample project. However, the small issues encountered after that turned out to be quite frustrating and you can see that several are still not fixed. I guess it just goes to show that not all web frameworks are perfect. Hopefully we&apos;ll get these minor issues fixed before the next release. In the meantime, you can checkout the updated demos for &lt;a href=&quot;http://demo.appfuse.org/appfuse-jsf&quot;&gt;AppFuse JSF&lt;/a&gt; and &lt;a href=&quot;http://demo2.appfuse.org/appfuse-light-jsf&quot;&gt;AppFuse Light JSF&lt;/a&gt;.
 </description>          </item>
    <item>
    <guid isPermaLink="true">https://raibledesigns.com/rd/entry/appfuse_2_1_released</guid>
    <title>AppFuse 2.1 Released!</title>
    <dc:creator>Matt Raible</dc:creator>
    <link>https://raibledesigns.com/rd/entry/appfuse_2_1_released</link>
        <pubDate>Mon, 4 Apr 2011 09:38:05 -0600</pubDate>
    <category>Java</category>
    <category>myfaces</category>
    <category>javaee</category>
    <category>ibatis</category>
    <category>appfuse</category>
    <category>springmvc</category>
    <category>tapestry5</category>
    <category>appfuse-light</category>
    <category>jsf2</category>
    <category>hibernate</category>
    <category>jpa</category>
    <category>spring</category>
    <category>struts2</category>
    <category>java</category>
    <category>maven</category>
            <description>&lt;a href=&quot;http://appfuse.org&quot;&gt;&lt;img src=&quot;//static.appfuse.org/images/appfuse-icon.gif&quot; class=&quot;picture&quot; style=&quot;border: 0&quot;&gt;&lt;/a&gt;
The AppFuse Team is pleased to announce the release of AppFuse 2.1. This release includes upgrades to all dependencies to bring them up-to-date with their latest releases. Most notable are JPA 2, JSF 2, Tapestry 5 and Spring 3. In addition, we&apos;ve migrated from XFire to CXF and enabled REST for web services. There&apos;s even a new &lt;b&gt;appfuse-ws&lt;/b&gt; archetype that leverages &lt;a href=&quot;http://enunciate.codehaus.org&quot;&gt;Enunciate&lt;/a&gt; to generate web service endpoints, documentation and downloadable clients. This release fixes many issues with archetypes, improving startup time and allowing jetty:run to be used for quick turnaround while developing. For more details on specific changes see the &lt;a href=&quot;http://appfuse.org/display/APF/Release+Notes+2.1.0&quot; title=&quot;Release Notes 2.1.0&quot;&gt;release notes&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What is AppFuse?&lt;/strong&gt;&lt;br/&gt;AppFuse is an open source project and application that uses open source frameworks to help you develop Web applications with Java quickly and efficiently. It was originally developed to eliminate the ramp-up time when building new web applications. At its core, AppFuse is a project skeleton, similar to the one that&apos;s created by your IDE when you click through a wizard to create a new web project. If you use &lt;a href=&quot;http://appfuse.org/display/APF/Using+JRebel+with+IntelliJ+IDEA&quot;&gt;JRebel with IntelliJ&lt;/a&gt;, you can achieve zero-turnaround in your project and develop features without restarting the server.
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Release Details&lt;/b&gt;&lt;br/&gt;
&lt;a href=&quot;http://static.appfuse.org/archetypes.html&quot;&gt;Archetypes&lt;/a&gt; now include all the source for the web modules so using jetty:run and your IDE will work much smoother now. The backend is still embedded in JARs, enabling you to choose with persistence framework (Hibernate, iBATIS or JPA) you&apos;d like to use. If you want to modify the source for that, &lt;a href=&quot;http://appfuse.org/display/APF/AppFuse+Core+Classes&quot;&gt;add the core classes to your project&lt;/a&gt; or run &quot;appfuse:full-source&quot;. &lt;/p&gt;

&lt;p&gt;AppFuse comes in a number of different flavors. It offers &quot;light&quot;, &quot;basic&quot; and &quot;modular&quot; and archetypes. Light archetypes use an embedded H2 database and contain a simple CRUD example. Light archetypes allow code generation and full-source features, but do not currently support Stripes or Wicket. Basic archetypes have web services using CXF, authentication from Spring Security and features including signup, login, file upload and CSS theming. Modular archetypes are similar to basic archetypes, except they have multiple modules which allows you to separate your services from your web project.&lt;/p&gt;

&lt;p&gt;AppFuse provides archetypes for JSF, Spring MVC, Struts 2 and Tapestry 5. The light archetypes are available for these frameworks, as well as for Spring MVC + FreeMarker, Stripes and Wicket. You can see demos of these archetypes at &lt;a href=&quot;http://demo.appfuse.org&quot;&gt;http://demo.appfuse.org&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;For information on creating a new project, please see the &lt;a href=&quot;http://appfuse.org/display/APF/AppFuse+QuickStart&quot;&gt;QuickStart Guide&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;If you have questions about AppFuse, please read the &lt;a href=&quot;http://appfuse.org/display/APF/FAQ&quot;&gt;FAQ&lt;/a&gt; or join the &lt;a href=&quot;http://appfuse.org/display/APF/Mailing+Lists&quot;&gt;user mailing list&lt;/a&gt;. If you find any issues, please report them on the mailing list or &lt;a href=&quot;http://issues.appfuse.org/secure/CreateIssue%21default.jspa&quot;&gt;create an issue in JIRA&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Thanks to everyone for their help contributing patches, writing documentation and participating on the mailing lists.&lt;/p&gt;
&lt;p style=&quot;border-top: 1px dotted silver; padding-top: 5px; color: #666&quot;&gt;We greatly appreciate the help from &lt;a href=&quot;http://appfuse.org/display/APF/Sponsors&quot; title=&quot;Sponsors&quot; style=&quot;color: #666&quot;&gt;our sponsors&lt;/a&gt;, particularly &lt;a href=&quot;http://www.atlassian.com/c/NPOS/10160&quot; style=&quot;color: #666&quot;&gt;Atlassian&lt;/a&gt;, &lt;a href=&quot;http://contegix.com&quot; style=&quot;color: #666&quot;&gt;Contegix&lt;/a&gt; and &lt;a href=&quot;http://www.jetbrains.com&quot; style=&quot;color: #666&quot;&gt;JetBrains&lt;/a&gt;. Atlassian and Contegix are especially awesome: &lt;a href=&quot;http://raibledesigns.com/rd/entry/appfuse_now_powered_by_contegix&quot; style=&quot;color: #666&quot;&gt;Atlassian has donated licenses to all its products and Contegix has donated an entire server&lt;/a&gt; to the AppFuse project.&lt;/p&gt;&lt;p&gt;</description>          </item>
    <item>
    <guid isPermaLink="true">https://raibledesigns.com/rd/entry/upgrading_to_jsf_2</guid>
    <title>Upgrading to JSF 2</title>
    <dc:creator>Matt Raible</dc:creator>
    <link>https://raibledesigns.com/rd/entry/upgrading_to_jsf_2</link>
        <pubDate>Mon, 7 Mar 2011 13:24:53 -0700</pubDate>
    <category>Java</category>
    <category>urlrewritefilter</category>
    <category>myfaces</category>
    <category>jsf</category>
    <category>richfaces</category>
    <category>springsecurity</category>
    <category>tomahawk</category>
    <category>appfuse</category>
    <category>java</category>
    <category>facelets</category>
            <description>Last week, I spent a few hours upgrading &lt;a href=&quot;http://appfuse.org&quot;&gt;AppFuse&lt;/a&gt; from JSF 1.2 to JSF 2.0. In reality, I upgraded from &lt;a href=&quot;http://myfaces.apache.org&quot;&gt;MyFaces&lt;/a&gt; 1.2.7 to 2.0.4, but all JSF implementations should be the same, right? All in all, it was a pretty easy upgrade with a few minor AppFuse-specific things. My goal in upgrading was to do the bare minimum to get things working and to leave integration of JSF 2 features for a later date.&lt;/p&gt;

&lt;p&gt;In addition to upgrading MyFaces, I had to upgrade Tomahawk by changing the dependency&apos;s artifactId to &lt;strong&gt;tomahawk20&lt;/strong&gt;. I was also able to remove the following listener from my web.xml:
&lt;/p&gt;
&lt;pre class=&quot;brush: xml; toolbar: false&quot;&gt;
&amp;lt;listener&gt;
    &amp;lt;listener-class&gt;org.apache.myfaces.webapp.StartupServletContextListener&amp;lt;/listener-class&gt;
&amp;lt;listener&gt;
&lt;/pre&gt;
&lt;p&gt;After that, I discovered that MyFaces uses a new URI (/javax.faces.resource/) for serving up some of its resource files. I kindly asked Spring Security to ignore these requests by adding the following to my security.xml file.
&lt;/p&gt;
&lt;pre class=&quot;brush: xml; toolbar: false&quot;&gt;
&amp;lt;intercept-url pattern=&quot;/javax.faces.resource/**&quot; filters=&quot;none&quot;/&gt;
&lt;/pre&gt;
&lt;p&gt;Since JSF 2 includes Facelets by default, I tried removing Facelets as a dependency. After doing this, I received the following error:
&lt;/p&gt;
&lt;pre&gt;
ERROR [308855416@qtp-120902214-7] ViewHandlerWrapper.fillChain(158) | Error instantiation parent Faces ViewHandler
java.lang.ClassNotFoundException: com.sun.facelets.FaceletViewHandler
        at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:50)
        at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:244)
        at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:230)
        at org.mortbay.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:401)
        at org.mortbay.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:363)
        at org.ajax4jsf.framework.ViewHandlerWrapper.fillChain(ViewHandlerWrapper.java:144)
        at org.ajax4jsf.framework.ViewHandlerWrapper.calculateRenderKitId(ViewHandlerWrapper.java:68)
        at org.apache.myfaces.lifecycle.DefaultRestoreViewSupport.isPostback(DefaultRestoreViewSupport.java:179)
        at org.apache.myfaces.lifecycle.RestoreViewExecutor.execute(RestoreViewExecutor.java:113)
        at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:171)
        at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:189)
&lt;/pre&gt;
&lt;p&gt;Figuring this was caused by the following element in my web.xml ...
&lt;/p&gt;
&lt;pre class=&quot;brush: xml; toolbar: false&quot;&gt;
&amp;lt;context-param&amp;gt;
    &amp;lt;param-name&amp;gt;org.ajax4jsf.VIEW_HANDLERS&amp;lt;/param-name&amp;gt;
    &amp;lt;param-value&amp;gt;com.sun.facelets.FaceletViewHandler&amp;lt;/param-value&amp;gt;
&amp;lt;/context-param&amp;gt;
&lt;/pre&gt;
&lt;p&gt;... I removed it and tried again. This time I received a NoClassDefFoundError:&lt;/p&gt;
&lt;pre&gt;
java.lang.NoClassDefFoundError: com/sun/facelets/tag/TagHandler
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
        at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
        at org.mortbay.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:392)
        at org.mortbay.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:363)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:247)
        at org.apache.myfaces.shared_impl.util.ClassUtils.classForName(ClassUtils.java:184)
        at org.apache.myfaces.view.facelets.util.ReflectionUtil.forName(ReflectionUtil.java:67)
&lt;/pre&gt;
&lt;p&gt;Since everything seemed to work with Facelets in the classpath, I decided to save this headache for a later date. I entered two issues in AppFuse&apos;s JIRA, one for &lt;a href=&quot;http://issues.appfuse.org/browse/APF-1234&quot;&gt;removing Facelets&lt;/a&gt; and one for &lt;a href=&quot;http://issues.appfuse.org/browse/APF-1233&quot;&gt;replacing Ajax4JSF with RichFaces&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;The next issue I encountered was redirecting from AppFuse&apos;s password hint page. The navigation-rule for this page is as follows:&lt;/p&gt;
&lt;pre class=&quot;brush: xml; toolbar: false&quot;&gt;
&amp;lt;navigation-rule&amp;gt;
    &amp;lt;from-view-id&amp;gt;/passwordHint.xhtml&amp;lt;/from-view-id&amp;gt;
    &amp;lt;navigation-case&amp;gt;
        &amp;lt;from-outcome&amp;gt;success&amp;lt;/from-outcome&amp;gt;
        &amp;lt;to-view-id&amp;gt;/login&amp;lt;/to-view-id&amp;gt;
        &amp;lt;redirect/&amp;gt;
    &amp;lt;/navigation-case&amp;gt;
&amp;lt;/navigation-rule&amp;gt;
&lt;/pre&gt;
&lt;p&gt;With JSF 2.0, the rule changes the URL to /login.xhtml when redirecting (where it was left as /login with 1.2) and it was caught by the security setting in my web.xml that prevents users from viewing raw templates.&lt;/p&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;
&amp;lt;security-constraint&amp;gt;
    &amp;lt;web-resource-collection&amp;gt;
        &amp;lt;web-resource-name&amp;gt;Protect XHTML Templates&amp;lt;/web-resource-name&amp;gt;
        &amp;lt;url-pattern&amp;gt;*.xhtml&amp;lt;/url-pattern&amp;gt;
    &amp;lt;/web-resource-collection&amp;gt;
    &amp;lt;auth-constraint/&amp;gt;
&amp;lt;/security-constraint&amp;gt;
&lt;/pre&gt;
&lt;p&gt;To solve this issue, I had to make a couple of changes:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Comment out the security-constraint in web.xml and move it to Spring Security&apos;s security.xml file.
&lt;pre class=&quot;brush: xml; toolbar: false&quot; style=&quot;margin: 5px 0 0 0&quot;&gt;
&amp;lt;intercept-url pattern=&quot;/**/*.xhtml&quot; access=&quot;ROLE_NOBODY&quot;/&gt;
&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;Add a rule to urlrewrite.xml that redirects back to login (since login.xhtml doesn&apos;t exist and I&apos;m using extensionless URLs).
&lt;pre class=&quot;brush: xml&quot; style=&quot;margin: 5px 0 0 0&quot;&gt;
&amp;lt;rule match-type=&quot;regex&quot;&amp;gt;
    &amp;lt;from&amp;gt;^/login.xhtml$&amp;lt;/from&amp;gt;
    &amp;lt;to type=&quot;redirect&quot;&amp;gt;%{context-path}/login&amp;lt;/to&amp;gt;
&amp;lt;/rule&amp;gt;
&lt;/pre&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;After getting the Password Hint feature passing in the browser, I tried running the integration tests (powered by &lt;a href=&quot;http://webtest.canoo.com&quot;&gt;Canoo WebTest&lt;/a&gt;). The Password Hint test kept failing with the following error:
&lt;/p&gt;
&lt;pre&gt;
[ERROR] /Users/mraible/dev/appfuse/web/jsf/src/test/resources/web-tests.xml:51: JavaScript error loading
page http://localhost:9876/appfuse-jsf-2.1.0-SNAPSHOT/passwordHint?username=admin: syntax error (http://
localhost:9876/appfuse-jsf-2.1.0-SNAPSHOT/javax.faces.resource/oamSubmit.js.jsf?ln=org.apache.myfaces#122)
&lt;/pre&gt;
&lt;p&gt;Figuring this was caused by my hack to &lt;a href=&quot;http://source.appfuse.org/browse/appfuse/trunk/web/jsf/src/main/webapp/passwordHint.xhtml?r=2866&quot;&gt;submit the form when the page was loaded&lt;/a&gt;, I turned to &lt;a href=&quot;http://ocpsoft.com/prettyfaces/&quot;&gt;Pretty Faces&lt;/a&gt;, which allows you to call a method directly from a URL. After adding the Pretty Faces dependencies to my pom.xml, I created a src/main/webapp/WEB-INF/pretty-config.xml file with the following XML:&lt;/p&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;
&amp;lt;url-mapping&amp;gt;
    &amp;lt;pattern value=&quot;/editProfile&quot;/&amp;gt;
    &amp;lt;view-id value=&quot;/userForm.jsf&quot;/&amp;gt;
    &amp;lt;action&amp;gt;#{userForm.edit}&amp;lt;/action&amp;gt;
&amp;lt;/url-mapping&amp;gt;

&amp;lt;url-mapping&amp;gt;
    &amp;lt;pattern value=&quot;/passwordHint/#{username}&quot;/&amp;gt;
    &amp;lt;view-id value=&quot;/passwordHint.jsf&quot;/&amp;gt;
    &amp;lt;action&amp;gt;#{passwordHint.execute}&amp;lt;/action&amp;gt;
&amp;lt;/url-mapping&amp;gt;
&lt;/pre&gt;
&lt;p&gt;This allowed me to remove both editProfile.xhtml and passwordHint.xhtml, both of which simply auto-submitted forms.&lt;/p&gt;
&lt;p&gt;At this point, I figured I&apos;d be good to go and ran my integration tests again. The first thing I discovered was that &quot;.jsf&quot; was being tacked onto my pretty URL, most likely by the UrlRewriteFilter. Adding the following to my PasswordHint.java class solved this.
&lt;/p&gt;
&lt;pre class=&quot;brush: java; toolbar: false&quot;&gt;
if (username.endsWith(&quot;.jsf&quot;)) {
    username = username.substring(0, username.indexOf(&quot;.jsf&quot;));
}
&lt;/pre&gt;
&lt;p&gt;The next thing was a cryptic error that took me a while to figure out.&lt;/p&gt;
&lt;pre&gt;
DEBUG [1152467051@qtp-144702232-0] PasswordHint.execute(38) | Processing Password Hint...
2011-03-05 05:48:52.471:WARN::/passwordHint/admin
com.ocpsoft.pretty.PrettyException: Exception occurred while processing &amp;lt;:#{passwordHint.execute}&gt; null
        at com.ocpsoft.pretty.faces.beans.ActionExecutor.executeActions(ActionExecutor.java:71)
        at com.ocpsoft.pretty.faces.event.PrettyPhaseListener.processEvent(PrettyPhaseListener.java:214)
        at com.ocpsoft.pretty.faces.event.PrettyPhaseListener.afterPhase(PrettyPhaseListener.java:108)
        at org.apache.myfaces.lifecycle.PhaseListenerManager.informPhaseListenersAfter(PhaseListenerManager.java:111)
        at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:185)
        at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:189)
&lt;/pre&gt;
&lt;p&gt;Digging into the bowels of MyFaces, I discovered a class was looking for a viewId with an extension and no view-id was being set. Adding the following to the top of my execute() method solved this.
&lt;/p&gt;
&lt;pre class=&quot;brush: java; toolbar: false&quot;&gt;
getFacesContext().getViewRoot().setViewId(&quot;/passwordHint.xhtml&quot;);
&lt;/pre&gt;
&lt;p&gt;After making this change, all AppFuse&apos;s integration tests are passing and the upgrade seems complete. The only other issues I encountered were logging-related. The first is an error about Tomahawk that doesn&apos;t seem to affect anything.
&lt;/p&gt;
&lt;pre&gt;
Mar 5, 2011 6:44:01 AM com.sun.facelets.compiler.TagLibraryConfig loadImplicit
SEVERE: Error Loading Library: jar:file:/Users/mraible/.m2/repository/org/apache/myfaces/tomahawk/tomahawk20/1.1.10/tomahawk20-1.1.10.jar!/META-INF/tomahawk.taglib.xml
java.io.IOException: Error parsing [jar:file:/Users/mraible/.m2/repository/org/apache/myfaces/tomahawk/tomahawk20/1.1.10/tomahawk20-1.1.10.jar!/META-INF/tomahawk.taglib.xml]: 
        at com.sun.facelets.compiler.TagLibraryConfig.create(TagLibraryConfig.java:410)
        at com.sun.facelets.compiler.TagLibraryConfig.loadImplicit(TagLibraryConfig.java:431)
        at com.sun.facelets.compiler.Compiler.initialize(Compiler.java:87)
        at com.sun.facelets.compiler.Compiler.compile(Compiler.java:104)
&lt;/pre&gt;
&lt;p&gt;The second is excessive logging from MyFaces. As far as I can tell, this is because MyFaces switched to java.util.logging instead of commons logging. With all the frameworks that AppFuse leverages, I think it has all the logging frameworks in its classpath now. I was hoping to fix this by &lt;a href=&quot;http://old.nabble.com/Turn-down-logging-in-2.0.4--td31068698.html&quot;&gt;posting a message to the mailing list&lt;/a&gt;, but haven&apos;t received a reply yet.
&lt;/p&gt;
&lt;pre&gt;
[WARNING] [talledLocalContainer] Mar 5, 2011 6:50:25 AM org.apache.myfaces.config.annotation.TomcatAnnotationLifecycleProvider newInstance
[WARNING] [talledLocalContainer] INFO: Creating instance of org.appfuse.webapp.action.BasePage
[WARNING] [talledLocalContainer] Mar 5, 2011 6:50:25 AM org.apache.myfaces.config.annotation.TomcatAnnotationLifecycleProvider destroyInstance
[WARNING] [talledLocalContainer] INFO: Destroy instance of org.appfuse.webapp.action.BasePage
&lt;/pre&gt;
&lt;p&gt;After successfully upgrading AppFuse, I turned to AppFuse Light, where things were &lt;a href=&quot;http://source.appfuse.org/changelog/appfuse-light/?cs=243&quot;&gt;much easier&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;
Now that AppFuse uses JSF 2, I hope to start leveraging some of its &lt;a href=&quot;http://www.ibm.com/developerworks/java/library/j-jsf2fu1/index.html&quot;&gt;new features&lt;/a&gt;. If you&apos;re yearning to get started with them today, I invite you to &lt;a href=&quot;http://appfuse.org/display/APF/Source+Repository&quot;&gt;grab the source&lt;/a&gt; and start integrating them yourself.</description>          </item>
    <item>
    <guid isPermaLink="true">https://raibledesigns.com/rd/entry/appfuse_2_1_milestone_2</guid>
    <title>AppFuse 2.1 Milestone 2 Released</title>
    <dc:creator>Matt Raible</dc:creator>
    <link>https://raibledesigns.com/rd/entry/appfuse_2_1_milestone_2</link>
        <pubDate>Mon, 15 Nov 2010 15:28:57 -0700</pubDate>
    <category>Java</category>
    <category>myfaces</category>
    <category>appfuse-light</category>
    <category>webframeworks</category>
    <category>java</category>
    <category>appfuse</category>
    <category>jsf</category>
    <category>springmvc</category>
    <category>freemarker</category>
    <category>wicket</category>
    <category>maven2</category>
    <category>spring</category>
    <category>maven</category>
    <category>stripes</category>
    <category>hibernate</category>
    <category>java5</category>
    <category>ibatis</category>
    <category>archetypes</category>
    <category>jpa</category>
    <category>tapestry</category>
    <category>maven3</category>
    <category>struts2</category>
            <description>I&apos;m pleased to announce the 2nd milestone release of AppFuse 2.1. This release includes upgrades to all dependencies to bring them up-to-date with their latest releases. Most notable are Spring 3 and Struts 2.1. This release fixes many issues with archetypes and contains many improvements to support Maven 3. For more details on specific changes see the &lt;a href=&quot;http://appfuse.org/display/APF/Release+Notes+2.1.0+M2&quot;&gt;2.1.0 M2 release notes&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;What is AppFuse?&lt;/strong&gt;&lt;br/&gt;
AppFuse is an open source project and application that uses open source frameworks to help you develop Web applications quickly and efficiently. It was originally developed to eliminate the ramp-up time when building new web applications. At its core, AppFuse is a project skeleton, similar to the one that&apos;s created by your IDE when you click through a wizard to create a new web project. If you use &lt;a href=&quot;http://raibledesigns.com/rd/entry/using_jrebel_with_intellij_idea&quot;&gt;JRebel with AppFuse&lt;/a&gt;, you can achieve zero-turnaround in your project and develop features without restarting the server.
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;
Release Details&lt;/strong&gt;&lt;br/&gt;
Archetypes now include all the source for the web modules so using jetty:run and your IDE will work much smoother now. The backend is still embedded in JARs, enabling you to choose with persistence framework (Hibernate, iBATIS or JPA) you&apos;d like to use. If you want to modify the source for that, &lt;a href=&quot;http://appfuse.org/display/APF/AppFuse+Core+Classes&quot;&gt;add the core classes to your project&lt;/a&gt; or run &quot;appfuse:full-source&quot;.
&lt;/p&gt;
&lt;p&gt;
AppFuse comes in a number of different flavors. It offers &quot;light&quot;, &quot;basic&quot; and &quot;modular&quot; and archetypes. Light archetypes use an embedded H2 database and contain a simple CRUD example. In the final 2.1.0 release, the light archetypes will allow code generation like the basic and modular archetypes. Basic archetypes have web services using CXF, authentication from Spring Security and features including signup, login, file upload and CSS theming. Modular archetypes are similar to basic archetypes, except they have multiple modules which allows you to separate your services from your web project.
&lt;/p&gt;
&lt;p&gt;
AppFuse provides &lt;a href=&quot;http://static.appfuse.org/archetype.html&quot;&gt;archetypes&lt;/a&gt; for JSF, Spring MVC, Struts 2 and Tapestry 5. The light archetypes are available for these frameworks, as well as for Spring MVC + FreeMarker, Stripes and Wicket.
&lt;/p&gt;
&lt;p&gt;
Please note that this release does not contain updates to the documentation. Code generation will work, but it&apos;s likely that some content in the &lt;a href=&quot;http://appfuse.org/display/APF/Tutorials&quot;&gt;tutorials&lt;/a&gt; won&apos;t match. For example, you can use annotations (vs. XML) for Spring MVC and Tapestry is a whole new framework. I&apos;ll be working on documentation over the next several weeks in preparation for the 2.1 final release.
&lt;/p&gt;
&lt;p&gt;
For information on creating a new project, please see the &lt;a href=&quot;http://appfuse.org/display/APF/AppFuse+QuickStart&quot;&gt;QuickStart Guide&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
If you have questions about AppFuse, please read the &lt;a href=&quot;http://appfuse.org/display/APF/FAQ&quot;&gt;FAQ&lt;/a&gt; or join the &lt;a href=&quot;http://appfuse.org/display/APF/Mailing+Lists&quot;&gt;user mailing list&lt;/a&gt;. If you find bugs, please &lt;a href=&quot;http://issues.appfuse.org/browse/APF&quot;&gt;create an issue in JIRA&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
Thanks to everyone for their help contributing patches, writing documentation and participating on the mailing lists.
</description>          </item>
    <item>
    <guid isPermaLink="true">https://raibledesigns.com/rd/entry/appfuse_2_1_milestone_1</guid>
    <title>AppFuse 2.1 Milestone 1 Released</title>
    <dc:creator>Matt Raible</dc:creator>
    <link>https://raibledesigns.com/rd/entry/appfuse_2_1_milestone_1</link>
        <pubDate>Thu, 19 Nov 2009 07:16:36 -0700</pubDate>
    <category>Java</category>
    <category>webframeworks</category>
    <category>tapestry</category>
    <category>archetypes</category>
    <category>appfuse-light</category>
    <category>appfuse</category>
    <category>freemarker</category>
    <category>java</category>
    <category>wicket</category>
    <category>maven2</category>
    <category>spring</category>
    <category>springmvc</category>
    <category>jsf</category>
    <category>stripes</category>
    <category>maven</category>
    <category>struts2</category>
    <category>hibernate</category>
    <category>java5</category>
    <category>myfaces</category>
    <category>ibatis</category>
    <category>jpa</category>
            <description>&lt;a href=&quot;http://appfuse.org&quot;&gt;&lt;img src=&quot;//appfuse.dev.java.net/images/icon.gif&quot; class=&quot;picture&quot; style=&quot;border: 0&quot;&gt;&lt;/a&gt;
The AppFuse Team is pleased to announce the first milestone release of AppFuse 2.1. This release includes upgrades to all dependencies to bring them up-to-date with their latest releases. Most notable are &lt;a href=&quot;http://raibledesigns.com/rd/entry/upgrading_hibernate_to_3_4&quot;&gt;Hibernate&lt;/a&gt;, &lt;a href=&quot;http://raibledesigns.com/rd/entry/moving_from_spring_s_xml&quot;&gt;Spring&lt;/a&gt; and Tapestry 5. 
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What is AppFuse?&lt;/strong&gt;&lt;br/&gt;
AppFuse is an open source project and application that uses open source tools built on the Java platform to help you develop Web applications quickly and efficiently. It was originally developed to eliminate the ramp-up time found when building new web applications for customers. At its core, AppFuse is a project skeleton, similar to the one that&apos;s created by your IDE when you click through a wizard to create a new web project.
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Release Details&lt;/strong&gt;&lt;br/&gt;
&lt;a href=&quot;http://static.appfuse.org/archetypes.html&quot;&gt;Archetypes&lt;/a&gt; now include all the source for the web modules so using &lt;em&gt;jetty:run&lt;/em&gt; and your IDE will work much smoother now. The backend is still embedded in JARs, enabling you to choose which persistence framework (Hibernate, iBATIS or JPA) you&apos;d like to use. If you want to modify the source for that, &lt;a href=&quot;http://appfuse.org/display/APF/AppFuse+Core+Classes&quot;&gt;add the core classes to your project&lt;/a&gt; or run &lt;em&gt;appfuse:full-source&lt;/em&gt;. 
&lt;/p&gt;
&lt;p&gt;
In addition, AppFuse Light has been &lt;a href=&quot;http://raibledesigns.com/rd/entry/appfuse_light_converted_to_maven&quot;&gt;converted to Maven&lt;/a&gt; and has archetypes available. AppFuse provides archetypes for JSF, Spring MVC, Struts 2 and Tapestry 5. The &lt;em&gt;light&lt;/em&gt; archetypes are available for these frameworks, as well as for Spring MVC + FreeMarker, Stripes and Wicket.
&lt;/p&gt;
&lt;p&gt;Other notable improvements:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Added &lt;a href=&quot;http://issues.appfuse.org/browse/APF-267&quot;&gt;Compass support&lt;/a&gt; thanks to a patch from &lt;a href=&quot;http://www.kimchy.org/&quot;&gt;Shay Banon&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Upgraded from &lt;a href=&quot;http://issues.appfuse.org/browse/APF-1125&quot;&gt;XFire to CXF&lt;/a&gt; for Web Services.&lt;/li&gt;
&lt;li&gt;Moved Maven repository to &lt;a href=&quot;https://docs.sonatype.com/display/NX/OSS+Repository+Hosting&quot;&gt;Sonatype&apos;s OSS Repository Hosting&lt;/a&gt; for snapshots and releasing to Maven Central. There are no longer any AppFuse-specific artifacts, all are available in central. Thanks to &lt;a href=&quot;http://sonatype.com&quot;&gt;Sonatype&lt;/a&gt; for this great service and its &lt;a href=&quot;http://raibledesigns.com/rd/entry/nexus_is_a_kick_ass&quot;&gt;excellent repository manager&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Upgraded to Canoo WebTest 3.0. &lt;em&gt;Now if we could just get its &lt;a href=&quot;http://people.apache.org/~sgoeschl/download/maven-plugins/webtest-maven-plugin/site/index.html&quot;&gt;Maven Plugin&lt;/a&gt; moved to Codehaus.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Added &lt;a href=&quot;http://raibledesigns.com/rd/entry/ajaxified_body&quot;&gt;Ajaxified Body&lt;/a&gt; to AppFuse Light archetypes.&lt;/li&gt;
&lt;li&gt;Infrastructure upgrades, including &lt;a href=&quot;http://issues.appfuse.org/&quot;&gt;JIRA 4&lt;/a&gt;, &lt;a href=&quot;http://appfuse.org/&quot;&gt;Confluence 3&lt;/a&gt;, &lt;a href=&quot;http://source.appfuse.org&quot;&gt;FishEye 2&lt;/a&gt;, &lt;a href=&quot;http://builds.appfuse.org&quot;&gt;Bamboo 2&lt;/a&gt; and &lt;a href=&quot;http://login.appfuse.org&quot;&gt;Crowd 1.6&lt;/a&gt;. Many thanks to &lt;a href=&quot;http://www.atlassian.com/c/NPOS/10160&quot;&gt;Atlassian&lt;/a&gt; and &lt;a href=&quot;http://contegix.com&quot;&gt;Contegix&lt;/a&gt; for their excellent products and services.&lt;/li&gt;
&lt;li&gt;For more details on specific changes see the &lt;a href=&quot;http://appfuse.org/display/APF/Release+Notes+2.1.0+M1&quot; title=&quot;Release Notes 2.1.0 M1&quot;&gt;release notes&lt;/a&gt;.
&lt;/ul&gt;
&lt;p&gt;Please note that this release does not contain updates to the documentation. Code generation will work, but it&apos;s likely that some content in the &lt;a href=&quot;http://appfuse.org/display/APF/Tutorials&quot;&gt;tutorials&lt;/a&gt; won&apos;t match. For example, you can use annotations (vs. XML) for dependency injection and Tapestry is a whole new framework. I&apos;ll be working on documentation over the next several weeks in preparation for Milestone 2.
&lt;/p&gt;
&lt;p&gt;AppFuse is available as several Maven archetypes. For information on creating a new project, please see the &lt;a href=&quot;http://appfuse.org/display/APF/AppFuse+QuickStart&quot; title=&quot;AppFuse QuickStart&quot;&gt;QuickStart Guide&lt;/a&gt;.
&lt;/p&gt;
&lt;p class=&quot;smokey&quot;&gt;
To learn more about AppFuse, please read Ryan Withers&apos; &lt;a href=&quot;http://www.ociweb.com/jnb/jnbMay2008.html&quot;&gt;Igniting your applications with AppFuse&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;The 2.x series of AppFuse has a minimum requirement of the following specification versions:&lt;/p&gt;

&lt;ul class=&quot;glassList&quot;&gt;
	&lt;li&gt;Java Servlet 2.4 and JSP 2.0 (2.1 for JSF)&lt;/li&gt;
	&lt;li&gt;Java 5+&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you have questions about AppFuse, please read the &lt;a href=&quot;http://appfuse.org/display/APF/FAQ&quot; title=&quot;FAQ&quot;&gt;FAQ&lt;/a&gt; or join the &lt;a href=&quot;http://appfuse.org/display/APF/Mailing+Lists&quot; title=&quot;Mailing Lists&quot;&gt;user mailing list&lt;/a&gt;. If you find bugs, please &lt;a href=&quot;http://issues.appfuse.org/secure/CreateIssue!default.jspa&quot;&gt;create an issue in JIRA&lt;/a&gt;.&lt;/p&gt; 

&lt;p&gt;Thanks to everyone for their help contributing code, writing documentation, posting to the mailing lists, and logging issues. </description>          </item>
    <item>
    <guid isPermaLink="true">https://raibledesigns.com/rd/entry/appfuse_2_0_2_released</guid>
    <title>AppFuse 2.0.2 Released</title>
    <dc:creator>Matt Raible</dc:creator>
    <link>https://raibledesigns.com/rd/entry/appfuse_2_0_2_released</link>
        <pubDate>Sun, 11 May 2008 23:25:40 -0600</pubDate>
    <category>Java</category>
    <category>myfaces</category>
    <category>jpa</category>
    <category>java</category>
    <category>tapestry</category>
    <category>jsf</category>
    <category>springmvc</category>
    <category>struts2</category>
    <category>java5</category>
    <category>ibatis</category>
    <category>maven2</category>
    <category>spring</category>
    <category>hibernate</category>
    <category>appfuse</category>
            <description>&lt;a href=&quot;http://appfuse.org&quot;&gt;&lt;img src=&quot;//appfuse.dev.java.net/images/icon.gif&quot; class=&quot;picture&quot; style=&quot;border: 0&quot;&gt;&lt;/a&gt;
The AppFuse Team is pleased to announce the release of AppFuse 2.0.2. This release includes upgrades to Spring Security 2.0, jMock 2.4, the ability to customize code generation templates and many bug fixes.&lt;/p&gt;

&lt;p&gt;For information on upgrading from 2.0.1, see the &lt;a href=&quot;http://appfuse.org/display/APF/Release+Notes+2.0.2&quot; title=&quot;Release Notes 2.0.2&quot;&gt;Release Notes&lt;/a&gt; or &lt;a href=&quot;http://appfuse.org/display/APF/Release+Notes+2.0.2#ReleaseNotes2.0.2-changelog&quot;&gt;changelog&lt;/a&gt;. AppFuse 2.0.2 is available as a Maven archetype. For information on creating a new project using AppFuse, please see the &lt;a href=&quot;http://appfuse.org/display/APF/AppFuse+QuickStart&quot; title=&quot;AppFuse QuickStart&quot;&gt;QuickStart Guide&lt;/a&gt; or the &lt;a href=&quot;http://appfuse.org/display/APF/Demos+and+Videos&quot; title=&quot;Demos and Videos&quot;&gt;demos and videos&lt;/a&gt;.&lt;/p&gt;

&lt;p class=&quot;smokey&quot;&gt;
To learn more about AppFuse, please read Ryan Withers&apos; &lt;a href=&quot;http://www.ociweb.com/jnb/jnbMay2008.html&quot;&gt;Igniting your applications with AppFuse&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;The 2.0 series of AppFuse has a minimum requirement of the following specification versions:&lt;/p&gt;

&lt;ul class=&quot;glassList&quot;&gt;
	&lt;li&gt;Java Servlet 2.4 and JSP 2.0 (2.1 for JSF)&lt;/li&gt;
	&lt;li&gt;Java 5+&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you&apos;ve used AppFuse 1.x, but not 2.x, you&apos;ll want to read the &lt;a href=&quot;http://appfuse.org/display/APF/FAQ&quot; title=&quot;FAQ&quot;&gt;FAQ&lt;/a&gt;.  Join the &lt;a href=&quot;http://appfuse.org/display/APF/Mailing+Lists&quot; title=&quot;Mailing Lists&quot;&gt;user mailing list&lt;/a&gt; if you have any questions. 

&lt;p&gt;Thanks to everyone for their help contributing code, writing documentation, posting to the mailing lists, and logging issues. &lt;/p&gt;

&lt;p class=&quot;smokey&quot;&gt;
Please post any issues you have with this release to the &lt;a href=&quot;http://www.nabble.com/-ANN--AppFuse-2.0.2-Released-td17181660s2369.html&quot;&gt;mailing list&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;</description>          </item>
    <item>
    <guid isPermaLink="true">https://raibledesigns.com/rd/entry/appfuse_light_1_8_2</guid>
    <title>AppFuse Light 1.8.2 Released</title>
    <dc:creator>Matt Raible</dc:creator>
    <link>https://raibledesigns.com/rd/entry/appfuse_light_1_8_2</link>
        <pubDate>Sun, 11 May 2008 22:16:17 -0600</pubDate>
    <category>Java</category>
    <category>appfuse</category>
    <category>wicket</category>
    <category>jdo</category>
    <category>hibernate</category>
    <category>springmvc</category>
    <category>freemarker</category>
    <category>springjdbc</category>
    <category>struts</category>
    <category>velocity</category>
    <category>ibatis</category>
    <category>css</category>
    <category>stripes</category>
    <category>myfaces</category>
    <category>acegi</category>
    <category>jpox</category>
    <category>ojb</category>
    <category>ajax</category>
    <category>jsp</category>
            <description>AppFuse Light 1.8.2 is a bug fixes release that includes upgrades for Spring, Spring Security, Hibernate, Wicket, Tapestry and many others. In addition, Spring bean definitions were replaced with annotations (@Repository, @Service and @Controller). See the &lt;a href=&quot;http://tinyurl.com/6m5kjx&quot;&gt;Release Notes&lt;/a&gt; for more information on what&apos;s changed since the &lt;a href=&quot;http://raibledesigns.com/rd/entry/appfuse_light_1_8_1&quot;&gt;last release&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
AppFuse Light now offers 60 possible combinations for &lt;a href=&quot;https://appfuse-light.dev.java.net/servlets/ProjectDocumentList?folderID=9159&quot;&gt;
download&lt;/a&gt;:
&lt;/p&gt;
&lt;ul class=&quot;glassList&quot;&gt;&lt;li&gt;&lt;strong&gt;Web Frameworks:&lt;/strong&gt; JSF (MyFaces), Spring MVC (with
Ajax, Acegi Security, JSP, FreeMarker or Velocity), Stripes, Struts
1.x, Struts 2.x, Tapestry, WebWork, Wicket&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Persistence Frameworks:&lt;/strong&gt; Hibernate, iBATIS, JDO (JPOX), OJB, Spring JDBC&lt;/li&gt;&lt;/ul&gt;
&lt;p style=&quot;text-align: center; color: #666&quot;&gt;
&lt;a href=&quot;http://static.raibledesigns.com/repository/images/appfuse-light-1.8-beta.gif&quot; rel=&quot;lightbox&quot; title=&quot;Screenshot of 1.8 with CSS Framework&quot;&gt;&lt;img src=&quot;//static.raibledesigns.com/repository/images/appfuse-light-1.8-beta_sm.gif&quot; width=&quot;300&quot; height=&quot;225&quot; alt=&quot;AppFuse Light Screenshot - click on the box at the bottom right of AL to activate StyleSheet Switcher&quot; style=&quot;border: 1px solid silver&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
If you have any questions about this release, please subscribe to the AppFuse user mailing list by sending a blank e-mail to 
&lt;a href=&quot;mailto:users-subscribe@appfuse.dev.java.net&quot;&gt;users-subscribe@appfuse.dev.java.net&lt;/a&gt;. You can also post questions in a forum-like fashion using Nabble: &lt;a href=&quot;http://appfuse.org/forums&quot;&gt;http://appfuse.org/forum/user&lt;/a&gt;.
</description>          </item>
    <item>
    <guid isPermaLink="true">https://raibledesigns.com/rd/entry/appfuse_light_1_8_1</guid>
    <title>AppFuse Light 1.8.1 Released: includes upgrades to Spring 2.5 and Wicket 1.3</title>
    <dc:creator>Matt Raible</dc:creator>
    <link>https://raibledesigns.com/rd/entry/appfuse_light_1_8_1</link>
        <pubDate>Thu, 29 Nov 2007 09:28:06 -0700</pubDate>
    <category>Java</category>
    <category>freemarker</category>
    <category>jdo</category>
    <category>struts</category>
    <category>hibernate</category>
    <category>appfuse</category>
    <category>springmvc</category>
    <category>wicket</category>
    <category>springjdbc</category>
    <category>velocity</category>
    <category>ajax</category>
    <category>jsp</category>
    <category>stripes</category>
    <category>css</category>
    <category>jpox</category>
    <category>myfaces</category>
    <category>ojb</category>
    <category>ibatis</category>
    <category>acegi</category>
            <description>&lt;a href=&quot;http://appfuse-light.dev.java.net&quot;&gt;AppFuse Light&lt;/a&gt; 1.8.1 is a bug fixes release that includes an upgrade to Spring 2.5 and Wicket 1.3 RC1. See the &lt;a href=&quot;http://tinyurl.com/2r4fd8&quot;&gt;Release Notes&lt;/a&gt; for more information on what&apos;s changed since the &lt;a href=&quot;http://raibledesigns.com/rd/entry/appfuse_light_1_8_released&quot;&gt;last release&lt;/a&gt;.
&lt;/p&gt;
&lt;p class=&quot;smokey&quot;&gt;
What is AppFuse Light? &lt;a href=&quot;?&quot; onclick=&quot;Effect.toggle(&apos;whatisappfuselight&apos;, &apos;blind&apos;); return false&quot;&gt;Click here&lt;/a&gt; to find out.
&lt;/p&gt;
&lt;p style=&quot;display: none; border: 1px solid #F0C000;
 background-color: #FFFFCE;
 text-align:left;
 margin-top: 5px;
 margin-bottom: 5px; padding: 10px&quot; id=&quot;whatisappfuselight&quot;&gt;
&lt;a href=&quot;http://appfuse-light.dev.java.net&quot;&gt;AppFuse Light&lt;/a&gt; is a lightweight version of &lt;a href=&quot;http://appfuse.org&quot;&gt;AppFuse&lt;/a&gt;.
        I was inspired to create it while writing &lt;a href=&quot;http://springlive.com&quot;&gt;Spring Live&lt;/a&gt; and 
        looking at the &lt;em&gt;struts-blank&lt;/em&gt; and &lt;em&gt;webapp-minimal&lt;/em&gt; 
        applications that ship with Struts and Spring, respectively.
        These &quot;starter&quot; apps were not robust enough for me, and I wanted 
        something like AppFuse, only simpler. 
&lt;br/&gt;&lt;br/&gt;
AppFuse Light is designed to show Java Web Developers how to start
        a bare-bones webapp using a &lt;a href=&quot;http://www.springframework.org&quot;&gt;
        Spring&lt;/a&gt;-managed middle-tier backend and &lt;a href=&quot;http://www.hibernate.org&quot;&gt;
        Hibernate&lt;/a&gt; for persistence. By default, AppFuse Light uses Spring for
        its MVC framework, but you can change it to 
        &lt;a href=&quot;http://myfaces.apache.org&quot;&gt;JSF/MyFaces&lt;/a&gt;,
        &lt;a href=&quot;http://mc4j.org/confluence/display/stripes/Home&quot;&gt;Stripes&lt;/a&gt;,
        &lt;a href=&quot;http://struts.apache.org&quot;&gt;Struts 1.x&lt;/a&gt;, 
        &lt;a href=&quot;http://struts.apache.org/2.x/&quot;&gt;Struts 2.x&lt;/a&gt;,
        &lt;a href=&quot;http://opensymphony.com/webwork&quot;&gt;WebWork&lt;/a&gt;, 
        &lt;a href=&quot;http://tapestry.apache.org&quot;&gt;Tapestry&lt;/a&gt; or
        &lt;a href=&quot;http://wicket.apache.org/&quot;&gt;Wicket&lt;/a&gt;. In addition, there&apos;s a
        number of extras for Spring MVC, including &lt;a href=&quot;http://velocity.apache.org&quot;&gt;Velocity&lt;/a&gt; and &lt;a href=&quot;http://freemarker.org&quot;&gt;FreeMarker&lt;/a&gt; versions, Ajax
        support and &lt;a href=&quot;http://acegisecurity.org&quot;&gt;Acegi Security&lt;/a&gt; support.
&lt;br/&gt;&lt;br/&gt;
This project was formerly named &lt;a href=&quot;http://raibledesigns.com/rd/entry/equinox_a_k_a_appfuse1&quot;&gt;Equinox&lt;/a&gt; and has been under development since April 2004.
&lt;/p&gt;
&lt;p&gt;
AppFuse Light now offers 60 possible combinations for &lt;a href=&quot;https://appfuse-light.dev.java.net/servlets/ProjectDocumentList?folderID=8439&quot;&gt;
download&lt;/a&gt;:
&lt;/p&gt;
&lt;ul class=&quot;glassList&quot;&gt;&lt;li&gt;&lt;strong&gt;Web Frameworks:&lt;/strong&gt; JSF (MyFaces), Spring MVC (with
Ajax, Acegi Security, JSP, FreeMarker or Velocity), Stripes, Struts
1.x, Struts 2.x, Tapestry, WebWork, Wicket&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Persistence Frameworks:&lt;/strong&gt; Hibernate, iBATIS, JDO (JPOX), OJB, Spring JDBC&lt;/li&gt;&lt;/ul&gt;
&lt;p style=&quot;text-align: center; color: #666&quot;&gt;
&lt;a href=&quot;http://static.raibledesigns.com/repository/images/appfuse-light-1.8-beta.gif&quot; rel=&quot;lightbox&quot; title=&quot;Screenshot of 1.8 with CSS Framework&quot;&gt;&lt;img src=&quot;//static.raibledesigns.com/repository/images/appfuse-light-1.8-beta_sm.gif&quot; width=&quot;300&quot; height=&quot;225&quot; alt=&quot;AppFuse Light Screenshot - click on the box at the bottom right of AL to activate StyleSheet Switcher&quot; style=&quot;border: 1px solid silver&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
If you have any questions about this release, please subscribe to the AppFuse user mailing list by sending a blank e-mail to 
&lt;a href=&quot;mailto:users-subscribe@appfuse.dev.java.net&quot;&gt;users-subscribe@appfuse.dev.java.net&lt;/a&gt;. You can also post questions in a forum-like fashion using Nabble: &lt;a href=&quot;http://appfuse.org/forums&quot;&gt;http://appfuse.org/forum/user&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
If you&apos;re a developer of one of the frameworks that AppFuse Light uses - I&apos;d love a code review to make sure I&apos;m &quot;up to snuff&quot; on how to use your framework. I&apos;m also more than willing to give commit rights if you&apos;d like to improve the implementation of your framework.
&lt;/p&gt;
&lt;p&gt;Live demos are available at:
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://demo2.appfuse.org/appfuse-light&quot;&gt;Spring&lt;/a&gt; &amp;middot; &lt;a href=&quot;http://demo2.appfuse.org/appfuse-light-ajax&quot;&gt;Spring + Ajax&lt;/a&gt; 
            &amp;middot; &lt;a href=&quot;http://demo2.appfuse.org/appfuse-light-security&quot;&gt;Spring + Acegi&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://demo2.appfuse.org/appfuse-light-jsf&quot;&gt;MyFaces + Facelets&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://demo2.appfuse.org/appfuse-light-stripes&quot;&gt;Stripes&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://demo2.appfuse.org/appfuse-light-struts&quot;&gt;Struts 1&lt;/a&gt; &amp;middot; &lt;a href=&quot;http://demo2.appfuse.org/appfuse-light-struts2&quot;&gt;Struts 2&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://demo2.appfuse.org/appfuse-light-tapestry&quot;&gt;Tapestry&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://demo2.appfuse.org/appfuse-light-webwork&quot;&gt;WebWork&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://demo2.appfuse.org/appfuse-light-wicket&quot;&gt;Wicket&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;What&apos;s on tap for AppFuse Light 2.0? Here&apos;s what I&apos;m hoping to do:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Drop the seldom-used persistence frameworks: JDBC, JDO and OJB.&lt;/li&gt;
&lt;li&gt;Drop Struts 1.x and WebWork as web frameworks (replaced by Struts 2).&lt;/li&gt;
&lt;li&gt;Support the same persistence frameworks as AppFuse: Hibernate,
iBATIS and JPA.&lt;/li&gt;
&lt;li&gt;Re-use appfuse-service, appfuse-hibernate, appfuse-ibatis and
appfuse-jpa in AppFuse Light. I&apos;ll likely include the core classes
(User, Role) since AppFuse Light is more &quot;raw&quot; than AppFuse.&lt;/li&gt;
&lt;li&gt;Require Java 5.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Let me know if you disagree with any of these items or would like to see other enhancements.</description>          </item>
    <item>
    <guid isPermaLink="true">https://raibledesigns.com/rd/entry/appfuse_2_0_1_released</guid>
    <title>AppFuse 2.0.1 Released</title>
    <dc:creator>Matt Raible</dc:creator>
    <link>https://raibledesigns.com/rd/entry/appfuse_2_0_1_released</link>
        <pubDate>Mon, 26 Nov 2007 09:29:43 -0700</pubDate>
    <category>Java</category>
    <category>appfuse</category>
    <category>tapestry</category>
    <category>java</category>
    <category>spring</category>
    <category>jsf</category>
    <category>maven2</category>
    <category>springmvc</category>
    <category>jpa</category>
    <category>java5</category>
    <category>struts2</category>
    <category>hibernate</category>
    <category>myfaces</category>
    <category>ibatis</category>
            <description>The AppFuse Team is pleased to announce the release of AppFuse 2.0.1. This release squashes a number of bugs and includes an upgrade to Spring 2.5. To learn more about Spring 2.5&apos;s features, see InfoQ&apos;s &lt;span class=&quot;nobr&quot;&gt;&lt;a href=&quot;http://www.infoq.com/articles/spring-2.5-part-1&quot; rel=&quot;nofollow&quot;&gt;What&apos;s New in Spring 2.5: Part 1&lt;/a&gt;&lt;/span&gt; article.&lt;/p&gt;

&lt;p&gt;For information on upgrading from 2.0, see the &lt;a href=&quot;http://appfuse.org/display/APF/Release+Notes+2.0.1&quot; title=&quot;Release Notes 2.0.1&quot;&gt;2.0.1 Release Notes&lt;/a&gt; or &lt;a href=&quot;http://appfuse.org/display/APF/Release+Notes+2.0.1#ReleaseNotes2.0.1-changelog&quot;&gt;changelog&lt;/a&gt;. AppFuse 2.0.1 is available as a Maven archetype. For information on creating a new project using AppFuse, please see the &lt;a href=&quot;http://appfuse.org/display/APF/AppFuse+QuickStart&quot; title=&quot;AppFuse QuickStart&quot;&gt;QuickStart Guide&lt;/a&gt; or the &lt;a href=&quot;http://appfuse.org/display/APF/Demos+and+Videos&quot; title=&quot;Demos and Videos&quot;&gt;demos and videos&lt;/a&gt;. &lt;/p&gt;
&lt;p class=&quot;smokey&quot;&gt;
What is AppFuse? &lt;a href=&quot;?&quot; onclick=&quot;Effect.toggle(&apos;whatisappfuse&apos;, &apos;blind&apos;); return false&quot;&gt;Click here&lt;/a&gt; to find out.
&lt;/p&gt;
&lt;p style=&quot;display: none; border: 1px solid #F0C000;
 background-color: #FFFFCE;
 text-align:left;
 margin-top: 5px;
 margin-bottom: 5px; padding: 10px&quot; id=&quot;whatisappfuse&quot;&gt;
&lt;a href=&quot;http://appfuse.org&quot;&gt;AppFuse&lt;/a&gt; is an open source project and application that uses open source tools built on the Java platform to help you develop Web applications quickly and efficiently. It was originally developed to eliminate the ramp-up time found when building new web applications for customers. At its core, AppFuse is a project skeleton, similar to the one that&apos;s created by your IDE when you click through a wizard to create a new web project.
&lt;br/&gt;&lt;br/&gt;
AppFuse 1.x uses Ant to create your project, as well as build/test/deploy it. AppFuse 2.0 uses Maven 2 to create your project as well as build/test/deploy it. IDE support is much better in 2.0 because you can generate the IDE project files with Maven plugins. AppFuse 1.x uses XDoclet and JDK 1.4+.&lt;br/&gt;&lt;br/&gt;
This project was started in &lt;a href=&quot;http://raibledesigns.com/rd/entry/announce_struts_resume_and_appfuse&quot;&gt;April 2003&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;The 2.0 series of AppFuse has a minimum requirement of the following specification versions:&lt;/p&gt;

&lt;ul class=&quot;glassList&quot;&gt;
	&lt;li&gt;Java Servlet 2.4 and JSP 2.0 (2.1 for JSF)&lt;/li&gt;
	&lt;li&gt;Java 5+&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you&apos;ve used AppFuse 1.x, but not 2.x, you&apos;ll want to read the &lt;a href=&quot;http://appfuse.org/display/APF/FAQ&quot; title=&quot;FAQ&quot;&gt;FAQ&lt;/a&gt;.  Join the &lt;a href=&quot;http://appfuse.org/display/APF/Mailing+Lists&quot; title=&quot;Mailing Lists&quot;&gt;user mailing list&lt;/a&gt; if you have any questions. 

&lt;p&gt;Thanks to everyone for their help contributing code, writing documentation, posting to the mailing lists, and logging issues. &lt;/p&gt;

&lt;p&gt;We greatly appreciate the help from &lt;a href=&quot;http://appfuse.org/display/APF/Sponsors&quot; title=&quot;Sponsors&quot;&gt;our sponsors&lt;/a&gt;, particularly &lt;span class=&quot;nobr&quot;&gt;&lt;a href=&quot;http://www.atlassian.com/c/NPOS/10160&quot; rel=&quot;nofollow&quot;&gt;Atlassian&lt;/a&gt;&lt;/span&gt;, &lt;span class=&quot;nobr&quot;&gt;&lt;a href=&quot;http://contegix.com&quot; rel=&quot;nofollow&quot;&gt;Contegix&lt;/a&gt;&lt;/span&gt;, &lt;span class=&quot;nobr&quot;&gt;&lt;a href=&quot;http://www.jetbrains.com&quot; rel=&quot;nofollow&quot;&gt;JetBrains&lt;/a&gt;&lt;/span&gt;, and &lt;span class=&quot;nobr&quot;&gt;&lt;a href=&quot;http://www.java.net&quot; rel=&quot;nofollow&quot;&gt;Java.net&lt;/a&gt;&lt;/span&gt;. Atlassian and Contegix are especially awesome: &lt;span class=&quot;nobr&quot;&gt;&lt;a href=&quot;http://raibledesigns.com/rd/entry/appfuse_now_powered_by_contegix&quot; rel=&quot;nofollow&quot;&gt;Atlassian has donated licenses to all its products and Contegix has donated an entire server&lt;/a&gt;&lt;/span&gt; to the AppFuse project. Thanks guys - &lt;em&gt;you rock!&lt;/em&gt;&lt;/p&gt;

&lt;p class=&quot;smokey&quot;&gt;
Please post any issues you have with this release to the &lt;a href=&quot;http://www.nabble.com/-ANN--AppFuse-2.0.1-Released-tf4876194s2369.html&quot;&gt;mailing list&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;
</description>          </item>
    <item>
    <guid isPermaLink="true">https://raibledesigns.com/rd/entry/appfuse_2_0_released</guid>
    <title>AppFuse 2.0 Released!</title>
    <dc:creator>Matt Raible</dc:creator>
    <link>https://raibledesigns.com/rd/entry/appfuse_2_0_released</link>
        <pubDate>Tue, 18 Sep 2007 15:22:20 -0600</pubDate>
    <category>Java</category>
    <category>java</category>
    <category>struts2</category>
    <category>java5</category>
    <category>myfaces</category>
    <category>ibatis</category>
    <category>jpa</category>
    <category>hibernate</category>
    <category>tapestry</category>
    <category>appfuse</category>
    <category>springmvc</category>
    <category>jsf</category>
    <category>maven2</category>
    <category>spring</category>
            <description>&lt;a href=&quot;http://appfuse.org&quot;&gt;&lt;img src=&quot;//appfuse.dev.java.net/images/icon.gif&quot; class=&quot;picture&quot; style=&quot;border: 0&quot;&gt;&lt;/a&gt;
I&apos;m extremely happy to announce we&apos;ve finally finished developing AppFuse 2.0. The road to AppFuse 2.0 has been a long journey through Mavenland, annotations and generics. Thanks to all the developers, contributors and users for helping test, polish and prove that AppFuse 2 is an excellent solution for developing Java-based applications. Your time, patience and usage of AppFuse has made it the strong foundation it is today. Last but certainly not least, thanks to all the great Java developers who wrote the frameworks that AppFuse uses - we&apos;re truly standing on the shoulders of giants.
&lt;/p&gt;
&lt;p class=&quot;smokey&quot;&gt;
What is AppFuse? &lt;a href=&quot;?&quot; onclick=&quot;Effect.toggle(&apos;whatisappfuse&apos;, &apos;blind&apos;); return false&quot;&gt;Click here&lt;/a&gt; to find out.
&lt;/p&gt;
&lt;p style=&quot;display: none; border: 1px solid #F0C000;
 background-color: #FFFFCE;
 text-align:left;
 margin-top: 5px;
 margin-bottom: 5px; padding: 10px&quot; id=&quot;whatisappfuse&quot;&gt;
&lt;a href=&quot;http://appfuse.org&quot;&gt;AppFuse&lt;/a&gt; is an open source project and application that uses open source tools built on the Java platform to help you develop Web applications quickly and efficiently. It was originally developed to eliminate the ramp-up time found when building new web applications for customers. At its core, AppFuse is a project skeleton, similar to the one that&apos;s created by your IDE when you click through a wizard to create a new web project.
&lt;br/&gt;&lt;br/&gt;
AppFuse 1.x uses Ant to create your project, as well as build/test/deploy it. AppFuse 2.0 uses Maven 2 to create your project as well as build/test/deploy it. IDE support is much better in 2.0 because you can generate the IDE project files with Maven plugins. AppFuse 1.x uses XDoclet and JDK 1.4+.&lt;br/&gt;&lt;br/&gt;
This project was started in &lt;a href=&quot;http://raibledesigns.com/rd/entry/announce_struts_resume_and_appfuse&quot;&gt;April 2003&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;AppFuse 2.0 is available as a Maven archetype. For information on creating a new project using this release, please see the &lt;a href=&quot;http://appfuse.org/display/APF/AppFuse+QuickStart&quot; title=&quot;AppFuse QuickStart&quot;&gt;QuickStart Guide&lt;/a&gt; or the &lt;a href=&quot;http://appfuse.org/display/APF/Demos+and+Videos&quot;&gt;demos and videos&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you&apos;ve used AppFuse 1.x, but not 2.x, you&apos;ll might want to read our &lt;a href=&quot;http://appfuse.org/display/APF/FAQ&quot; title=&quot;FAQ&quot;&gt;Frequently Asked Questions&lt;/a&gt;.  If you have any questions or issues, please post them to the &lt;a href=&quot;http://appfuse.org/display/APF/Mailing+Lists&quot; title=&quot;Mailing Lists&quot;&gt;user mailing list&lt;/a&gt;. The &lt;a href=&quot;http://appfuse.org/display/APF/Maven+2&quot; title=&quot;Maven 2&quot;&gt;Maven Reference Guide&lt;/a&gt; has a map of Ant &amp;raquo; Maven commands. &lt;a href=&quot;http://appfuse.org/display/APF/Maven+for+Newbies&quot; title=&quot;Maven for Newbies&quot;&gt;Maven for Newbies&lt;/a&gt; might also be useful if you&apos;ve never used Maven before. There is &lt;a href=&quot;http://appfuse.org/display/APF/FAQ#FAQ-usingant&quot;&gt;some support for Ant&lt;/a&gt; in this release.&lt;/p&gt;

&lt;p&gt;AppFuse 2.0 contains over 200 pages of &lt;a href=&quot;http://appfuse.org&quot;&gt;documentation&lt;/a&gt;, downloadable as a &lt;a href=&quot;https://appfuse.dev.java.net/files/documents/1397/68818/appfuse-documentation-2.0.pdf&quot;&gt;PDF&lt;/a&gt; (3 MB). You can also download all its &lt;a href=&quot;https://appfuse.dev.java.net/files/documents/1397/68819/appfuse-dependencies-2.0.zip&quot;&gt;dependencies&lt;/a&gt; and install them in your local repository if you want to work offline.&lt;/p&gt;

&lt;p&gt;For more information, please see the &lt;a href=&quot;http://appfuse.org/display/APF/Release+Notes+2.0&quot; title=&quot;Release Notes 2.0&quot;&gt;2.0 Release Notes&lt;/a&gt;. The 2.0 series of AppFuse has a minimum requirement of the following specification versions:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Java Servlet 2.4 and JSP 2.0 (2.1 for JSF)&lt;/li&gt;
	&lt;li&gt;Java 5+&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;New features in AppFuse 2.0 include:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Maven 2 Integration&lt;/li&gt;
	&lt;li&gt;Upgraded WebWork to Struts 2&lt;/li&gt;
	&lt;li&gt;JDK 5, Annotations, JSP 2.0, Servlet 2.4&lt;/li&gt;
	&lt;li&gt;JPA Support&lt;/li&gt;
	&lt;li&gt;Generic CRUD backend&lt;/li&gt;

	&lt;li&gt;Full Eclipse, IDEA and NetBeans support&lt;/li&gt;
	&lt;li&gt;Fast startup and no deploy with Maven Jetty Plugin&lt;/li&gt;
	&lt;li&gt;Testable on multiple appservers and databases with Cargo and profiles&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We appreciate the time and effort everyone has put toward contributing code and documentation, posting to the mailing lists, and logging issues. &lt;/p&gt;

&lt;p&gt;We&apos;re also grateful for the help from &lt;a href=&quot;http://appfuse.org/display/APF/Sponsors&quot; title=&quot;Sponsors&quot;&gt;our sponsors&lt;/a&gt;, particularly &lt;a href=&quot;http://www.atlassian.com/c/NPOS/10160&quot;&gt;Atlassian&lt;/a&gt;, &lt;a href=&quot;http://contegix.com&quot;&gt;Contegix&lt;/a&gt;, &lt;a href=&quot;http://www.jetbrains.com&quot;&gt;JetBrains&lt;/a&gt;, and &lt;a href=&quot;http://www.java.net&quot;&gt;Java.net&lt;/a&gt;. Atlassian and Contegix are especially awesome: &lt;a href=&quot;http://raibledesigns.com/rd/entry/appfuse_now_powered_by_contegix&quot;&gt;Atlassian has donated licenses to all its products and Contegix has donated an entire server&lt;/a&gt; to the AppFuse project. Thanks guys - &lt;em&gt;you rock!&lt;/em&gt;&lt;/p&gt;
&lt;p class=&quot;smokey&quot;&gt;
Comments and issues should be posted to the &lt;a href=&quot;http://www.nabble.com/-ANN--AppFuse-2.0-Released%21-tf4477191s2369.html&quot;&gt;mailing list&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;</description>          </item>
    <item>
    <guid isPermaLink="true">https://raibledesigns.com/rd/entry/appfuse_light_1_8_released</guid>
    <title>AppFuse Light 1.8 Released</title>
    <dc:creator>Matt Raible</dc:creator>
    <link>https://raibledesigns.com/rd/entry/appfuse_light_1_8_released</link>
        <pubDate>Fri, 14 Sep 2007 11:01:46 -0600</pubDate>
    <category>Java</category>
    <category>struts</category>
    <category>stripes</category>
    <category>acegi</category>
    <category>ibatis</category>
    <category>jpox</category>
    <category>ajax</category>
    <category>springjdbc</category>
    <category>myfaces</category>
    <category>jsp</category>
    <category>ojb</category>
    <category>wicket</category>
    <category>hibernate</category>
    <category>jdo</category>
    <category>freemarker</category>
    <category>springmvc</category>
    <category>appfuse</category>
    <category>css</category>
    <category>velocity</category>
            <description>&lt;a href=&quot;http://appfuse-light.dev.java.net&quot;&gt;AppFuse Light&lt;/a&gt; 1.8 adds CSS Framework integration, as well as support
for Stripes (1.4.2) and Wicket (1.2.6). It also has significant upgrades for JSF and Tapestry; to versions 1.2 and 4.1.3 respectively. See the &lt;a href=&quot;http://tinyurl.com/3xuygc&quot;&gt;Release Notes&lt;/a&gt; for more information on what&apos;s changed since the &lt;a href=&quot;http://raibledesigns.com/rd/entry/appfuse_light_1_8_beta&quot;&gt;the beta release of 1.8&lt;/a&gt;.
&lt;/p&gt;
&lt;p class=&quot;smokey&quot;&gt;
What is AppFuse Light? &lt;a href=&quot;?&quot; onclick=&quot;Effect.toggle(&apos;whatisappfuselight&apos;, &apos;blind&apos;); return false&quot;&gt;Click here&lt;/a&gt; to find out.
&lt;/p&gt;
&lt;p style=&quot;display: none; border: 1px solid #F0C000;
 background-color: #FFFFCE;
 text-align:left;
 margin-top: 5px;
 margin-bottom: 5px; padding: 10px&quot; id=&quot;whatisappfuselight&quot;&gt;
&lt;a href=&quot;http://appfuse-light.dev.java.net&quot;&gt;AppFuse Light&lt;/a&gt; is a lightweight version of &lt;a href=&quot;http://appfuse.org&quot;&gt;AppFuse&lt;/a&gt;.
        I was inspired to create it while writing &lt;a href=&quot;http://springlive.com&quot;&gt;Spring Live&lt;/a&gt; and 
        looking at the &lt;em&gt;struts-blank&lt;/em&gt; and &lt;em&gt;webapp-minimal&lt;/em&gt; 
        applications that ship with Struts and Spring, respectively.
        These &quot;starter&quot; apps were not robust enough for me, and I wanted 
        something like AppFuse, only simpler. 
&lt;br/&gt;&lt;br/&gt;
AppFuse Light is designed to show Java Web Developers how to start
        a bare-bones webapp using a &lt;a href=&quot;http://www.springframework.org&quot;&gt;
        Spring&lt;/a&gt;-managed middle-tier backend and &lt;a href=&quot;http://www.hibernate.org&quot;&gt;
        Hibernate&lt;/a&gt; for persistence. By default, AppFuse Light uses Spring for
        its MVC framework, but you can change it to 
        &lt;a href=&quot;http://myfaces.apache.org&quot;&gt;JSF/MyFaces&lt;/a&gt;,
        &lt;a href=&quot;http://mc4j.org/confluence/display/stripes/Home&quot;&gt;Stripes&lt;/a&gt;,
        &lt;a href=&quot;http://struts.apache.org&quot;&gt;Struts 1.x&lt;/a&gt;, 
        &lt;a href=&quot;http://struts.apache.org/2.x/&quot;&gt;Struts 2.x&lt;/a&gt;,
        &lt;a href=&quot;http://opensymphony.com/webwork&quot;&gt;WebWork&lt;/a&gt;, 
        &lt;a href=&quot;http://tapestry.apache.org&quot;&gt;Tapestry&lt;/a&gt; or
        &lt;a href=&quot;http://wicket.apache.org/&quot;&gt;Wicket&lt;/a&gt;. In addition, there&apos;s a
        number of extras for Spring MVC, including &lt;a href=&quot;http://velocity.apache.org&quot;&gt;Velocity&lt;/a&gt; and &lt;a href=&quot;http://freemarker.org&quot;&gt;FreeMarker&lt;/a&gt; versions, Ajax
        support and &lt;a href=&quot;http://acegisecurity.org&quot;&gt;Acegi Security&lt;/a&gt; support.
&lt;br/&gt;&lt;br/&gt;
This project was formerly named &lt;a href=&quot;http://raibledesigns.com/rd/entry/equinox_a_k_a_appfuse1&quot;&gt;Equinox&lt;/a&gt; and has been under development since April 2004.
&lt;/p&gt;
&lt;p&gt;
AppFuse Light now offers 60 possible combinations for &lt;a href=&quot;https://appfuse-light.dev.java.net/servlets/ProjectDocumentList?folderID=8006&quot;&gt;
download&lt;/a&gt;:
&lt;/p&gt;
&lt;ul class=&quot;glassList&quot;&gt;&lt;li&gt;&lt;strong&gt;Web Frameworks:&lt;/strong&gt; JSF (MyFaces), Spring MVC (with
Ajax, Acegi Security, JSP, FreeMarker or Velocity), Stripes, Struts
1.x, Struts 2.x, Tapestry, WebWork, Wicket&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Persistence Frameworks:&lt;/strong&gt; Hibernate, iBATIS, JDO (JPOX), OJB, Spring JDBC&lt;/li&gt;&lt;/ul&gt;
&lt;p style=&quot;text-align: center; color: #666&quot;&gt;
&lt;a href=&quot;http://static.raibledesigns.com/repository/images/appfuse-light-1.8-beta.gif&quot; rel=&quot;lightbox&quot; title=&quot;Screenshot of 1.8 with CSS Framework&quot;&gt;&lt;img src=&quot;//static.raibledesigns.com/repository/images/appfuse-light-1.8-beta_sm.gif&quot; width=&quot;300&quot; height=&quot;225&quot; alt=&quot;AppFuse Light Screenshot - click on the box at the bottom right of AL to activate StyleSheet Switcher&quot; style=&quot;border: 1px solid silver&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
If you have any questions about this release, please subscribe to the AppFuse user mailing list by sending a blank e-mail to 
&lt;a href=&quot;mailto:users-subscribe@appfuse.dev.java.net&quot;&gt;users-subscribe@appfuse.dev.java.net&lt;/a&gt;. You can also post questions in a forum-like fashion using Nabble: &lt;a href=&quot;http://appfuse.org/forums&quot;&gt;http://appfuse.org/forum/user&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
If you&apos;re a developer of one of the frameworks that AppFuse Light uses - I&apos;d love a code review to make sure I&apos;m &quot;up to snuff&quot; on how to use your framework. I&apos;m also more than willing to give commit rights if you&apos;d like to improve the implementation of your framework.
&lt;/p&gt;
&lt;p&gt;Live demos are available at:
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://demo2.appfuse.org/appfuse-light&quot;&gt;Spring&lt;/a&gt; &amp;middot; &lt;a href=&quot;http://demo2.appfuse.org/appfuse-light-ajax&quot;&gt;Spring + Ajax&lt;/a&gt; 
            &amp;middot; &lt;a href=&quot;http://demo2.appfuse.org/appfuse-light-security&quot;&gt;Spring + Acegi&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://demo2.appfuse.org/appfuse-light-jsf&quot;&gt;MyFaces + Facelets&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://demo2.appfuse.org/appfuse-light-stripes&quot;&gt;Stripes&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://demo2.appfuse.org/appfuse-light-struts&quot;&gt;Struts 1&lt;/a&gt; &amp;middot; &lt;a href=&quot;http://demo2.appfuse.org/appfuse-light-struts2&quot;&gt;Struts 2&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://demo2.appfuse.org/appfuse-light-tapestry&quot;&gt;Tapestry&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://demo2.appfuse.org/appfuse-light-webwork&quot;&gt;WebWork&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://demo2.appfuse.org/appfuse-light-wicket&quot;&gt;Wicket&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p class=&quot;smokey&quot;&gt;
Yes, I realize that 60 combinations is ridiculous. I didn&apos;t create the frameworks, I&apos;m just integrating them so you don&apos;t have to. &lt;img src=&quot;https://raibledesigns.com/images/smileys/wink.gif&quot; class=&quot;smiley&quot; alt=&quot;;-)&quot; title=&quot;;-)&quot; /&gt; 
&lt;br/&gt;&lt;br/&gt;
Unfortunately, it&apos;s a real pain to create Maven archetypes or they&apos;d all be as easy as &lt;strong&gt;mvn archetype:create&lt;/strong&gt;. Rumor is that the archetype plugin will allow you to create-from-project in the future. When that happens, I&apos;ll make sure all the combinations are available as archetypes.
&lt;/p&gt;
&lt;p&gt;</description>          </item>
    <item>
    <guid isPermaLink="true">https://raibledesigns.com/rd/entry/open_source_web_frameworks_mailing</guid>
    <title>Open Source Web Frameworks&apos; Mailing List Traffic - June 2007</title>
    <dc:creator>Matt Raible</dc:creator>
    <link>https://raibledesigns.com/rd/entry/open_source_web_frameworks_mailing</link>
        <pubDate>Thu, 26 Jul 2007 14:12:29 -0600</pubDate>
    <category>Open Source</category>
    <category>wicket</category>
    <category>tapestry</category>
    <category>flex</category>
    <category>struts</category>
    <category>grails</category>
    <category>stripes</category>
    <category>myfaces</category>
    <category>rubyonrails</category>
    <category>django</category>
    <category>gwt</category>
    <category>openlazslo</category>
    <category>turbogears</category>
    <category>webframeworks</category>
            <description>Who knows if these stats mean anything, but it does make a pretty graph. Current mailing list traffic leaders in the web framework space: Rails, Flex and GWT. For those frameworks with dev and users lists, these stats are from the users lists. If you find these numbers to be inaccurate, please let me know.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a href=&quot;http://www.flickr.com/photos/mraible/908369176/&quot; title=&quot;Open Source Web Frameworks Communities&quot;&gt;&lt;img src=&quot;//farm2.static.flickr.com/1319/908369176_811bbca419.jpg&quot; width=&quot;500&quot; height=&quot;294&quot; alt=&quot;Open Source Web Frameworks Communities&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;Here&apos;s the numbers in case you want to create your own graphs:
&lt;ul&gt;
&lt;li&gt;Rails: 4056&lt;/li&gt;
&lt;li&gt;Flex: 3558&lt;/li&gt;
&lt;li&gt;GWT: 2305&lt;/li&gt;
&lt;li&gt;Django: 1951&lt;/li&gt;
&lt;li&gt;Wicket: 1718&lt;/li&gt;
&lt;li&gt;Struts: 1689&lt;/li&gt;
&lt;li&gt;Grails: 1307&lt;/li&gt;
&lt;li&gt;MyFaces: 1283&lt;/li&gt;
&lt;li&gt;Tapestry: 1268&lt;/li&gt;
&lt;li&gt;TurbyGears: 797&lt;/li&gt;
&lt;li&gt;Stripes: 206&lt;/li&gt;
&lt;li&gt;OpenLaszlo: 189&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;</description>          </item>
    <item>
    <guid isPermaLink="true">https://raibledesigns.com/rd/entry/oscon_2007_comparing_java_web</guid>
    <title>OSCON 2007: Comparing Java Web Frameworks</title>
    <dc:creator>Matt Raible</dc:creator>
    <link>https://raibledesigns.com/rd/entry/oscon_2007_comparing_java_web</link>
        <pubDate>Wed, 25 Jul 2007 16:50:55 -0600</pubDate>
    <category>Java</category>
    <category>tapestry</category>
    <category>stripes</category>
    <category>wicket</category>
    <category>struts2</category>
    <category>jsf</category>
    <category>java</category>
    <category>presentation</category>
    <category>myfaces</category>
    <category>webframeworks</category>
    <category>oscon</category>
            <description>This afternoon I delivered my &lt;a href=&quot;http://conferences.oreillynet.com/cs/os2007/view/e_sess/12341&quot;&gt;Comparing Java Web Frameworks&lt;/a&gt; talk at OSCON in Portland. I told attendees I&apos;d post it here afterwards, so here it is:&lt;/p;
&lt;p style=&quot;margin-left: 20px&quot;&gt;&lt;a href=&quot;http://static.raibledesigns.com/repository/presentations/ComparingJavaWebFrameworks-OSCON2007.pdf&quot;&gt;Download Comparing Java Web Frameworks Presentation&lt;/a&gt; (5.1 MB)&lt;/a&gt;&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;For comments on this presentation from earlier this year, see related postings from &lt;a href=&quot;http://raibledesigns.com/rd/entry/apachecon_eu_comparing_java_web&quot;&gt;ApacheCon EU&lt;/a&gt; and &lt;a href=&quot;http://raibledesigns.com/rd/entry/ja_sig_comparing_java_web&quot;&gt;JA-SIG&lt;/a&gt;. This presentation is pretty much the same as the one from ApacheCon and JA-SIG, except it has a different theme and I chopped out the Sweetspots section (due to time constraints).&lt;/p&gt;
&lt;p&gt;Portland is great this time of year, but unfortunately I won&apos;t be sticking around. I&apos;m heading down to Salem to work remotely for a couple of days, returning for the &lt;a href=&quot;http://www.oregonbrewfest.com&quot;&gt;Oregon Brewers Festival&lt;/a&gt; on Friday and heading back to Denver on Saturday. I&apos;ll be glad when July is over - I&apos;ve traveled to a new state every week.</description>          </item>
    <item>
    <guid isPermaLink="true">https://raibledesigns.com/rd/entry/thoughts_on_myfaces_1_2</guid>
    <title>Thoughts on MyFaces 1.2 vs. JSF RI</title>
    <dc:creator>Matt Raible</dc:creator>
    <link>https://raibledesigns.com/rd/entry/thoughts_on_myfaces_1_2</link>
        <pubDate>Thu, 19 Jul 2007 11:32:18 -0600</pubDate>
    <category>Java</category>
    <category>myfaces</category>
    <category>jsf</category>
            <description>Yesterday, &lt;a href=&quot;http://www.theserverside.com/news/thread.tss?thread_id=46244&quot;&gt;MyFaces 1.2&lt;/a&gt; was released. I took the opportunity to upgrade &lt;a href=&quot;http://appfuse-light.dev.java.net&quot;&gt;AppFuse Light&lt;/a&gt; and found it surprisingly easy to do so.  The only issue I ran into is my &lt;a href=&quot;http://www.nabble.com/Testing-JSF-1.2-Managed-Beans-vs.-JSF-1.1-tf4103841.html&quot;&gt;testing logic&lt;/a&gt; no longer works. I haven&apos;t had a chance to dive deeper into trying to fix the problem, but I did &lt;a href=&quot;http://fisheye4.cenqua.com/changelog/appfuse-light/?cs=56&quot;&gt;check the code in&lt;/a&gt;.
&lt;/p&gt;&lt;p&gt;
Since I&apos;m using &lt;a href=&quot;http://facelets.dev.java.net&quot;&gt;Facelets&lt;/a&gt; with MyFaces, I figured it should be possible to run my app on Tomcat 5.x. &lt;a href=&quot;http://www.nabble.com/Does-MyFaces-1.2-require-JSP-2.1--tf4112432.html&quot;&gt;No dice&lt;/a&gt;. I tried replacing MyFaces with Sun&apos;s RI (version 1.2_04) and &lt;em&gt;voila!&lt;/em&gt; - it works.&lt;/p&gt;
&lt;p&gt;From what I learned yesterday, it appears that MyFaces 1.2 will only run on a container that supports JSP 2.1. Sun&apos;s RI, on the other hand, will run on a Servlet 2.4/JSP 2.0 container. I don&apos;t know if Sun&apos;s RI is doing things properly, but it doesn&apos;t seem like Servlet 2.5 is required (which is kinda nice IMO).&lt;/p&gt;
&lt;p&gt;You might ask why I care about JSP 2.0 vs. JSP 2.1? In reality, I don&apos;t. However, if I were to mix and match Struts 2 and JSF in the same application (using the &lt;a href=&quot;http://struts.apache.org/2.x/docs/jsf-plugin.html&quot;&gt;Struts 2 JSF Plugin&lt;/a&gt;), I&apos;d like to do it on a JSP 2.0 container. Why? Because OGNL (the EL in Struts 2) uses the &lt;a href=&quot;http://www.nabble.com/OGNL-and-JSP-2.1---are-there-plans-to-fix--tf4103710.html&quot;&gt;pound sign (#) for expressions&lt;/a&gt; and JSP 2.1 hijacked that. Until the Struts team fixes that, I&apos;m stuck on JSP 2.0. The workaround (disabling EL for all JSPs) doesn&apos;t seem like a good option to me.</description>          </item>
    <item>
    <guid isPermaLink="true">https://raibledesigns.com/rd/entry/how_popular_is_your_web</guid>
    <title>How popular is your web framework?</title>
    <dc:creator>Matt Raible</dc:creator>
    <link>https://raibledesigns.com/rd/entry/how_popular_is_your_web</link>
        <pubDate>Fri, 13 Jul 2007 11:43:29 -0600</pubDate>
    <category>Java</category>
    <category>struts</category>
    <category>webframeworks</category>
    <category>hibernate</category>
    <category>myfaces</category>
    <category>spring</category>
    <category>tapestry</category>
    <category>wicket</category>
    <category>jsf</category>
            <description>From the &lt;a href=&quot;http://www.nabble.com/-ANN--Struts-Downloads-Skyrocket-in-2007-tf4044764.html&quot;&gt;Struts user mailing list&lt;/a&gt;:&lt;/p&gt;
&lt;p class=&quot;quote&quot;&gt;
Since its release in June 2001, &lt;a href=&quot;http://struts.apache.org&quot;&gt;Apache Struts&lt;/a&gt; has become the most popular web framework for
Java. Six years later, by any objective measure, Struts is still Java&apos;s most popular web framework.
&lt;br/&gt;&lt;br/&gt;
In February and March 2007, the group released both Struts 1.3.8 and
Struts 2.0.6 to the general public, and Struts downloads zoomed to
over &lt;a href=&quot;http://people.apache.org/~vgritsenko/stats/projects/struts#Downloads-N1008F&quot;&gt;340,000 a month&lt;/a&gt; from the Apache site alone. And this is just
the tip of the iceberg. Most copies of Struts are downloaded from an
network of mirrors or obtained from Maven repositories.
&lt;/p&gt;
&lt;p&gt;So how popular is Struts compared to the other heavy hitters like Spring and Hibernate? Spring has about 1/2 as many (80K) &lt;a href=&quot;http://tinyurl.com/2gz7ql&quot;&gt;downloads in the same period&lt;/a&gt; and &lt;a href=&quot;http://tinyurl.com/28n988&quot;&gt;so does Hibernate&lt;/a&gt;. How do MyFaces, Wicket and Tapestry stack up? Here&apos;s their best download numbers in the past few months:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://people.apache.org/~vgritsenko/stats/projects/myfaces#Downloads-N1008F&quot;&gt;MyFaces&lt;/a&gt;: ~12K (and that&apos;s only because of a rate 3-times-normal spike)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://people.apache.org/~vgritsenko/stats/projects/tapestry#Downloads-N1008F&quot;&gt;Tapestry&lt;/a&gt;: ~12K&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://tinyurl.com/yte94y&quot;&gt;Wicket&lt;/a&gt;: ~10K&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style=&quot;text-decoration: line-through&quot;&gt;Sorry JSF, you appear to be losing. Badly.&lt;/span&gt; This is an incorrect statement as pointed out by commentors. Thanks for keeping me honest guys. &lt;br/&gt;&lt;br/&gt;
Disclaimer: Yes, I realize that these statistics are not very accurate, especially considering Maven. Unfortunately, until Maven has repository download stats, this information is the best we&apos;ve got.</description>          </item>
    <item>
    <guid isPermaLink="true">https://raibledesigns.com/rd/entry/help_me_help_you_market</guid>
    <title>Help me help you (market your web framework)</title>
    <dc:creator>Matt Raible</dc:creator>
    <link>https://raibledesigns.com/rd/entry/help_me_help_you_market</link>
        <pubDate>Thu, 26 Apr 2007 13:58:30 -0600</pubDate>
    <category>Java</category>
    <category>wicket</category>
    <category>tapestry</category>
    <category>stripes</category>
    <category>springmvc</category>
    <category>struts2</category>
    <category>myfaces</category>
            <description>Rather than trolling through google searches, mailing list archives and Amazon book searches, I&apos;d like to try something new. For those projects represented in my Comparing Java Web Frameworks talks (MyFaces, Spring MVC, Stripes, Struts 2, Tapestry and Wicket), would you be interested in helping me gather statistics? I think by allowing projects to gather their own statistics, we&apos;ll get a more accurate number of their statistics.  Here&apos;s the questions I need you to answer:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;How many tools (i.e. IDE plugins) are available for your web framework?&lt;/li&gt;
&lt;li&gt;How many jobs are available for your framework on &lt;a href=&quot;http://www.dice.com&quot;&gt;Dice.com&lt;/a&gt;? What about &lt;a href=&quot;http://indeed.com&quot;&gt;Indeed.com&lt;/a&gt;?&lt;/li&gt;
&lt;li&gt;How many messages where posted to your &lt;strong&gt;user&lt;/strong&gt; mailing list (or forum) in March 2007?&lt;/li&gt;
&lt;li&gt;How many books are available for your framework?&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
Of course, if you don&apos;t have time, I&apos;ll be more than happy to gather these statistics myself. However, those that do answer might get some extra marketing love during my talk. Answering in a comment or &lt;a href=&quot;http://raibledesigns.com/contact.jsp&quot;&gt;sending me an e-mail&lt;/a&gt; are the best ways to provide your findings. &lt;em&gt;Thanks!&lt;/em&gt;&lt;br/&gt;&lt;br/&gt;
&lt;strong&gt;Update:&lt;/strong&gt; &lt;a href=&quot;http://herebebeasties.com/2007-04-27/lies-damned-lies-and-statistics/&quot;&gt;Alastair&lt;/a&gt; asks for further clarification. Here goes:&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;&gt; If you have lots of IDE tooling available, it probably means the configuration for the framework is overly complex and unmanageable without tooling.&lt;/em&gt;&lt;br/&gt;&lt;br/&gt;
While this may be true, if your framework is &lt;a href=&quot;http://code.google.com/webtoolkit/&quot;&gt;hot&lt;/a&gt; or &lt;a href=&quot;http://www.rubyonrails.org/&quot;&gt;uber productive&lt;/a&gt;, people want tools. Especially new developers. Remember there&apos;s a plethora of new Java developers every year and a lot of them prefer tool-based solutions. Good or bad, IDEs are nice and people like to use them. I&apos;ve had many clients dismiss frameworks simply because no tools were available.
&lt;/p&gt;&lt;p&gt;
&lt;em&gt;&gt; The framework with the largest number of jobs available is probably Struts 1. Enough said.&lt;/em&gt;
&lt;/p&gt;&lt;p&gt;
Yes, you&apos;re definitely right. However, Struts 1 is not in this comparison - I dropped it because I don&apos;t want to recommend it to anyone.
&lt;/p&gt;&lt;p&gt;
&lt;em&gt;&gt; People only post to user lists when they are stuck. If the framework is hard to use, there will be lots of e-mails. If it has a steep learning curve, and/or the documentation is poor, this will be particularly so. On the other hand, an active list might point to a large active user base. Who knows which is which from a raw figure?&lt;/em&gt;
&lt;/p&gt;&lt;p&gt;
What about community? Mailing lists and their activity is a sign of an active community. Even though SiteMesh is a mature and good solution, its community sucks. There&apos;s little support, no new features, no bug fixes. An open source project w/o a community is tough for a company to adopt. Also, the best communities do a lot more than answer questions on mailing lists. They develop their applications, get advice, offer advice and sometimes even &lt;em&gt;hang out&lt;/em&gt;. The Struts list used to have threads 30-50 messages long about development philosophies. When you joined the mailing list, you felt like you were a part of something, not just a user of a product.
&lt;/p&gt;&lt;p&gt;
&lt;em&gt;&gt; If your framework is fairly stable, and someone has written a fabulous tome on it that is universally acknowledged as &quot;the bible&quot;, few people would bother writing another book for it.&lt;/em&gt;
&lt;/p&gt;&lt;p&gt;
I don&apos;t agree - this just means there&apos;s no market for other books because not that many people are using it. Look at Grails, Groovy, GWT and Rails - there&apos;s been quite a few books on each and no slowdown in sight. Then again, there weren&apos;t many Ant books and that was/is hugely popular. I&apos;m willing to change this question to &quot;How many &lt;strong&gt;good&lt;/strong&gt; does your framework have?&quot;, but that&apos;s up to everyone&apos;s own interpretation. Again, lots of books means there&apos;s an active community outside the immediate mailing list - it&apos;s a sign the general &quot;market&quot; is interested and the framework fills a need.
&lt;/p&gt;&lt;p&gt;
Of course, I &lt;strong&gt;am&lt;/strong&gt; interested in asking the questions that developers want to see answered.  Do you have suggestions for replacement (or new) questions? Remember, people like hard facts, not wishy washy statements about how productive and OO your framework is. Every framework can be uber productive if you have the right developer(s) and they&apos;re genuinely interested in getting stuff done.</description>          </item>
    <item>
    <guid isPermaLink="true">https://raibledesigns.com/rd/entry/appfuse_light_1_8_beta</guid>
    <title>AppFuse Light 1.8 Beta Released</title>
    <dc:creator>Matt Raible</dc:creator>
    <link>https://raibledesigns.com/rd/entry/appfuse_light_1_8_beta</link>
        <pubDate>Thu, 26 Apr 2007 02:23:22 -0600</pubDate>
    <category>Java</category>
    <category>stripes</category>
    <category>css</category>
    <category>ibatis</category>
    <category>springmvc</category>
    <category>jpox</category>
    <category>jsp</category>
    <category>ajax</category>
    <category>appfuse</category>
    <category>wicket</category>
    <category>springjdbc</category>
    <category>ojb</category>
    <category>freemarker</category>
    <category>hibernate</category>
    <category>acegi</category>
    <category>myfaces</category>
    <category>struts</category>
    <category>jdo</category>
    <category>velocity</category>
            <description>&lt;a href=&quot;http://appfuse-light.dev.java.net&quot;&gt;AppFuse Light&lt;/a&gt; 1.8 Beta adds CSS Framework integration, as well as support
for Stripes (1.4.2) and Wicket (1.2.6). This is a beta release so we can work out &lt;a href=&quot;http://tinyurl.com/286qjf&quot;&gt;some kinks&lt;/a&gt; before the final release.&lt;br/&gt;&lt;br/&gt;AppFuse Light now offers 60 possible combinations for &lt;a href=&quot;https://appfuse-light.dev.java.net/servlets/ProjectDocumentList?folderID=8006&quot;&gt;
download&lt;/a&gt;:
&lt;/p&gt;
&lt;ul class=&quot;glassList&quot;&gt;&lt;li&gt;&lt;strong&gt;Web Frameworks:&lt;/strong&gt; JSF (MyFaces), Spring MVC (with
Ajax, Acegi Security, JSP, FreeMarker or Velocity), Stripes, Struts
1.x, Struts 2.x, Tapestry, WebWork, Wicket&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Persistence Frameworks:&lt;/strong&gt; Hibernate, iBATIS, JDO (JPOX), OJB, Spring JDBC&lt;/li&gt;&lt;/ul&gt;
&lt;p style=&quot;text-align: center; color: #666&quot;&gt;
&lt;a href=&quot;http://static.raibledesigns.com/repository/images/appfuse-light-1.8-beta.gif&quot; rel=&quot;lightbox&quot; title=&quot;Screenshot of 1.8 with CSS Framework&quot;&gt;&lt;img src=&quot;//static.raibledesigns.com/repository/images/appfuse-light-1.8-beta_sm.gif&quot; width=&quot;300&quot; height=&quot;225&quot; alt=&quot;AppFuse Light Screenshot - click on the box at the bottom right of AL to activate StyleSheet Switcher&quot; style=&quot;border: 1px solid silver&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
If you have any questions about this release, please subscribe to the AppFuse user mailing list by sending a blank e-mail to 
&lt;a href=&quot;mailto:users-subscribe@appfuse.dev.java.net&quot;&gt;users-subscribe@appfuse.dev&lt;wbr&gt;.java.net&lt;/a&gt;. You can also post questions in a forum-like fashion using Nabble: &lt;a href=&quot;http://appfuse.org/forums&quot;&gt;http://appfuse.org/forums&lt;/a&gt;.
&lt;br/&gt;&lt;br/&gt;
If you&apos;re a developer of one of the frameworks that AppFuse Light uses - I&apos;d love a code review to make sure I&apos;m &quot;up to snuff&quot; on how to use your framework. I&apos;m also more than willing to give commit rights if you&apos;d like to improve the implementation of your framework.
&lt;/p&gt;
&lt;p&gt;Live demos are available at:
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://demo.raibledesigns.com/appfuse-light&quot;&gt;Spring&lt;/a&gt; &amp;middot; &lt;a href=&quot;http://demo.raibledesigns.com/appfuse-light-ajax&quot;&gt;Spring + Ajax&lt;/a&gt; 
            &amp;middot; &lt;a href=&quot;http://demo.raibledesigns.com/appfuse-light-security&quot;&gt;Spring + Acegi&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://demo.raibledesigns.com/appfuse-light-jsf&quot;&gt;MyFaces + Facelets&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://demo.raibledesigns.com/appfuse-light-stripes&quot;&gt;Stripes&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://demo.raibledesigns.com/appfuse-light-struts&quot;&gt;Struts 1&lt;/a&gt; &amp;middot; &lt;a href=&quot;http://demo.raibledesigns.com/appfuse-light-struts2&quot;&gt;Struts 2&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://demo.raibledesigns.com/appfuse-light-tapestry&quot;&gt;Tapestry&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://demo.raibledesigns.com/appfuse-light-webwork&quot;&gt;WebWork&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://demo.raibledesigns.com/appfuse-light-wicket&quot;&gt;Wicket&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; Based on &lt;a href=&quot;http://martijndashorst.com/blog/2007/04/26/appfuse-light-adds-wicket/&quot;&gt;Martin&apos;s blog post&lt;/a&gt;, I&apos;ve added the version numbers for Stripes and Wicket (1.4.2 and 1.2.6, respectively). While the Wicket guys recommended I use Wicket 1.3.0, I was already knee deep in 1.2.6 when I read their recommendation. If 1.3.0 really is that much better than 1.2.6, it should be a pleasure to upgrade (and a good learning experience too boot!).</description>          </item>
    <item>
    <guid isPermaLink="true">https://raibledesigns.com/rd/entry/what_web_framework_are_you</guid>
    <title>What web framework are you using with AppFuse?</title>
    <dc:creator>Matt Raible</dc:creator>
    <link>https://raibledesigns.com/rd/entry/what_web_framework_are_you</link>
        <pubDate>Wed, 25 Apr 2007 11:05:04 -0600</pubDate>
    <category>Java</category>
    <category>myfaces</category>
    <category>jsf</category>
    <category>springmvc</category>
    <category>struts</category>
    <category>tapestry</category>
    <category>struts2</category>
    <category>webwork</category>
            <description>As part of my upcoming &lt;a href=&quot;http://www.eu.apachecon.com/program/talk/75&quot;&gt;Comparing Java Web Frameworks&lt;/a&gt; talk, I&apos;d like to show some statistics of web framework usage in AppFuse. Please vote for the one you&apos;re using by clicking on the link below. I&apos;m mostly looking for current AppFuse users. By that, I mean folks that have used 1.x or 2.x on a project in the last 6 months, or plan on using it in the next month or two.
&lt;br/&gt;&lt;br/&gt;
You&apos;ll need to create an account and login to vote. To do this, go to View &gt; Account &gt; Sign Up (after clicking on the link below). 
&lt;/p&gt;
&lt;ul class=&quot;glassList&quot;&gt;
&lt;li&gt;&lt;a href=&quot;http://appfuse.org/pages/viewpage.action?pageId=986&quot;&gt;http://appfuse.org/pages/viewpage.action?pageId=986&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
I&apos;ll compile the results of this poll on Friday morning (April 27th), so you have until then for your vote to be counted!
&lt;br/&gt;&lt;br/&gt;
On a related note, if anyone knows how to get the monthly posting statistics from &lt;a href=&quot;http://forum.springframework.org/forumdisplay.php?f=25&quot;&gt;Spring MVC&apos;s forums&lt;/a&gt;, I&apos;d love to hear about it. My &quot;mailing list traffic&quot; slide has excluded them for the past couple of years because I&apos;ve been unable to get a count of monthly postings.
&lt;br/&gt;&lt;br/&gt;
&lt;strong&gt;NOTE:&lt;/strong&gt; If you vote by adding a comment to this entry, it won&apos;t be counted. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; Thanks to the 64 of you that voted. Here&apos;s the results of the poll:&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;img src=&quot;//static.raibledesigns.com/repository/images/webframework-usage-200704.gif&quot; alt=&quot;AppFuse Web Framework Usage&quot; width=&quot;500&quot; height=&quot;313&quot; /&gt;
&lt;/p&gt;&lt;p&gt;As I said &lt;a href=&quot;http://raibledesigns.com/rd/entry/spring_mvc_the_most_popular&quot;&gt;last time&lt;/a&gt;, I find the results interesting because AppFuse lowers the barriers and reduces the learning curve for all of these frameworks.</description>          </item>
    <item>
    <guid isPermaLink="true">https://raibledesigns.com/rd/entry/comparing_java_web_frameworks_proposed</guid>
    <title>Comparing Java Web Frameworks: Proposed Outline</title>
    <dc:creator>Matt Raible</dc:creator>
    <link>https://raibledesigns.com/rd/entry/comparing_java_web_frameworks_proposed</link>
        <pubDate>Tue, 17 Apr 2007 09:13:22 -0600</pubDate>
    <category>Java</category>
    <category>myfaces</category>
    <category>struts2</category>
    <category>stripes</category>
    <category>wicket</category>
    <category>jsf</category>
    <category>springmvc</category>
    <category>tapestry</category>
            <description>I&apos;m just now starting to create my &lt;a href=&quot;http://www.eu.apachecon.com/program/talk/75&quot;&gt;Comparing Java Web Frameworks&lt;/a&gt; presentation for &lt;a href=&quot;http://www.eu.apachecon.com/&quot;&gt;ApacheCon Europe&lt;/a&gt;. According to &lt;a href=&quot;http://rollerweblogger.org/roller/entry/apacheconeu_roller_and_blogs_as&quot;&gt;Dave&lt;/a&gt;, I&apos;m &lt;em&gt;way late&lt;/em&gt; on submitting my presentation. However, I haven&apos;t received any late notifications from ApacheCon&apos;s organizing committee, so I don&apos;t feel too bad.
&lt;/p&gt;
&lt;blockquote style=&quot;font-style: italic; color: #666&quot;&gt;
I think it&apos;s interesting how most conferences don&apos;t spend much time organizing from a speaker&apos;s perspective. The Colorado Software Summit and NFJS are two exceptions. As a speaker, you always know exactly what&apos;s going on, what the deadlines are and where you&apos;re supposed to be when. With ApacheCon, I feel like I&apos;m in the dark on almost everything - including if I have a hotel room or not. I guess that&apos;s the difference between a volunteer organization and conferences where the organizers make money.
&lt;/blockquote&gt;
&lt;p&gt;Luckily, I&apos;ve done this presentation quite a few times in the past, so it&apos;s mostly an update rather than a rewrite. The biggest changes: dropping Struts 1 and adding Stripes and Wicket. Of course, I could keep Struts 1 since it&apos;s not much additional work, but since I only have 50 minutes for the talk (10 minutes for QA), it makes sense to drop it. And yes, I know many of you&apos;d like to see Grails, Seam, GWT, RIFE and Click added to this presentation - but no one wants to sit through a presentation on 11 web frameworks in 45 minutes.
&lt;br/&gt;&lt;br/&gt;
Here&apos;s the abstract for the session:
&lt;/p&gt;
&lt;p class=&quot;quote&quot;&gt;
One of the most difficult things to do (in Java web development)
today is pick which web framework to use when development an
application.  The Apache Software foundation hosts most of the
popular Java web frameworks: &lt;strong&gt;Struts&lt;/strong&gt;, &lt;strong&gt;MyFaces&lt;/strong&gt;, &lt;strong&gt;Tapestry&lt;/strong&gt; and
&lt;strong&gt;Wicket&lt;/strong&gt;. This session will compare these different web
frameworks, as well as &lt;strong&gt;Spring MVC&lt;/strong&gt; and &lt;strong&gt;Stripes&lt;/strong&gt;. It will briefly
explain how each works and the strengths and weaknesses of each.
 Tips, tricks and gotcha&apos;s will be plentiful. Lastly, it will
provide attendees with a sample application that utilizes all 6
frameworks, so they can compare line-by-line how the frameworks
are different.  This sample application will include the
following features: sortable/pageable list, client and
server-side validation, success and error messages as well as
some Ajax functionality. The frameworks will be rated on how
easy they make it to implement these features.
&lt;/p&gt;
&lt;p&gt;
Without further ado, here&apos;s my proposed outline:
&lt;/p&gt;
&lt;ul class=&quot;glassList&quot;&gt;
&lt;li&gt;Introductions (5 minutes)&lt;/li&gt;
&lt;li&gt;Pros and Cons (15 minutes, ~2 minutes for each)&lt;/li&gt;
&lt;li&gt;Sweetspots (10 minutes)&lt;/li&gt;
&lt;li&gt;Smackdown - evaluation criteria includes (15 minutes)
    &lt;ul class=&quot;glassList&quot; style=&quot;margin-bottom: 0&quot;&gt;
    &lt;li&gt;Ajax support&lt;/li&gt;
    &lt;li&gt;Bookmark-ability&lt;/li&gt;
    &lt;li&gt;Validation (including client-side)&lt;/li&gt;
    &lt;li&gt;Testability (esp. out-of-container)&lt;/li&gt;
    &lt;li&gt;Post and redirect&lt;/li&gt;
    &lt;li&gt;Internationalization&lt;/li&gt;
    &lt;li&gt;Page decoration&lt;/li&gt;
    &lt;li&gt;Community and Support&lt;/li&gt;
    &lt;li&gt;Tools&lt;/li&gt;
    &lt;li&gt;Marketability of skills (can it help you get a job)&lt;/li&gt;
    &lt;li&gt;Job count (is there a demand for skills on Dice)&lt;/li&gt;
    &lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Conclusion (5 minutes)&lt;/li&gt;
&lt;li&gt;Q and A (10 minutes)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
During the Pros and Cons, I won&apos;t be showing any code like I usually do - there&apos;s just not enough time. I&apos;m also adding in a discussion on these frameworks&apos; &lt;a href=&quot;http://www.virtuas.com/articles/webframework-sweetspots.html&quot;&gt;sweetspots&lt;/a&gt;. The Pros and Cons section is largely my opinion, and I think it&apos;s important to hear the framework authors&apos; opinions as well.
&lt;br/&gt;&lt;br/&gt;
In evaluation criteria, I&apos;m dropping List screens and Spring Integration. All these frameworks have good Spring support and most support some sort of page-able/sortable list. I can add either of those back in based on your suggestions.
&lt;br/&gt;&lt;br/&gt;
Any feedback is greatly appreciated.</description>          </item>
    <item>
    <guid isPermaLink="true">https://raibledesigns.com/rd/entry/upgrading_to_myfaces_1_1</guid>
    <title>Upgrading to MyFaces 1.1.5 and Spring 2.x + Resin 3.x + Cargo</title>
    <dc:creator>Matt Raible</dc:creator>
    <link>https://raibledesigns.com/rd/entry/upgrading_to_myfaces_1_1</link>
        <pubDate>Sat, 24 Feb 2007 16:33:20 -0700</pubDate>
    <category>Java</category>
    <category>myfaces</category>
    <category>spring</category>
    <category>resin</category>
    <category>cargo</category>
            <description>This week, I encountered a few issues with some open source software that I hadn&apos;t seen before. Furthermore, it was difficult to find the problems&apos; solutions via Google, so I figured I&apos;d blog about them and make life less painful for the next person.

&lt;br/&gt;&lt;br/&gt;

&lt;strong&gt;Upgrading MyFaces to 1.1.5&lt;/strong&gt;&lt;br/&gt;

The first issue I experienced was when I tried to upgrade from MyFaces 1.1.4 to 1.1.5. After upgrading, my Canoo WebTests failed on some pages because the page kept redirecting to itself instead of submitting a form and properly processing the result. The solution was found with a simple &lt;a href=&quot;http://www.nabble.com/Upgrading-from-MyFaces-1.1.4-to-1.1.5-tf3271040.html&quot;&gt;e-mail to the project&apos;s mailing list&lt;/a&gt;. If you have a view template that auto-submits to a backing bean, you need to change &quot;_link_hidden_&quot; to &quot;_idcl&quot;. Apparently, this change was made to be more similar to the JSF RI. Of course, this hack wouldn&apos;t be necessary if JSF would simply allow you to call a method from a URL without going to a view page first.

&lt;br/&gt;&lt;br/&gt;

&lt;strong&gt;Spring 2.0&apos;s RequestContextListener has issues on Resin and WebSphere &lt;/strong&gt;&lt;br/&gt;

Spring 2.0.2 has a bug where its &lt;a href=&quot;http://forum.springframework.org/showthread.php?t=33874&quot;&gt;RequestContextListener throws a NPE&lt;/a&gt; on WebSphere 6.0 and Resin 3.x. This is fixed in Spring 2.0.3.

&lt;br/&gt;&lt;br/&gt;
&lt;strong&gt;Making Resin 3.x XSD-aware when using Cargo&lt;/strong&gt;&lt;br/&gt;
By default, Resin 3.x doesn&apos;t ship with an XSD-aware parser turned on. This means that if you&apos;re using Spring 2.0 XSDs, you will need to &lt;a href=&quot;http://www.caucho.com/resin-3.0/xml/jaxp.xtp#xerces&quot;&gt;set some configuration options on Resin&lt;/a&gt;. I don&apos;t know why Resin doesn&apos;t ship with these on by default, but it doesn&apos;t. This presents a problem if you&apos;re using &lt;a href=&quot;http://cargo.codehaus.org&quot;&gt;Cargo&lt;/a&gt; to download and install Resin. The good news is you can configure Cargo to set system properties and turn Resin&apos;s XSD parser on. Adding the following to the &amp;lt;container&amp;gt; element in the Cargo plugin&apos;s configuration to solve the problem.
&lt;/p&gt;
&lt;pre&gt;
&amp;lt;!-- Make Resin aware of Spring 2.0 XSDs --&amp;gt;
&amp;lt;systemProperties&amp;gt;
    &amp;lt;javax.xml.parsers.DocumentBuilderFactory&amp;gt;
        org.apache.xerces.jaxp.DocumentBuilderFactoryImpl
    &amp;lt;/javax.xml.parsers.DocumentBuilderFactory&amp;gt;
    &amp;lt;javax.xml.parsers.SAXParserFactory&amp;gt;
        org.apache.xerces.jaxp.SAXParserFactoryImpl
     &amp;lt;/javax.xml.parsers.SAXParserFactory&amp;gt;
&amp;lt;/systemProperties&amp;gt;
&lt;/pre&gt;
&lt;p&gt;
&lt;strong&gt;Resin and Cargo&lt;/strong&gt;&lt;br/&gt;
Finally, Cargo 0.2 &lt;a href=&quot;http://www.nabble.com/Issue-stopping-Resin-3.0.23-with-Cargo-tf3270890.html&quot;&gt;throws a NoClassDefFoundError when shutting down Resin 3.0.23&lt;/a&gt; and &lt;a href=&quot;http://jira.codehaus.org/browse/CARGO-494&quot;&gt;doesn&apos;t work at all with Resin 3.1.0&lt;/a&gt;. What does this mean?  It means Cargo works great with Tomcat and JBoss, but not so good with Resin 3.x, Jetty 6.x or Geronimo 1.1. 
&lt;br/&gt;&lt;br/&gt;
It&apos;s too bad, Cargo really is a great project idea.  Maybe the container developers should get involved to help it support all the latest versions?
</description>          </item>
  </channel>
</rss>