The good folks at Atlassian have written a nice tutorial on integrating Crowd with AppFuse and Acegi to create a nice SSO solution. Crowd is a web-based single sign-on (SSO) tool that simplifies application provisioning and identity management. The AppFuse project uses it to maintain a single user store for JIRA, Confluence (this site), and Bamboo. It's worked awesome for us.
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's features, see InfoQ's What's New in Spring 2.5: Part 1 article.
For information on upgrading from 2.0, see the 2.0.1 Release Notes or changelog. AppFuse 2.0.1 is available as a Maven archetype. For information on creating a new project using AppFuse, please see the QuickStart Guide or the demos and videos.
The 2.0 series of AppFuse has a minimum requirement of the following specification versions:
- Java Servlet 2.4 and JSP 2.0 (2.1 for JSF)
- Java 5+
If you've used AppFuse 1.x, but not 2.x, you'll want to read the FAQ. Join the user mailing list if you have any questions. The Maven Reference Guide has a map of Ant -> Maven commands. Maven for Newbies might also be useful if you've never used Maven before. There is some support for Ant in this release.
Thanks to everyone for their help contributing code, writing documentation, posting to the mailing lists, and logging issues.
We greatly appreciate the help from our sponsors, particularly Atlassian, Contegix, JetBrains, and Java.net. Atlassian and Contegix are especially awesome: Atlassian has donated licenses to all its products and Contegix has donated an entire server to the AppFuse project.
It's a good thing this project gets free bandwidth from Contegix! Looking at September's stats for static.appfuse.org (the site that hosts our Maven repo), we're averaging 2.15 GB per day. Thanks Contegix!

The AppFuse Team is pleased to announce the release of AppFuse 2.0!
The road to AppFuse 2.0 has been a long journey through Mavenland, annotations and generics. We're pleased to announce that we're finally finished after 13 months of development. 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.
This release contains a number of bug fixes for AMP, an upgrade to Tapestry 4.1.3, the addition of Tacos, support for Oracle and changes to prevent XSS attacks.
AppFuse 2.0 is available as a Maven archetype. For information on creating a new project using AppFuse, please see the QuickStart Guide or the demos and videos.
If you've used AppFuse 1.x, but not 2.x, you'll want to read the FAQ. Join the user mailing list if you have any questions. The Maven Reference Guide has a map of Ant -> Maven commands. Maven for Newbies might also be useful if you've never used Maven before. There is some support for Ant in this release.
For more information, please see the 2.0 Release Notes. The 2.0 series of AppFuse has a minimum requirement of the following specification versions:
- Java Servlet 2.4 and JSP 2.0 (2.1 for JSF)
- Java 5+
New features in AppFuse 2.0 include:
- Maven 2 Integration
- Upgraded WebWork to Struts 2
- JDK 5, Annotations, JSP 2.0, Servlet 2.4
- JPA Support
- Generic CRUD backend
- Full Eclipse, IDEA and NetBeans support
- Fast startup and no deploy with Maven Jetty Plugin
- Testable on multiple appservers and databases with Cargo and profiles
We appreciate the time and effort everyone has put toward contributing code and documentation, posting to the mailing lists, and logging issues.
We also greatly appreciate the help from our sponsors, particularly Atlassian, Contegix, JetBrains, and Java.net. Atlassian and Contegix are especially awesome: Atlassian has donated licenses to all its products and Contegix has donated an entire server to the AppFuse project.
![]()
The AppFuse Team is pleased to announce the release of AppFuse 2.0 RC1!
This release marks a huge step in the march to releasing AppFuse 2.0. This release puts the finishing touches on the AppFuse Maven Plugin (AMP), which offers CRUD generation, as well as the ability to change AppFuse from "embedded mode" to "full source" (like 1.x). In addition, we've addressed over 100 issues in preparation for the final 2.0 release. We hope to fix any bugs related to this release and release 2.0 Final in the next week or two.
The videos still represent how M5 works, but things have been simplified (now you don't need to run appfuse:install after appfuse:gen).
AppFuse 2.0 is available as a Maven archetype. For information on creating a new project using this release, please see the QuickStart Guide or the Hello World video.
If you've used AppFuse 1.x, but not 2.x, you'll want to read the FAQ. Join the user mailing list if you have any questions. The Maven Reference Guide has a map of Ant -> Maven commands. Maven for Newbies might also be useful if you've never used Maven before. There is some support for Ant in this release.
For more information, please see the 2.0 RC1 Release Notes. The 2.0 series of AppFuse has a minimum requirement of the following specification versions:
- Java Servlet 2.4 and JSP 2.0 (2.1 for JSF)
- Java 5+
We appreciate the time and effort everyone has put toward contributing code and documentation, posting to the mailing lists, and logging issues.
We also greatly appreciate the help from our sponsors, particularly Atlassian, Contegix, JetBrains, and Java.net. Atlassian and Contegix are especially awesome: Atlassian has donated licenses to all its products and Contegix has donated an entire server to the AppFuse project. Thanks guys - you rock!
Update: I've uploaded a 247-page PDF version of the RC1 documentation to java.net. This PDF contains the relevant pages from the wiki that help you develop with AppFuse 2.0.
AppFuse often gets compared to Ruby on Rails and Grails when folks are talking about full-stack productivity-enhancing frameworks. If you'd like to learn my opinion on this, please read AppFuse vs. Grails vs. Rails on my Raible Designs blog.
Contegix has been gracious enough to donate a server to the AppFuse project. Not only do we get a whole server to ourselves, but they're managing it and making sure it stays up all the time.
I've moved JIRA onto their servers, as well as Confluence. Confluence is at wiki.appfuse.org and as DNS entries begin to change, appfuse.org will switch to this server. apache.appfuse.org is the new "static" server and the DNS change has started for that as well. demo1.appfuse.org is the new location of demo.appfuse.org and DNS changes are pending.
If you have a moment, please play a bit with wiki.appfuse.org, apache.appfuse.org and demo1.appfuse.org to see if you see anything strange.
In addition to our normal services, we've also got received new licenses from Atlassian for Crowd (SSO) and Bamboo (Continuous Integration server). Since Atlassian's tools are built on a lot of the same software that AppFuse uses, I feel like we're somewhat eating our own dogfood.
We merged the accounts for JIRA and Confluence into Crowd. If you had accounts in both, JIRA won (as long as you had the same username, etc.).
The builds for AppFuse 2.x are still done by Hudson, but I hope to change this in the near future. If someone has time to fiddle with Bamboo in the next few days - let me know and I'll give you appropriate permissions.
Thanks Contegix - you guys rock!
It's been far too long since the release of AppFuse 2.0 M5. When we released that version, I fully expected to finish up RC1 a week or two later, and follow that with 2.0 Final a week later. Fast forward a month and a half, and there's still 38 issues left for 2.0 RC1. What happened?
Life got in the way.
There's probably less than 40 hours left to complete 2.0. I could say that I haven't had the time, but you all know that's a lie. Everyone has time. When someone says "I don't have time to do X right now", this really means "that's not on my priority list and I'm not going to make time to do it". So unfortunately AppFuse hasn't been on my priority list. Finding a new gig, vacationing with my family and buying a new mountain bike were on my priority list.
So if there's only 40 hours worth of work left, why didn't I just work a couple hours a day on it? Primarily because when I work on AppFuse it possesses me. I tend to get caught up in it and it's tough for me to concentrate on other things, especially work that I'm supposed to be doing during the day. Since I've had two new clients in the past few weeks, I've been aware of this and purposely stayed away from working on it.
The good news is things should settle down soon. I have a couple weekends on the horizon that look to be free, so hopefully I can crank it out and finish it up in the next month or so. As far as the project itself, there's plenty of users happily using the 2.0 milestone releases and there's still lots of traffic on the mailing list. It's crazy to think that the planning for AppFuse 2.0 started over a year ago and development started one year ago next month. If I knew it'd take this long, would I still have done it? Absolutely. I've never heard so many positive comments from users.
In other AppFuse News, Contegix has graciously donated an entire managed server to the project. We have licenses for the Atlassian Suite (JIRA, Confluence, Bamboo and Crowd) and will be moving/installing everything over the next week or so.
Thanks Contegix!
As anyone that uses them knows, they're simply the best hosting company in existence today. Their customer support and response time is incredible.
This entry has been also been posted to my other blog. Please comment there if you have anything to add. |
![]()
The AppFuse Team is pleased to announce the release of AppFuse 2.0 M5!
This release marks a milestone in the features of AppFuse 2.x. This release adds CRUD code generation, full source support (just like 1.x) and XFire integration. In addition, we've fixed all the issues related to switching persistence frameworks, and you should now be able to easily switch from using Hibernate to iBATIS or JPA. The videos have been updated for M5. The Easy CRUD with Struts 2 video shows how code generation currently works.
AppFuse 2.0 is available as a Maven archetype. For information on creating a new project using this release, please see the QuickStart Guide or the Hello World video.
If you've used AppFuse 1.x, but not 2.x, you'll want to read the FAQ. Join the user mailing list if you have any questions. The Maven Reference Guide has a map of Ant -> Maven commands. Maven for Newbies might also be useful if you've never used Maven before. There is some support for Ant in this release.
For more information, please see the 2.0 M5 Release Notes. If you'd like to use AppFuse offline, you may want to download the dependencies and extract them into your Maven ~/.m2/repository directory.
The 2.0 series of AppFuse has a minumum requirement of the following specification versions:
- Java Servlet 2.4 and JavaServer Pages (JSP) 2.0
- Java 5 for Development (Java 1.4 for deployment using the Retrotranslator Plugin)
We appreciate the time and effort everyone has put toward contributing code and documentation, posting to the mailing lists, and logging issues.
I wanted to write a quick note about my progress on the AppFuse Maven Plugin (AMP) in the last couple weeks. In its current state, you can run the following command to generate CRUD screens/classes for a POJO:
appfuse:gen -Dentity=Name
If you don't specify the entity name, you're prompted for it. After generating the code, you can install it using:
appfuse:install -Dentity=Name
I'd like to figure out a way to combine these or at least allow "appfuse:gen appfuse:install -Dentity=Name", but that's currently not possible (since both depend on compile happening first).
The "gen" mojo handles all the dao and web frameworks, but the install plugin does not. Currently, it's hard-coded to Struts-only.
The good news is there's tests to verify the generation functionality (mostly it checks that files were created in the correct location). I tried to programmatically generate a project and run "gen install" on it, but the MavenEmbedder does not handle plugin extensions properly and fails on the warpath plugin. That being said, we may be able to use it to aggregate multiple mojo calls into a single one.
Since the MavenEmbedder didn't work, I added a build.xml file to plugins/appfuse-maven-plugin that verifies everything work. Typing "ant" in this directory will create a project, copy a Person.java object into it's model package and run "gen install integration-test". This all seems to work reasonably well.
This plugin is probably not as flexible as the former Ant Task-based plugin, but it does work. The most important part is the FreeMarker templates and most of that is done. Also, the install is done using Ant Tasks (parsing and replacing XML), so I believe the majority of the work is re-usable.
I hope to complete the first version of this plugin in the next week.
As part of my upcoming Comparing Java Web Frameworks talk, I'd like to show some statistics of web framework usage in AppFuse. Please vote for the one you're using in the following poll. I'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.
You'll need to create an account and login to vote. To do this, go to View > Account > Sign Up.

I'll compile the results of this poll on Friday morning (April 27th), so you have until then for your vote to be counted!
Update: Here is the ApacheCon EU: Comparing Java Web Frameworks Presentation
Update: Thanks to the 64 of you that voted. Here's the results of the poll:

As I said last time, I find the results interesting because AppFuse lowers the barriers and reduces the learning curve for all of these frameworks.
Candy for AppFuse tries to easy the adoption and usage of AppFuse 2.0 by adding some eye candy in the form of Eclipse Plug-ins. If you want the power of an integrated set of excellent J2EE tools and frameworks managed from the comfort of your IDE, give Candy for AppFuse a try.

![]()
The AppFuse Team is pleased to announce the release of AppFuse 2.0 M4!
This release marks a milestone in the usability of AppFuse 2.x. A lot of folks (including myself) have been using AppFuse 2.0 on projects and have fixed quite a few issues. In addition to polishing the tutorials, we've fixed a fair amount of i18n bugs and packaging issues with modular archetypes.
We were hoping to get AMP's code generation and XFire integrated in M4, but were it's going to have to wait until M5.
AppFuse 2.0 is available as a Maven archetype. For information on creating a new project using this release, please see the QuickStart Guide.
If you've used AppFuse 1.x, but not 2.x, you'll want to read the FAQ and join the user mailing list if you have any questions. The Maven Reference Guide has a map of Ant -> Maven commands.
The 2.0 series of AppFuse has a minumum requirement of the following specification versions:
- Java Servlet 2.4 and JavaServer Pages (JSP) 2.0
- Java 5 for Development (Java 1.4 for deployment using the Retrotranslator Plugin)
For more information, please see the 2.0 M4 Release Notes.
We appreciate the time and effort everyone has put toward contributing code and documentation, posting to the mailing lists, and logging issues.
The AppFuse team is pleased to announce the release of AppFuse 2.0 M3!
This release marks a milestone in our documentation efforts. We've completed all of the web framework tutorials and ensured that all the archetypes work properly. Turkish language support was added and native2ascii was integrated so all i18n bundles should work properly.
The major things missing from this release are code generation (AppGen) and web services (XFire) support. We hope to add both of these before the final release.
AppFuse 2.0 is available as a Maven archetype. For information on creating a new project using this release, please see the QuickStart Guide.
The 2.0 series of AppFuse has a minumum requirement of the following specification versions:
- Java Servlet 2.4 and JavaServer Pages (JSP) 2.0
- Java 2 Standard Platform Edition (J2SE) 5.0
For more information, please see the 2.0 M3 Release Notes.
We appreciate the time and effort everyone has put toward contributing code and documentation, posting to the mailing lists, and logging issues.
I was hoping to have M3 done last week. However, the previous week was a doozy (my company laid off everyone and shut its doors), so I lost a fair bit of time with that. Last week I was juggling interviews and working on AppFuse. The good news is I did complete the documentation for JSF, as well as fixed a number of bugs in JIRA. This week, I'll be working on the Spring MVC tutorial (Struts 2 is already done) as well as XFire and AMP (AppFuse Maven Plugin - for code generation).
I'd like to say M3 will be out next week, but I won't promise anything. The last 20% often takes the longest. ![]()
If you'd like to try out what we've done so far, you could use the 1.0-M3-SNAPSHOT version of the archetypes to create your project.
I've updated the Event Calendar with new tentative release dates.