Other ApplicationsStruts Resume
Set your name in
AppFuse 1.9.4 Released! (October 23, 2006)
This release's major new features are upgrading to Spring 2.0, Hibernate 3.2, and Facelets + Ajax4JSF integration for the JSF option. In addition, many libraries have been fixed and a few bugs have been squashed.
Equinox 1.7 Released! (October 20, 2006)
This release's major new features are upgrading to Spring 2.0, Hibernate 3.2, an Ajax + Spring MVC version, an Acegi Security + Spring MVC version and Struts 2.0 as an optional web framework. It's highly likely that the "extras/security" package can be installed with other web frameworks, but it's only been tested with Spring MVC. Furthermore, this release provided all of the different combinations that Equinox provides - all 50 of them!
AppFuse 1.9.3 Released! (July 11, 2006)
This release is primarily a bug fix release, but also contains upgrades to several dependent libraries, including Acegi Security 1.0.1.
AppFuse 1.9.2 Released! (June 6, 2006)
This release includes CSS Framework integration, EMMA code-coverage support and AppGen sub-package support.
AppFuse 1.9.1 Released! (April 7, 2006)
This release includes XFire 1.0, Tapestry 4.0.1 and WebWork 2.2.2, as well as support for using AppGen to reverse engineer database tables (using Middlegen). iBATIS is now supported by AppGen and a Create iBATIS DAO Tutorial has been put together.
AppFuse 1.9 Released! (January 14, 2006)
This release includes full Acegi Security integration, support for Ajax with DWR and Scriptaculous and many bug fixes/upgrades.
This release is a security and bug fix release with no new features. It includes upgrades to Acegi Security and Spring. To install and configure AppFuse for development, see the QuickStart Guide.
This release is mostly a bug fix release with no new features. It also includes many upgrades to the core libraries (Hibernate, Spring, iBATIS, MyFaces). Thanks to all the sponsors who have contributed products and free hosting to the AppFuse project.
This release replaces Container Managed Authentication (CMA) with Acegi Security. Other major features include numerous bug fixes to AppGen and a refactoring of build.xml to use Ant 1.6 features. Eclipse and IDEA project files were also improved so you can easily run tests from within your IDE. A MyJavaPack all-in-one installer was also added so you can download everything you need for AppFuse at once.
This release contains support for JSF/MyFaces and Tapestry as web framework options. AppGen has been updated to work with both of these frameworks and I added new tutorials as well. You can read about my experience in Integrating JSF and Tapestry into AppFuse.
tutorials. I still encourage users to read through and do the tutorials in order to learn the code that is being generated.
removing Struts from the services layer. I also made improvements to Spring and its context file loading so you should be able to run unit tests from your IDE.
Other notables include full i18n support (with translations in Dutch, Portuguese and Chinese), improved setup-tomcat target (no additional JARs needed now), and an option to use Spring's MVC framework instead of Struts - with full tutorials! If you'd like, you can read more about my conversion from Struts to Spring. Enjoy!
This release is a major improvement over the last one. Not only did I upgrade all the code to use AppFuse 1.4 (release notes), but I also removed Struts from the services layer. Moreover, you can actually enter almost all of the pieces of a resume and render it in HTML and Word format. The resume-entry piece (and sections you can enter) is largely based on what Monster.com uses. I may add other sections in the future (i.e. awards and publications).
The main reason this is not a 1.0 release is because an administrator is the only one who can edit the HTML template - and the Word/RTF template is not editable online. Allowing a user to override the default template(s) will be the primary goal in 1.0.
Here's a specific rundown of all the changes from the changelog:
This release involves many changes: re-arranging packages/directories, Spring integration, Remember Me refactorings and I also added iBATIS as a persistence option. I also spent a lot of time going through the tutorials to make sure they are up to date. I've been using AppFuse 1.4 for a few weeks on my current project, and I really do like the way Spring makes it easy to configure Hibernate, Transactions and Interface->Implementation relationships. If you're interested in upgrading your AppFuse 1.x app to use Spring, you can checkout this howto.
I also made the leap and moved the AppFuse project from SourceForge to java.net. This is mainly so I have more control over mailing lists and adding other developers. As of today, CVS files in SourceForge and Java.net are the same - but I'll only be updating Java.net from here on out. I also have released files in both projects, but will only use java.net in the future.
Here's a specific rundown of all the changes from the changelog.
This release fixes a few compatibility issues with Resin and other databases - specifically PostgreSQL and DB2. The major new functionality in this release is Easy Database Switching. Basically, you can very easily switch from using MySQL to PostgreSQL by only changing a few properties in your build.properties. I implemented this on my current project last week because I do most of my development (at the client) on a PowerBook. The client wants to deploy onto a DB2 database - and there is not DB2 install for the Mac. Since Hibernate allows you to easily switch between databases, I figured I could develop using MySQL on the Mac, but have the default (CVS version) use DB2. One of the things I didn't want to do was to have a build.properties.sample, because I love projects that "just work" when you type "ant". So I changed the the build process so that database.properties is generated from default settings (MySQL) or the settings in build.properties (if specified). As part of the build process, Ant looks for the following build.properties files:
What this allows you to do is to take your customized database settings and put them in ~/.build.properties and they'll be applied to any AppFuse-derived project. This makes it easy to keep the CVS version of your project tied to one database and a developer's local version tied to a different database.
Slick stuff IMO. Here's a specific rundown of all the changes from the changelog.
This is primarily a bug fix release. Here are the details from the release notes:
This biggest feature in this release is Documentation. I finally found the time to write up some Tutorials on developing with AppFuse. They're on this wiki and also in the "docs" folder of the binary and source downloads. In writing this documentation, I went through almost all aspects of the code with a fine-tooth comb made sure it's doing what I want it to do.
I was finally able to get things working with J2EE 1.4, which basically involved removing j2ee.jar from my MailUtil's classpath and just including activation.jar and mail.jar. If you're not there yet, simply change the paths for activation.jar and mail.jar in properties.xml (look for common.compile.classpath). You can use j2ee.jar instead of mail.jar and activation.jar with J2EE 1.3 and 1.4 B2.
I was also able to get all unit tests to pass on Tomcat 5, and the "setup-tomcat" target now supports Tomcat 5. I wasn't able to get "Remember Me" to work - see the tomcat-user mailing list for more details.
I feel this release deserves the big 1.0 designation because it is an up-to-date representation of my learnings and my perceived best practices in building web applications. Of course, as I learn more, I will continue to push out new releases.
In this release, I did a lot of refactoring and enhancements to existing features. The DAO and Manager interfaces are no longer tied to Struts or Hibernate. Hibernate's Session object is now passed as an argument into Manager and DAO constructors, rather than method signatures.
The Remember Me feature has been refactored so the username and password cookies are only available under the /appfuse/security url-pattern. I also changed the posting to "j_security_check" in LoginServlet from response.sendRedirect to an HTTP POST, using Jakarta Common's HttpClient. The reason I have a LoginServlet vs. just using action="j_security_check" in my <form> is to encrypt passwords.
I've developed 3 different applications using AppFuse (struts-resume is one of them), and I have found that it's a pain to upgrade to new versions of AppFuse. Because of this, I don't recommend upgrading unless you really need to. I will be upgrading struts-resume to AppFuse 1.0, but I doubt I'll upgrade it to any future AppFuse releases - it's just too much work for not much reward.
The highlights of this release include rendering a resume with Velocity (demo), a password hint feature, self-registration feature, and a gzip compression filter. See the release notes below for a full list of changes. If you're looking to create a new application based on this architecture, you're best off using AppFuse.
You can also check out the Struts Resume Wiki Page for more information.
This release contains all kinds of goodies - including a new password hint feature, a compression filter, and a JSP 2.0-syntax option (when deploying). It also fixes a bug in persisting roles and includes many upgrades of dependent packages (Hibernate, PMD, Checkstyle, DBUnit and WebTest).
You can also check out the AppFuse Wiki Page for more information.
This release is a simplification of 1.1 - removing the XDoclet dependency. Also, I synched up the build.xml with AppFuse's where appropriate (i.e. for the unit tests).
The main reason for this release is to demonstrate self-registration (and auto-login) in a CMA (Container Managed Authentication) environment. I also upgraded most of the dependent packages (i.e. Struts, Hibernate) to their latest releases, and added a binary release as an optional download.
You can also browse the API Documentation. You should be able to view Source Code here too! If there's not a "View Source" link on a class's javadoc page, you can get to it by using Classname.java.html syntax in your browser's address box.
All kinds of upgrades in this release including: Hibernate (2.0 Beta 4), Struts (1.1-20030326), DBUnit (1.6-dev), Canoo WebTest (build276), XDoclet (1.2-20030328), and Display Tag Library (0.8.5). The only real new features are User Administration and a role-based Menu system. That is, only Admins can edit users. This was mainly motivated by the fact that someone keeps changing the password on the demo site, so now I can reset it using a browser rather than SQL.
AppFuse is Struts Resume without any resume-specific code. I hope to use this project as my baseline for future web application projects. Struts Resume will (hopefully) continue to evolve into an application that I can host my resume on.
This application is a simple security example written for Wrox's Professional JSP 2.0. In reality, it is just a trimmed down version of struts-resume. It is designed as an example application and that is all. I will not be developing this application further, only appfuse and struts-resume will feel that love. ;-)
I fixed a small bug in database.properties.sample where the
Hopefully someday it will grow into a kick ass resume hosting application. I was thinking it'd be very cool if it could hook up with Monster or other resume-capturing systems. How sweet would it be to click a "publish" button and to bypass those interfaces that make you type in your resume all over again. I wonder if they're conforming to a DTD or XSD.
I've updated Struts-Resume to handle Hibernate sessions
better and brought it in line with what I covered in the Wrox book,
Professional JSP 2.0. This project is now
hosted at SourceForge in the
Struts Applications project. This means that you
can check it out from CVS and also
source online. I've decided not to release a .war version of this project, since it uses
Ant and Hibernate to build the database. It also employs DBUnit for populating it. Currently,
only MySQL is supported out-of-the-box. Since Hibernate supports many different
database types, you could easily change this by editing
This application was created using AppFuse, which means you can use it to create your own new project. Simply execute the following ant command:
ant new -Dapp.name=yourprojectname -Ddb.name=yourdbname
All the tests should run, but many are incomplete. This is on the roadmap and will should be completed in a coming release. Please send any comments or questions to
I will be setup up a demo on this site shortly.
This is a list old downloads that people still seem to visit this page for.