Raible's Wiki

Raible Designs
Wiki Home
Recent Changes


  - Korean
  - Chinese
  - Italian
  - Japanese

QuickStart Guide
  - Chinese
  - French
  - German
  - Italian
  - Korean
  - Portuguese
  - Spanish
  - Japanese

User Guide
  - Korean
  - Chinese

  - Chinese
  - German
  - Italian
  - Korean
  - Portuguese
  - Spanish

  - Korean

Latest Downloads

Other Applications

Struts Resume
Security Example
Struts Menu

Set your name in

Referenced by

JSPWiki v2.2.33


Hide Menu


This is version 72. It is not the current version, and thus it cannot be edited.
[Back to current version]   [Restore this version]

AppFuse 1.7 Released! (December 8, 2004)

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.

For more information on AppFuse, check out the AppFuse Wiki Page or FAQ.

AppFuse 1.6.1 Released! (November 9, 2004)

This release is primarily a bug fix release, but it also contains a slick "AppGen" tool for generating full CRUD (with sample data and tests) from a POJO. AppGen essentially automates everything you do in the tutorials. I still encourage users to read through and do the tutorials in order to learn the code that is being generated.

For more information on AppFuse, check out the AppFuse Wiki Page or FAQ.

AppFuse 1.6 Released! (October 9, 2004)

This release's main features are swapping out Tiles for SiteMesh and adding WebWork as a web framework option. I also refactored the Struts Action tests to use MockStrutsTestCase and eliminated the need to use Cactus for running web tests. This reduced test execution time by over 50%. The relationship between users and roles was re-worked to take advantage of Hibernate's features as well.

For more information on AppFuse, check out the AppFuse Wiki Page or FAQ.

AppFuse 1.5 Released! (May 27, 2004)

This release has lots of modifications that I've been meaning to make for quite some time. Specifically (1) removing the dependency on j2ee.jar and (2) 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!

For more information on AppFuse, check out the AppFuse Wiki Page or FAQ.

Struts Resume 0.9 Released! (April 5, 2004)

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:

For more information on Struts Resume, check out the Struts Resume Wiki Page or FAQ.

AppFuse 1.4 Released! (March 1, 2004)

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.

  • Added "cactus" task for running Cactus tests in Tomcat 4.x and Resin 3.0.5.
  • Added Tomcat Ant tasks for managing tomcat with the Manager app and Ant.
    • Currently supports: install, remove, start, stop, reload and list.
    • I recommend using "ant setup-tomcat deploy" and then using "ant reload" after running "ant deploy" when you change .java or config files.
  • Removed "upload" module and integrated file-upload into the core. Removed unnecessary scriplets from uploadForm.jsp.
  • UI Enhancements:
    • Changed CSS for error messages to have a red border around them - making it easier to distinguish errors from messages.
    • Added onclick and onfocus event handler to form inputs to select the text when an input type="text" is clicked or focuses on.
  • Changed directory structure from common/ejb/web to dao/service/web.
  • Added Spring to configure Hibernate, DAOs and Managers. Configured declarative transactions at the service and dao layers. Configured OpenSessionInViewFilter for guaranteeing one transaction per request. Read more...
  • Changed UserCounterListener to only record users that have logged in successfully. Also added a screen to show currently logged in users.
  • Changed default session timeout to 10 minutes instead of 60.
  • Implemented persistent login cookie strategy (for Remember Me) as recommended by Charles. Read more...
  • Added iBATIS as a persistence framework option.
  • Added custom web.xml XDoclet template for ordering filters and listeners.
  • Added support for generating indexed property setters in ActionForms when generating Forms with XDoclet. This support includes adding Velocity JARs to the the list of 3rd party JARs. Currently, Velocity is only used by XDoclet.
  • Added "Account Information" e-mail as part of registration process. This e-mail gets sent the e-mail address the user entered on signup.
  • Dependent packages upgraded:
    • Cactus 1.6 Nightly (20030119) to support the "cactus" task and Resin 3.0.5
    • JSTL 1.0.5
    • Patched Canoo's WebTest to work with Ant 1.6
    • Hibernate 2.1.2
    • MySQL JDBC Driver 3.0.11

For more information on AppFuse, check out the AppFuse Wiki Page or FAQ.

AppFuse 1.3 Released! (January 16, 2004)

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:

  • ${user.home}/.${ant.project.name}-build.properties
  • ${user.home}/.build.properties
  • build.properties

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.

  • Many changes to database settings so that database.properties is generated at run-time from properties in build.properties (defaults to MySQL). This makes it easy for users to run a MySQL database in development and have a DB2 database (or any other) in production. Just customize your database settings and put them in ~/.build.properties or ~/.appname- build.properties and these settings will be used instead of the default.
    • As part of this process, I tested AppFuse on DB2 8.1 (on Windows) and PostgreSQL 7.4 (on OS X).
    • Testing on other servers caused me to change from generator-class="native" to generator-class="increment" - which still works fine on MySQL.
    • I also changed tomcat-context.xml to dynamically substitute database properties and defaultAutoCommit is now "true" by default.
  • Added error pages for 404 (page not found) and 403 (access denied), both with pretty pictures. ;0) Protected /editUser.do for admin role only.
  • Moved filter-mappings from Filter's JavaDocs (XDoclet) to metadata/web/filter-mappings.xml in order to control the order of execution.
  • Made RememberMe feature configurable via a "rememberMe.enabled" property in app-settings.xml. This won't kick on Resin until the filter is invoked at least once. Tomcat initializes filters on startup.
  • Upgraded oscache.jar in Hibernate 2.1.1 to OSCache 2.0.1 and configured OSCache to cache JSP changes. Also modified the oscache-2.0.1.jar to have a URI for the tag library. Turned off caching of JSP pages - to enable, uncomment filter-mapping in metadata/web/filter-mappings.xml.
  • Made changes to be Resin 3.0.4 friendly.
  • Refactored BaseDaoHibernate to consolidate retrieveObject and removeObject methods. Also changed saveObject to do ses.saveOrUpdate and removed storeObject method.
  • Replaced CompressionFilter with GZipFilter that works on Resin.
  • Added print stylesheet support. Thanks to Bear Giles for the suggestion.
  • Added Clickstream and menu/JSPs to view user paths.
  • Dependent packages upgraded:
    • XDoclet 1.2.0
    • Cactus 1.6 Nightly (20030116) to support "cactus" task for supporting a "contextxml" attribute for testing in Tomcat.

For more information on AppFuse, check out the AppFuse Wiki Page or FAQ.

AppFuse 1.2 Released! (December 20, 2003)

This is primarily a bug fix release. Here are the details from the release notes:

  • Backed out Http Post for Remember Me. It was not redirecting user to the page they originally requested. Using reponse.sendRedirect does send the user to the proper location. Turned on password encryption (SHA) to protect any passwords that end up in log files. Turned off encryption in Tomcat.
  • Changed configuration parameters in servlet context to be in a hashmap.
  • Improvements to StrutsGen tool to generate list screen as well and to fill in more missing elements.
  • Changed to close Hibernate session when object not found in BaseDaoHibernate.
  • Fixed bug in UserAction.save: when creating a new user, role defaults to "tomcat" regardless of what the user chooses.
  • Dependent packages upgraded:
    • Hibernate 2.1.1
    • Struts Menu 2.1
    • WebTest Build 379

For more information on AppFuse, check out the AppFuse Wiki Page or FAQ.

AppFuse 1.1 Released! (December 12, 2003)

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.

Included in this release are upgrades to Hibernate 2.1 Final and Display Tag 1.0 B2. For a complete changelog, view the README.txt in CVS.

For more information on AppFuse, check out the AppFuse Wiki Page or FAQ.

AppFuse 1.0 Released! (November 30, 2003)

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.

You can also check out the AppFuse Wiki Page or FAQ for more information.

Struts Resume 0.8 Released! (September 14, 2003)

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.

AppFuse 0.9 Released. (August 10, 2003)

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.

News 2003.06.27 - Security Example 1.1 Released!

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).

News 2003.06.12 - AppFuse 0.8 Released!

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.

News 2003.04.04 - Struts Resume and AppFuse 0.7 Released!

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.

Display Old News

Go to top   More info...   Attach file...
This particular version was published on 06-Nov-2006 13:52:33 MST by MattRaible.