appfuse 2.0 documentation

247
Space Details Key: APF Name: AppFuse 2 Description: AppFuse is an application for "kickstarting" webapp development. To learn more about AppFuse and why you should use it, see Seven simple reasons to use AppFuse at http://www-128.ibm.com/developerworks/java/library/j-appfuse . Creator (Creation Date): mraible (Oct 14, 2006) Last Modifier (Mod. Date): mraible (Apr 20, 2007) Available Pages Home AppFuse QuickStart Maven for Newbies Demos and Videos FAQ News Articles Blogs Presentations Project Information Developer Guide Continuous Integration Project Policies Release Process Event Calendar IRC Channel Issue Tracking Mailing Lists Powered By AppFuse Roadmap Software Process Source Repository Sponsors Reference Guide CSS Framework Database Profiles IDEs Eclipse IDEA Document generated by Confluence on Sep 05, 2007 00:56 Page 1

Upload: pmvalle

Post on 17-Oct-2014

334 views

Category:

Documents


1 download

TRANSCRIPT

Space DetailsKey: Name: Description: APF AppFuse 2AppFuse is an application for "kickstarting" webapp development. To learn more about AppFuse and why you should use it, see Seven simple reasons to use AppFuse at http://www-128.ibm.com/developerworks/java/library/j-appfuse.

Creator (Creation Date):

mraible (Oct 14, 2006)

Last Modifier (Mod. Date): mraible (Apr 20, 2007)

Available Pages Home AppFuse QuickStart Maven for Newbies Demos and Videos FAQ News Articles Blogs Presentations Project Information Developer Guide Continuous Integration Project Policies Release Process Event Calendar IRC Channel Issue Tracking Mailing Lists Powered By AppFuse Roadmap Software Process Source Repository Sponsors Reference Guide CSS Framework Database Profiles IDEs Eclipse IDEAPage 1

Document generated by Confluence on Sep 05, 2007 00:56

MyEclipse NetBeans Licenses Maven 2 Maven Plugins Security Apply Security to Managers and DAOs CAPTCHA Integration Configuring the Menu System Database Encryption with Jasypt-Hibernate LDAP Authentication Protecting Actions and Controllers Secure JSF components SiteMesh Spring Web Filters Tutorials Development Environment Installing an SMTP Server Migration Guide Release Notes 2.0 M3 Release Notes 2.0 M4 Release Notes 2.0 M5 Release Notes 2.0 RC1 Persistence AppFuse Core Classes Using Hibernate Java 5 Enums Persistence with Hibernate Using iBATIS Using JPA Services Web Services Web Using JSF Using Spring MVC Using Struts 2 Using Tapestry

Document generated by Confluence on Sep 05, 2007 00:56

Page 2

HomeThis page last changed on Sep 04, 2007 by mraible.

Cannot resolve external resource into attachment. 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's created by your IDE when you click through a wizard to create a new web project. 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+. AppFuse 2.0 is a restructuring of AppFuse 1.x to use Maven 2 and JDK 5 and annotations. The major reasons we've changed to Maven 2 are: Dependency downloading Easier maintenance (everything can be compiled at once) Easier upgrading for end-users To see our progress to date, please see the roadmap. If you'd like to help out or ask questions about AppFuse 2.0, please do so on the user mailing list. If you'd like to try your luck with AppFuse 2.0, see the Hello World Screencast and use the QuickStart Guide to get started. New features in AppFuse 2.0: 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 The latest release candidate for 2.0 is RC1. Try it out today! The latest stable release of AppFuse is 1.9.4. Please see the 1.9.4 QuickStart Guide to get started with this release. Please use the menu on the right to navigate this site.

Recent Project NewsTitle AppFuse 2.0 RC1 Released Matt Raible Author Date Posted Sep 04, 2007 01:50

Document generated by Confluence on Sep 05, 2007 00:56

Page 3

AppFuse vs. Grails vs. Rails New Server at Contegix AppFuse 2.0 RC1 Status AppFuse 2.0 M5 Released AppFuse Maven Plugin Status What web framework are you using with AppFuse? Candy for AppFuse AppFuse 2.0 M4 Released AppFuse 2.0 M3 Released AppFuse 2.0 M3 Status for AppFuse? AppFuse 2.0 M2 Released! 2.0 Release Schedule AppFuse 2.0 Status

Matt Raible Matt Raible Matt Raible Matt Raible Matt Raible Matt Raible Matt Raible Matt Raible Matt Raible Matt Raible

Aug 10, 2007 09:24 Jul 27, 2007 08:26 Jul 11, 2007 10:30 May 23, 2007 17:18 May 14, 2007 18:49 Apr 25, 2007 11:00 Apr 05, 2007 11:03 Mar 24, 2007 15:59 Feb 06, 2007 15:04 Jan 29, 2007 15:54 Jan 17, 2007 02:38 Jan 12, 2007 18:22 Jan 08, 2007 11:53 Jan 05, 2007 23:15

What extension should we use Matt Raible Matt Raible Matt Raible Matt Raible

Document generated by Confluence on Sep 05, 2007 00:56

Page 4

AppFuse QuickStartThis page last changed on Sep 04, 2007 by mraible.

To start developing Java EE applications with AppFuse 2.x, please following the instructions below:

Table of Contents1. Create a new project. 2. Run it. 3. Have Fun.

Create a project1. Download and install JDK 5+. 2. Download and install MySQL 5.x. 3. Setup a local SMTP server or change mail.properties (in src/main/resources) to use a different host name - it defaults to "localhost". 4. Download and install Maven 2.0.6. If you'd prefer to create your project from Eclipse rather than from the command-line, checkout Candy for AppFuse. 5. AppFuse comes in a number of different flavors. To optimize and simplify your experience as a user, we've created a number of different archetypes (a.k.a. starter projects). There are currently two types of AppFuse Archetypes: basic and modular. The basic archetypes are ideal for creating projects that will serve as web applications. The modular archetypes contain "core" and "web" modules and are ideal for creating projects that have a re-usable backend. The list of commands to produce these projects is below. You should change the groupId to match your preferred package name and the artifactId to match your project's name. The warnings you see when creating an archetype are expected. If you see BUILD SUCCESSFUL at the end, your project was created successfully. Archetype JSF Basic Command mvn archetype:create -DarchetypeGroupId=org.appfuse.archetypes -DarchetypeArtifactId=appfuse-basic-jsf -DremoteRepositories=http://static.appfuse.org/releases -DarchetypeVersion=2.0-rc1 -DgroupId=com.mycompany.app -DartifactId=myproject mvn archetype:create -DarchetypeGroupId=org.appfuse.archetypes -DarchetypeArtifactId=appfuse-basic-spring -DremoteRepositories=http://static.appfuse.org/releases -DarchetypeVersion=2.0-rc1 -DgroupId=com.mycompany.app -DartifactId=myproject

Spring MVC Basic

Document generated by Confluence on Sep 05, 2007 00:56

Page 5

Struts 2 Basic

mvn archetype:create -DarchetypeGroupId=org.appfuse.archetypes -DarchetypeArtifactId=appfuse-basic-struts -DremoteRepositories=http://static.appfuse.org/releases -DarchetypeVersion=2.0-rc1 -DgroupId=com.mycompany.app -DartifactId=myproject mvn archetype:create -DarchetypeGroupId=org.appfuse.archetypes -DarchetypeArtifactId=appfuse-basic-tapestry -DremoteRepositories=http://static.appfuse.org/releases -DarchetypeVersion=2.0-rc1 -DgroupId=com.mycompany.app -DartifactId=myproject mvn archetype:create -DarchetypeGroupId=org.appfuse.archetypes -DarchetypeArtifactId=appfuse-modular-jsf -DremoteRepositories=http://static.appfuse.org/releases -DarchetypeVersion=2.0-rc1 -DgroupId=com.mycompany.app -DartifactId=myproject mvn archetype:create -DarchetypeGroupId=org.appfuse.archetypes -DarchetypeArtifactId=appfuse-modular-spring -DremoteRepositories=http://static.appfuse.org/releases -DarchetypeVersion=2.0-rc1 -DgroupId=com.mycompany.app -DartifactId=myproject mvn archetype:create -DarchetypeGroupId=org.appfuse.archetypes -DarchetypeArtifactId=appfuse-modular-struts -DremoteRepositories=http://static.appfuse.org/releases -DarchetypeVersion=2.0-rc1 -DgroupId=com.mycompany.app -DartifactId=myproject mvn archetype:create -DarchetypeGroupId=org.appfuse.archetypes -DarchetypeArtifactId=appfuse-modular-tapestry -DremoteRepositories=http://static.appfuse.org/releases -DarchetypeVersion=2.0-rc1 -DgroupId=com.mycompany.app -DartifactId=myproject mvn archetype:create -DarchetypeGroupId=org.appfuse.archetypes -DarchetypeArtifactId=appfuse-core -DremoteRepositories=http://static.appfuse.org/releases -DarchetypeVersion=2.0-rc1 -DgroupId=com.mycompany.app -DartifactId=myproject

Tapestry Basic

JSF Modular

Spring MVC Modular

Struts 2 Modular

Tapestry Modular

Core (backend only)

You should be able to run AppFuse immediately if you have a MySQL 5.x database installed and it's

Document generated by Confluence on Sep 05, 2007 00:56

Page 6

accessible to root using no password. If you'd prefer to use an embedded database, we've recently added Database Profiles for H2, HSQLDB, etc.

MySQL Security Running MySQL using root with no password is not the most secure thing to do. Once your database is created, you can change the root password using the command below:mysql --user=root --pass='' mysql -e "update user set password=password('newpw') where user='root'; flush privileges;"

AppFuse uses the username "root" and a blank password by default. To change these values, modify the and properties in your project's pom.xml (at the bottom).

Run your applicationRunning AppFuse is easy now. Once the archetype project is created, Maven will create and populate your database using the hibernate3 and dbunit plugins, respectively. All you have to do is use Maven to run the Jetty container and view your application. 1. From the command line, cd into your new project's directory and run mvn to download JARs, Tomcat and run the integration tests in your project. Now is a good time to take a coffee break or grab a beer - downloading everything and running the tests can take 5-10 minutes. If you've created a modular archetype, you'll also need to run mvn install so the web component can reference the core component correctly. 2. To view your application run mvn jetty:run-war from your project's directory. Maven will start Jetty and you should be able to view your application in your browser at http://localhost:8080. If you're using a modular archetype, you'll need to run mvn jetty:run-war from your project's web directory. The default username/password for an admin user is admin/admin. For a regular user, use user/user. 3. To override files from AppFuse, run mvn war:inplace. This will extract the dependent WARs into src/main/webapp, where you can change files to your heart's content. When you have the war expanded in your source tree, you can run mvn jetty:run. This will allow you to change files on-the-fly and Jetty will reload them as needed. The only problem with this approach is you end up with an "exploded AppFuse" in your project, which won't bode well for upgrading. We recommend you check your project into source control before running mvn war:inplace. That way, it'll be easier for you to decide what needs to be checked in (over written) and what can be deleted. If you receive OutOfMemory errors when using jetty:run, see this mailing list thread. You can change AppFuse from its "embedded mode" to full-source mode by running mvn appfuse:full-source from your project's root directory. Development Environment See development environment for detailed instructions on how to setup your computer to develop AppFuse-based applications.

Document generated by Confluence on Sep 05, 2007 00:56

Page 7

Changing database settings To change your MySQL database settings, simply change the properties at the bottom of your pom.xml. See Database Profiles to use a database other than MySQL.

Develop your applicationYou can develop your application using Eclipse, IDEA or NetBeans. For Eclipse, run mvn install eclipse:eclipse to generate project files. For IDEA, use mvn idea:idea. Further instructions can be found in the IDE Reference Guide. The Tutorials should help you get started developing your application.

Document generated by Confluence on Sep 05, 2007 00:56

Page 8

Maven for NewbiesThis page last changed on Jul 10, 2007 by djauncey.

This page is intended to be a place to document my impressions about Maven and AppFuse 2.x as I take my AppFuse 1.9.x experience and move forward into the future of webapp development. Now for a bit of background about me. I'm the Development Supervisor for Sum-Ware, Inc., which basically means I make sure the other developer and network admin have something to do and I have to get done the stuff that's left. I'm taking a two pronged approach to learning AppFuse 2.x. At work I have a Windows desktop running Sun Java 1.6 and Eclipse 3.2. The project I'm starting at work uses the "appfuse-basic-struts" archtype. At home I'm doing a different project on my Ubuntu laptop with Sun Java 1.6 and Eclipse 3.2 (I may switch to IDEA on this project--dunno yet). This project is built on the "appfuse-modular-struts" archtype. I'm sticking with Struts 2 (at least for now) for simplicity and my own sanity. I'd like to limit the number of variables as much as I can during this learning process.

Targets v. Goals The first thing that I noticed is the maven "goals" are similar, but different than ant "targets." Goals are cool because they are universal and apply to all maven projects, but targets are a bit easier to figure out because they exist entirely within your build.xml file (more or less). The Maven 2 page has a good list of commonly used goals and what they are for. I must say even if it is not obvious how to use Maven in the beginning I must say it is pretty easy to get started with it. Once the prerequisites were installed (none of which were hard to do), I had AppFuse running within 10 minutes. And most of that time was spent letting maven fetch dependencies.

IDE integration Eclipse integration is pretty nice. But I did have a couple of weird things happen. When creating my POJO I had to clean the project a couple of times to get the Eclipse to recognize the annotations I ran the command to create the M2_REPO stuff in my project. That did work, I could see all the dependant JAR's listed in the project, but it didn't fix the annotation problem mentioned above. I had to add the M2_REPO variable to the environment as well. After that things went pretty smooth. I have not used IDEA with AppFuse 2.x yet, but I hear it is better than Eclipse.

Dependency downloads This is really cool and a bit weird at the same time. I have gotten a number of Warning and Error messages while maven is downloading dependencies. But the really weird part is stuff seems to still

Document generated by Confluence on Sep 05, 2007 00:56

Page 9

work. Check out this output for example:[INFO] Wrote settings to /home/nathan/src/fetch-calendar/web/.settings/org.eclipse.jdt.core.prefs [INFO] Wrote Eclipse project for "fetch-calendar-webapp" to /home/nathan/src/fetch-calendar/web. [INFO] Sources for some artifacts are not available. List of artifacts without a source archive: o org.apache.struts:struts2-core:2.0.6 o commons-fileupload:commons-fileupload:1.1.1 o opensymphony:clickstream:1.0.2 o org.apache.struts:struts2-spring-plugin:2.0.6 o velocity-tools:velocity-tools-view:1.0 o javax.servlet:jsp-api:2.0 o org.apache.struts:struts2-codebehind-plugin:2.0.6 o freemarker:freemarker:2.3.8 o org.tuckey:urlrewrite:2.5.2 [INFO] [INFO] [INFO] [INFO] [INFO] [INFO] [INFO] [INFO] [INFO] [INFO] [INFO] [INFO] [INFO] [INFO] [INFO] [INFO]

-----------------------------------------------------------------------Reactor Summary: -----------------------------------------------------------------------AppFuse Modular Application ........................... SUCCESS [6.338s] AppFuse Modular Application - Core .................... SUCCESS [57.907s] AppFuse Modular Application - Web (Struts 2) .......... SUCCESS [2:20.721s] ----------------------------------------------------------------------------------------------------------------------------------------------BUILD SUCCESSFUL -----------------------------------------------------------------------Total time: 3 minutes 27 seconds Finished at: Tue Apr 03 22:05:12 PDT 2007 Final Memory: 48M/63M ------------------------------------------------------------------------

How can struts2-core fail to download, yet I can run "mvn jetty:run-war" perfectly? I have no idea... :? Okay... I'm dumb. I just realized it can't get the source packages, but the binaries ware downloaded just fine. Maybe someone else will read this and avoid public humiliation

Hello WorldI'm sure there is a reason for the App.java and AppTest.java (and Core.java for modular archtypes) classes that get created when you make a new project. I just have no idea what that is. Maybe someone could link to an answer?

Maven and HTTP proxy settingsIf your local network is behind a HTTP proxy (note that this is different from a Maven repository proxy) you will see something like 'Error transferring file'. Find out the hostname and port of your proxy and add the following to your command-line: -DproxySet=true -DproxyHost= -DproxyPort= Note: if you've tried and failed a few times, the central repository may have become blacklisted. Add the -U command line option to force an update.

Document generated by Confluence on Sep 05, 2007 00:56

Page 10

Demos and VideosThis page last changed on Jun 24, 2007 by mraible.

There are online demos of AppFuse as well as a few videos. In addition, there are a number of public sites powered by AppFuse.

Online DemosUse username admin and password admin to login as an administrator - user/user will allow you to login as a user. Click on the links below to view a live demo. JSF + Spring + Hibernate Struts 2 + Spring + Hibernate Spring MVC + Spring + Hibernate Tapestry + Spring + Hibernate

VideosEasy CRUD with Struts 2

Watch QuickTime Video 14.2 MB, 6 minutes 6 seconds

Hello World

Document generated by Confluence on Sep 05, 2007 00:56

Page 11

Watch QuickTime Video 13.2 MB, 6 minutes 14 seconds Here you can download high quality videos (they're much clearer) 50.88 MB: https://appfuse.dev.java.net/files/documents/1397/58384/appfuse-2.0-videos.zip The projects created in these videos can be downloaded from the appfuse-demos project.

Document generated by Confluence on Sep 05, 2007 00:56

Page 12

FAQThis page last changed on Aug 20, 2007 by mraible.

This page is a growing list of frequently asked questions about AppFuse.

Table of Contents What is AppFuse? What are AppFuse's conventions for package naming? What is the difference between AppFuse 1.x and 2.x? Where are the Java source files and JSPs in 2.x? Can I use Ant instead of Maven in 2.x? Can I run AppFuse 2.x using Java SE 1.4? How do I customize the header and footer messages in 2.x? Why don't I have to install Tomcat with 2.x? What if I already have Tomcat installed and I'd like to use it? What does "basic" and "modular" mean when it comes to AppFuse 2.x archetypes? How do I tell IDEA to ignore deployment descriptors when compiling? How can I export my database using DbUnit? How can I change my AppFuse-generated project to use iBATIS or JPA? Is there any documentation that describes what all the filters do in web.xml? How do I configure LDAP Authentication? How do I debug my application when it's running in Jetty? How do I make Jetty start on a specific port? When saving Chinese or Japanese characters in a form, I'm getting java.sql.SQLException: Incorrect string value. How do I solve this? When using jetty:run, CSS and JavaScript files are locked - how can I fix this?

What is AppFuse?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's created by your IDE when you click through a wizard to create a new web project. AppFuse 1.x uses Ant to create your project, as well as build/test/deploy it. AppFuse 2.x uses Maven 2 to create your project as well as build/test/deploy it. IDE support is much better in 2.x because you can generate the IDE project files with Maven plugins. AppFuse 1.x uses XDoclet and JDK 1.4+. AppFuse 2.x uses annotations and JDK 5+.

What are AppFuse's conventions for package naming?It's recommended you start with com.companyname if you're commercial or org.organizationname if you're non-profit. Most folks match their internet domain name. From there, use your application name.

Document generated by Confluence on Sep 05, 2007 00:56

Page 13

From there, AppFuse expects you to use the following conventions: com.company.app.model -> Entities com.company.app.dao -> Dao Interfaces com.company.app.dao.hibernate -> Hibernate Implementations com.company.app.service -> Service Interfaces com.company.app.service.impl -> Service implementation com.company.app.webapp.action -> Struts Actions (this really depends on the framework you're using)

What is the difference between AppFuse 1.x and 2.x?AppFuse 2.0 works rather differently from AppFuse 1.x - Maven keeps the AppFuse core classes as dependencies. You add your code, and Maven will merge in the code from AppFuse. This should make it much easier for you to upgrade to future releases of AppFuse. If you run mvn jetty:run-war and point your browser to http://localhost:8080/ you will see that you have a fully fledged AppFuse project present. If you need to change any of the files in the web project, simply run mvn war:inplace in the web project to populate the src/main/webapp source directory. You will need to delete WEB-INF/lib and WEB-INF/classes/struts.xml (if you're using Struts) after doing this.

Where are the Java source files and JSPs in 2.x?AppFuse 2.x is a fair amount different from 1.x in that you don't get all the source to start your project with. The main reason for this is to make it possible for you to upgrade your application to a newer version of AppFuse. For a more detailed explanation, please see this mailing list thread. If you'd like to modify modify AppFuse's core entity classes, see how to modify core classes. If you'd like to convert your project so it doesn't rely on AppFuse dependencies and includes AppFuse's source instead, run mvn appfuse:full-source. This feature is only available in 2.0 M5+ and currently only works with basic archetypes. It will be expanded to support modular archetypes in 2.0 RC1.

Can I use Ant instead of Maven in 2.x?If you create a project using one of the basic archetypes in M5 and then run mvn appfuse:full-source, you can use a modified version of AppFuse Light's build.xml to build/test/deploy your project. Below are the steps needed to add Ant support to a basic archetype: Run mvn appfuse:full-source from your project's directory Download build.xml into your project. Edit build.xml to replace occurrences of "appfuse-light" with your project's name. Download maven-artifact-ant-2.0.4-dep.jar and copy it to a "lib" directory in your project. You will need to create this directory if it doesn't already exist.

We don't plan on supporting Ant for modular archetypes. If someone wants to contribute Ant support for them and support it, we'll be happy to add it.

Document generated by Confluence on Sep 05, 2007 00:56

Page 14

Can I run AppFuse 2.x using Java SE 1.4?AppFuse 2.x requires Java 5 for development, but not for deployment. You should be able to use the Retrotranslator Plugin to convert your WAR to be 1.4-compliant.

How do I customize the header and footer messages in 2.x?If you would like change the following heading: AppFuse Providing integration and style to open source Java Change src/main/resources/ApplicationResources.properties and change values for the webapp.name and webapp.tagline keys. To modify the "Your Company Here" text and its URL in the footer, you'll need to modify the company.name and company.url in this same file.

Why don't I have to install Tomcat with 2.x?If you run mvn integration-test, the Maven Cargo plugin will download and install Tomcat 5.5.17 and run the integration tests against it. If you want to see your project running in a server, you have two options: 1. Run mvn jetty:run-war - this will fire up a Jetty instance and it will be available at http://localhost:8080. 2. Run mvn cargo:start -Dcargo.wait=true and your application will be deployed to Tomcat and available at http://localhost:8081/applicationname-version. You can also add the Maven 2 Tomcat Plugin to your pom.xml and use mvn tomcat:run and mvn tomcat:run-war.

org.codehaus.mojo tomcat-maven-plugin /

What if I already have Tomcat installed and I'd like to use it?If you want to change Cargo to point to an existing instance of Tomcat, you should be able to change the bottom of pom.xml from:

${cargo.container}

Document generated by Confluence on Sep 05, 2007 00:56

Page 15

${cargo.container.url} ${installDir}

To:

${cargo.container} ${cargo.container.home}

You can also deploy to a running instance of Tomcat with Cargo.

What does "basic" and "modular" mean when it comes to AppFuse 2.x archetypes?Basic archetypes are meant for developing web applications with no re-usable backend. This is the recommended archetype to use with AppFuse 2.x. The tutorials assume you're using this archetype. Unlike Ant, Maven requires you to have a different "module" for each artifact you want to produce (i.e. JAR or WAR). This is what the modular archetypes are for. If you're an experienced Maven 2 user, you might consider this archetype. It's also useful if you need a backend that can be used by multiple clients.

How do I tell IDEA to ignore deployment descriptors when compiling?Right-click on the file in the messages window and choose "Exclude From Compile".

How can I export my database using DbUnit?Running mvn dbunit:export will export your database to target/dbunit/export.xml. You can override the destination location by passing in a -Ddest parameter:mvn dbunit:export -Ddest=sample-data.xml

How can I change my AppFuse-generated project to use iBATIS or JPA?As of AppFuse 2.0 M5, it's as easy as changing your changing the property in your root pom.xml to ibatis or jpa-hibernate. For further instructions, please see the JPA and iBATIS tutorials.

Document generated by Confluence on Sep 05, 2007 00:56

Page 16

Is there any documentation that describes what all the filters do in web.xml?See the Web Filters Reference Guide for a list of what each filter in web.xml is used for.

How do I configure LDAP Authentication?See the LDAP Authentication page for a sample configuration.

How do I debug my application when it's running in Jetty?Dan Allen has a nice writeup of how to do remoting debugging with Jetty.

How do I make Jetty start on a specific port?There are two easy methods depending on whether you want the change to be permanent (i.e. each time you run 'mvn jetty:run-war' or a manual port change. Permanent: In your project pom.xml look for the plugin with the artifactid 'maven-jetty-plugin' and add the elements to it:

org.mortbay.jetty maven-jetty-plugin 6.0.0 / 3 src/main/webapp/WEB-INF 8081

Manual: run 'mvn jetty:run-war -Djetty.port=8081'

When saving Chinese or Japanese characters in a form, I'm getting java.sql.SQLException: Incorrect string value. How do I solve this?To solve this problem, you'll need to drop and recreate your database with UTF-8 enabled. The following example shows how to do this with a database named myproject:

Document generated by Confluence on Sep 05, 2007 00:56

Page 17

mysqladmin -u root -p drop myproject mysqladmin -u root -p create myproject mysql -u root -p mysql> ALTER DATABASE myproject CHARACTER SET utf8 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT COLLATE utf8_general_ci; mysql> exit

You can also configure MySQL to use UTF-8 by default by adding the following to your c:\Windows\my.ini or /etc/my.cnf (on Unix) file:[mysqld] default-character-set=utf8

When using jetty:run, CSS and JavaScript files are locked how can I fix this?Jetty buffers static content for webapps such as html files, css files, images etc and uses memory mapped files to do this if the NIO connectors are being used. The problem is that on Windows, memory mapping a file causes the file to be locked, so that the file cannot be updated or replaced. This means that effectively you have to stop Jetty in order to update a file. The problem is explained more in Jetty's documentation. To fix this, add a line with to your maven-jetty-plugin configuration:

org.mortbay.jetty maven-jetty-plugin 6.1.5 ... src/main/resources/webdefault.xml

The default webdefault.xml file is found in the lib/jetty.jar at org/mortbay/jetty/webapp/webdefault.xml. Extract it to a convenient disk location and edit it to change useFileMappedBuffer to false:

useFileMappedBuffer false

Document generated by Confluence on Sep 05, 2007 00:56

Page 18

NewsThis page last changed on Jan 08, 2007 by mraible.

AppFuse 2.0 is getting close. We hope to have the final release done by the end of January 2007. The current roadmap can be found on the old wiki and in JIRA. See Articles, Blogs and Presentations for more AppFuse propaganda. Tuesday, September 4, 2007 AppFuse 2.0 RC1 Released Last changed Sep 04, 2007 02:39 by Matt Raible

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! Posted at 04 Sep @ 1:50 AM by Matt Raible | 0 comments | Edit

Document generated by Confluence on Sep 05, 2007 00:56

Page 19

Friday, August 10, 2007 AppFuse vs. Grails vs. Rails 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. Posted at 10 Aug @ 9:24 AM by Friday, July 27, 2007 New Server at Contegix Last changed Jul 27, 2007 08:28 by Matt Raible 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! Posted at 27 Jul @ 8:26 AM by Wednesday, July 11, 2007 AppFuse 2.0 RC1 Status Last changed Jul 11, 2007 10:34 by Matt Raible Labels: contegix, atlassian 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 Matt Raible | 0 comments | Edit Matt Raible | 0 comments | Edit

Document generated by Confluence on Sep 05, 2007 00:56

Page 20

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. Posted at 11 Jul @ 10:30 AM by Wednesday, May 23, 2007 AppFuse 2.0 M5 Released Last changed May 24, 2007 06:15 by Matthew Chestnut Matt Raible | 0 comments | Edit

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 .

Document generated by Confluence on Sep 05, 2007 00:56

Page 21

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. Posted at 23 May @ 5:18 PM by Monday, May 14, 2007 AppFuse Maven Plugin Status Last changed May 22, 2007 09:52 by Matt Raible Labels: amp, freemarker, maven 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

Matt Raible |

0 comments | Edit

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

Document generated by Confluence on Sep 05, 2007 00:56

Page 22

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. Posted at 14 May @ 6:49 PM by Wednesday, April 25, 2007 What web framework are you using with AppFuse? Last changed May 04, 2007 09:28 by Matthew Chestnut 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. Matt Raible | 0 comments | Edit

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:

Document generated by Confluence on Sep 05, 2007 00:56

Page 23

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. Posted at 25 Apr @ 11:00 AM by Thursday, April 5, 2007 Candy for AppFuse Last changed Apr 13, 2007 04:27 by Matt Raible 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 . I downloaded and tried out this plugin yesterday. Seems to work quite nicely. See Abel Muio's blog for more details. Well done Abel! Posted at 05 Apr @ 11:03 AM by Matt Raible | 0 comments | Edit Saturday, March 24, 2007 AppFuse 2.0 M4 Released Last changed Mar 24, 2007 16:19 by Matt Raible Matt Raible | 0 comments | Edit

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. Posted at 24 Mar @ 3:59 PM by Matt Raible | 0 comments | Edit

Document generated by Confluence on Sep 05, 2007 00:56

Page 24

Tuesday, February 6, 2007 AppFuse 2.0 M3 Released Last changed Feb 06, 2007 15:08 by Matt Raible 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. Posted at 06 Feb @ 3:04 PM by Monday, January 29, 2007 AppFuse 2.0 M3 Status 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. Matt Raible | 0 comments | Edit

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. Posted at 29 Jan @ 3:54 PM by Wednesday, January 17, 2007 What extension should we use for AppFuse? Last changed Jan 29, 2007 16:00 by Matt Raible Matt Raible | 0 comments | Edit

Document generated by Confluence on Sep 05, 2007 00:56

Page 25

One of the issues that has come up a fair amount with AppFuse and its web frameworks is what extension to use . ... there are a couple of issues with using the *.html extension with some frameworks in AppFuse. For example, with WebWork - it loads Dojo template files from a *.html extension. If you want to use Dojo with WebWork, you have to modify your default extension. Because of this, we're starting to look at other extensions. I'd rather use one for all frameworks, rather than the recommended ones for each framework b/c it allows us to have one security.xml files, rather than one for each framework. I still like *.html the best because it doesn't give away the underlying technology. Using *.htm seems like the best option after that. Since there were many suggestions on the mailing list, I figured it would be best to solve this with a poll. Please choose your preferred extension from the list below. If your preferred extension isn't listed here, please leave a comment and we'll add it. Of course, if there's enough folks that prefer *.html, we'll try and figure out a way to solve the issues that folks have seen with Dojo. What extension should we use in AppFuse? .html .htm .htmx .java .xhtm .xtml You'll need to create an account and login to vote. To do this, go to View > Account > Sign Up. Update Monday, January 29th: It looks like most folks prefer *.html (as I do). Hopefully we can add a filter or something to keep the extension, as well as make Dojo work perfectly with AppFuse. Posted at 17 Jan @ 2:38 AM by Friday, January 12, 2007 AppFuse 2.0 M2 Released! Last changed Jan 17, 2007 02:09 by Matt Raible We've reached quite a milestone in the development in AppFuse 2.0. This is a release that we hope to use to flush out issues and help make AppFuse 2.0 a solid release. 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. Release notes are below. Please see the QuickStart Guide to get started with this release. Thanks to all the developers and users that have helped with this release! Matt Raible | 0 comments | Edit Choose

Document generated by Confluence on Sep 05, 2007 00:56

Page 26

AppFuse JIRA (73 issues) T APF-572 Key Summary Status FIXED Res Rename Manager Resolved and BaseManager to UniversalManager and UniversalManagerImpl Upgrade to Resolved Tapestry-Spring 1.0.0 and Tapestry-Flash 1.0.0 Upgrade to DbUnit Resolved Maven Plugin beta 1 Change Resolved appfuse-archetype-basic to be 4 separate archetypes for a better user experience Remove readOnly Resolved from transaction attributes, so no transactions execute as readOnly Upgrade to Resolved Hibernate 3.2.1 GA Configure plugins so Resolved their documentation can be deployed to http://static.appfuse.org/plugins Create skinny WARs Resolved (with no JARs in WEB-INF/lib) for deployment Test to make sure Resolved AppFuse-dependent projects can modify all values in jdbc.properties Cannot build Resolved appfuse-data-hibernate on Ubuntu linux Resolve use of Resolved Apache Logger when using Maven execute command CSS does not work Resolved correctly in IE 7 Fix the Resolved hibernate3-maven-plugin so it works as expected with AppFuse

APF-568

FIXED

APF-567 APF-564

FIXED FIXED

APF-556

FIXED

APF-555 APF-554

FIXED FIXED

APF-553

FIXED

APF-551

FIXED

APF-550

FIXED

APF-548

FIXED

APF-542 APF-541

FIXED FIXED

Document generated by Confluence on Sep 05, 2007 00:56

Page 27

APF-537

APF-535

APF-526

APF-525

APF-524

APF-519 APF-518

APF-516

APF-506

APF-503

APF-501

APF-500 APF-499 APF-495

APF-493

APF-489

Change Resolved FIXED BaseControllerTestCase to extend AbstractTransactionalDataSourceSpringContextTests for lazy-loading support Create Resolved FIXED GenericManager that uses GenericDao Add configuration Resolved FIXED settings to eclipse plugin in root pom.xml Add configuration Resolved FIXED settings to idea plugin in root pom.xml Change Resolved FIXED StartupListener so it doesn't extend Spring's ContextLoaderListener hbm2ddl Database Resolved FIXED Generation Problems with User Resolved FIXED Input form after validation error appfuse-webwork-1.9.4 Resolved FIXED requires internet connection to initialize APF-404 subtask: Resolved FIXED mainMenu.html improvements APF-404 subtask: Resolved FIXED BasePage.java improvements APF-404 subtask: Resolved FIXED Use of the @class attribute in .page files: APF-404 subtask: Resolved FIXED File locations APF-404 subtask: Resolved FIXED Naming Conventions Move loginForm.jsp Resolved FIXED into login.jsp simplification is good Facelets doesn't Resolved FIXED allow locale switching like JSP does Create Maven Resolved FIXED archetypes for

Document generated by Confluence on Sep 05, 2007 00:56

Page 28

APF-486

APF-485

APF-482 APF-481

APF-478

APF-472

APF-469

APF-468

APF-467

APF-466

APF-464 APF-463 APF-456

creating new AppFuse projects Class Address needs annotation @Embeddable instead of @Entity db-unit run from maven does not disconnect at end of load - scripts to shutdown database will stall Filtering issue with Hibernate properties Replace GZipFilter with one from EhCache Make test base classes available to dependent projects UserSecurityAdvice not being applied to UserManager AppConfig - Theme collides with Webwork themes Missing UL tag around bullet list causes andreas01 style to break in IE6 Move web/pages/menu.jsp to web/common/menu.jsp Migrate on-page javascript to scripts/global.js file Integrate Ajax4JSF Replace JSP with Facelets Change to use Spring 2.0's form tag library define class param in spring creator definition in dwr.xml Upgrade to Canoo WebTest 1393 (a.k.a. 2.1) Upgrade to Script.aculo.us 1.6.5 Upgrade to jMock 1.1.0

Resolved

FIXED

Resolved

FIXED

Resolved Resolved

FIXED FIXED

Resolved

FIXED

Resolved

FIXED

Resolved

FIXED

Resolved

FIXED

Resolved

FIXED

Resolved

FIXED

Resolved Resolved Resolved

FIXED FIXED FIXED

APF-451

Resolved

FIXED

APF-448

Resolved

FIXED

APF-447 APF-444

Resolved Resolved

FIXED FIXED

Document generated by Confluence on Sep 05, 2007 00:56

Page 29

APF-443 APF-439 APF-438 APF-434

APF-429 APF-428

APF-427 APF-426

APF-425

APF-424

APF-421

APF-418 APF-416

APF-411

APF-410

APF-345 APF-280 APF-261

Upgrade to MyFaces 1.1.4 Upgrade to Spring 2.0 Upgrade to Acegi Security 1.0.2 Application Messages not cleared after logout. Bug in BaseControllerTestCase Password not encrypted if validation fails when adding a new user logout.jsp and JSF session's beans Exception in LabelRenderer if "for" property is not set Create Generic DAO for iBATIS that uses JDK 5 generics - use wherever possible Create Generic DAO for Hibernate that uses JDK 5 generics - use wherever possible Migrate from XDoclet to Annotations for Hibernate Replace Dumbster with Wiser Spring LabelTag doesn't change class to errorClass after validation error proposal: french translation displaytag_fr.properties file Fix for "could not initialize proxy - the owning Session was closed" in Tapestry version Upgrade to Hibernate 3.2.ga a better equals method Service tests that are mock tests

Resolved Resolved Resolved Resolved

FIXED FIXED FIXED DUPLICATE

Resolved Resolved

FIXED FIXED

Resolved Resolved

FIXED FIXED

Resolved

FIXED

Resolved

FIXED

Resolved

FIXED

Resolved Resolved

FIXED FIXED

Resolved

FIXED

Resolved

FIXED

Resolved Resolved Resolved

FIXED FIXED FIXED

Document generated by Confluence on Sep 05, 2007 00:56

Page 30

APF-246

APF-200

APF-181 APF-156

APF-140 APF-139

should go in org.appfuse.service.impl and integration tests in org.appfuse.service Tables aren't created Resolved when running iBATIS on Postgres - need table creation scripts Integrate xdoclet Resolved code into tapestry/appgen that allows a user to tag their pojo and generate typed tapestry components Test and Fix Resolved AppFuse on Orion allow easy swapping Resolved between tomcat/jboss Upgrading AppFuse Resolved Make sure Resolved mail.smtp.auth is documented in "mailSender" bean Auto synch of Resolved serialVersion Id on forms Improve Build Resolved Reporting Structure LazyInitializationException Closed in JUnit Tests (WEB) Posted at 12 Jan @ 6:22 PM by Matt Raible |

DUPLICATE

WON'T FIX

WON'T FIX FIXED

FIXED FIXED

APF-91

WON'T FIX

APF-82 APF-58

FIXED WON'T FIX 0 comments | Edit

Monday, January 8, 2007 2.0 Release Schedule Last changed May 29, 2007 07:52 by tibi I'd like to set a few goals for releasing AppFuse 2.0. Here's what I'm currently thinking: M2 - January 11th (Thursday). This should be mostly me as it's mostly documentation that needs to be written. I'm skipping M1 since we already have the archetypes done. M3 - January 25th (Thursday). Since one will be tough because we need to get the code-generation stuff working in the plugin, as well as other goals we need. I should be able to clear my schedule to work on this, so we should be able to make it happen. Final - February 1st (Thursday). This should be mostly polishing, documentation and bug fixes. All the issues for the various milestones are available as filters in JIRA. You can see them and subscribe to them on the front page:

http://issues.appfuse.org/secure/Dashboard.jspa

Document generated by Confluence on Sep 05, 2007 00:56

Page 31

Of course, if show-stoppers come up, this schedule may slip - but I think it's good to set goals. Personally, I thrive on deadlines. This is outdated. Look here: http://appfuse.org/display/APF/Event+Calendar or here http://issues.appfuse.org/secure/IssueNavigator.jspa? Posted at 08 Jan @ 11:53 AM by Friday, January 5, 2007 AppFuse 2.0 Status Last changed Jan 06, 2007 02:23 by Matt Raible We're working hard on AppFuse 2.0. The good news is things are coming along really nicely. There's quite a few developers working on the project now and they've been a tremendous help. If I knew the move to Maven 2 would've inspired so much help, I would've done it a long time ago! We've got most of the archetypes created and we just need to work on documentation for the 2.0 release M1 release. As far as the roadmap is concerned, we've finished most of the code for an M2 release, but we still need to do documentation. I'm hoping to release M1 on Thursday of next week. If you want to try it, you can checkout the Hello World with AppFuse 2.0 video . After that, feel free to take it for a test drive using the QuickStart Guide . New features in AppFuse 2.0: Maven 2 Integration Upgraded WebWork to Struts 2 JDK 5, JPA 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 with Cargo and profiles to Flickr. Thanks to Max Hays Matt Raible | 0 comments | Edit

Speaking of goodies, I uploaded a bunch of AppFuse desktop backgrounds of Timberline Group for creating these. Only 26 days left until the AppFuse 2.0 Release Party! Location TBD. Posted at 05 Jan @ 11:15 PM by

Matt Raible |

0 comments | Edit

Document generated by Confluence on Sep 05, 2007 00:56

Page 32

ArticlesThis page last changed on Jan 07, 2007 by mraible.

As of January 2007, no articles have been written about AppFuse 2.0. The good news is this site has a plethora of information that should serve you well. If you have trouble finding anything, please let us know on the mailing list.

AppFuse 1.x Articles AppFuse: Start Your J2EE Web Apps - AppFuse is a web application to accelerate developing J2EE web applications. It's based on open source tools such as Hibernate, Spring, and Struts. It also provides many out-of-the-box features such as security and user management. Creator Matt Raible provides an overview of its history and features. Seven simple reasons to use AppFuse (Chinese) - Getting started with open source tools for the Java platform such as Spring, Hibernate, or MySQL can be difficult. Throw in Ant or Maven, a little Ajax with DWR, and a Web framework say, JSF and you're up to your eyeballs just trying to configure your application. AppFuse removes the pain of integrating open source projects. It also makes testing a first-class citizen, allows you to generate your entire UI from database tables, and supports Web services with XFire. Furthermore, AppFuse's community is healthy and happy and one of the few places where users of different Web frameworks actually get along. In addition, there's a Chinese Article with no English translation.

Document generated by Confluence on Sep 05, 2007 00:56

Page 33

BlogsThis page last changed on Apr 07, 2007 by mraible.

The page has a list of AppFuse-related blogs from developers and users. Raible Designs (rss_2.0) (Matt Raible is an open source developer who enjoys Java, Web Development, Ajax and AppFuse. Contact me for rates.) AppFuse 2.0 RC1 Released Checkmate Technologies donates code to AppFuse Spring Web Flow 2.0 Sun changes its ticker tymbol to JAVA Choosing a JVM Web Framework: Stories Wanted Want a kick-ass Java/UI Engineering Job in Mountain View? Display Tag 1.1.1 Released Jetty 6.x versus Tomcat 6.x Mountain View Tech Meetup Do we even need web frameworks? Sanjiv Jivan's Blog (rss_2.0) (Yet Another J2EE Blog) API differences between library versions GWT-Ext 0.9.1 Released with improved Showcase demo Ext vs. Dojo GWT-Ext 0.9 released GWT-Ext status update and Feed Viewer on AIR GWT - Ext Integration Hibernate Search - cool, but is it the right approach? Hibernate debugging tip Always run your application with debugging enabled Hibernate and Oracle pagination gotcha David L. Whitehurst (rss_2.0) (Quality Software Development Consultant) Trained in the arts of Agile Development Call for online resume's again Why We Love AppFuse Piratepete's Rant for the Day Any Java Prodigy's out there? Why Java, let's hear it guys and girls? Ajax requires security consideration AppFuse Primer - It's coming along! Understanding the Domain Maven Mojo Love for the AppFuse Maven Plugin (AMP) Rambling about... (rss_2.0) (Everyting and nothing in particular.) Candy for AppFuse will be under extreme refactoring Q4Eclipse, another option for Maven2 and Eclipse integration Between jobs Does QA suck? Then what about users? On vacation

Document generated by Confluence on Sep 05, 2007 00:56

Page 34

The web is not just HTML Candy for AppFuse only for Eclipse Europe? Mylyn in Eclipse Europa (3.3) Eclipse 3.3 (Europa) for J2EE developers First contact with Spring RMI

Document generated by Confluence on Sep 05, 2007 00:56

Page 35

PresentationsThis page last changed on Jan 07, 2007 by mraible.

This page has a list of articles and presentations about AppFuse What's new in AppFuse 2.0 Seven Simple Reasons to use AppFuse Migrating from Struts 1 to Struts 2

What's New in AppFuse 2.0Created by Matt Raible The 2.0 version of AppFuse is designed to make developing Java web applications with Spring much easier. By using and leveraging Maven 2, users will be able to quickly add/remove dependencies, as well as develop their applications quickly and efficiently from their favorite IDE. This release will includes a move to annotations, JSP 2.0 and Spring 2.0. This presentations covers what's new in AppFuse 2.0, as well as describe experiences migrating from Ant to Maven, Spring 1.x to 2.0, and leveraging annotations for Java development. View Presentation

Seven Simple Reasons to Use AppFuseCreated by Matt Raible AppFuse is an open source project/application that uses best-of-breed Java open source tools to help you develop web applications quickly and efficiently. Not only does it provide documentation on how to develop light-weight POJO-based applications, it includes features that many applications need out-of-the-box: authentication and authorization, remember me, password hint, skinnability, file upload, Ajax libraries, signup and SSL switching. This is one of the main features in AppFuse that separates it from the other "CRUD Generation" frameworks like Ruby on Rails, Trails and Grails. AppFuse is already an application when you start using it, which means code examples are already in your project. Furthermore, because features already exist, the amount of boiler-plate code that most projects need will be eliminated. In this session, you will learn Seven Simple Reasons to Use AppFuse. If you don't use it to start your own projects, hopefully you will see that it provides much of the boiler-plate code that can be used in Java-based web applications. Since it's Apache Licensed, you're more than welcome to copy/paste any code from it into your own applications. View Presentation

Migrating from Struts 1 to Struts 2Created by Matt Raible Struts has outgrown its reputation as a simple web framework and has become more of a brand. Because of this, two next generation frameworks are being developed within the project: Shale and Action 2.0. Action 2.0 is based on WebWork, and though its backing beans are similar to JSF, its architecture is much

Document generated by Confluence on Sep 05, 2007 00:56

Page 36

simpler, and easier to use. Migrating to Struts Action 2.0 is more about unlearning Struts than it is about learning the "WebWork Way". Once you understand how simple WebWork is, you'll find that Struts Action 2.0 is a powerful framework that supports action-based navigation, page-based navigation, AOP/Interceptors, components and rich Ajax support. Come to this session to see code comparisons and learn about migration strategies to use the kick-ass web framework of 2006. View Presentation

Document generated by Confluence on Sep 05, 2007 00:56

Page 37

Project InformationThis page last changed on Jul 11, 2007 by mraible.

AppFuse provides the open-source community with an excellent example of an application that can be used to kickstart the initial creation of a professional web application. Everything is configured and ready-to-run as soon as it's downloaded. The single most important goal of AppFuse is to provide a foundational application where you don't have to worry about configuring versions, jar dependencies, or integrating bleeding-edge Java technologies. That's where AppFuse provides some comfort. AppFuse solves many integration issues before you fall short trying to do it all by yourself. All of the hot new Java technologies are being considered for inclusion into AppFuse and only the best of breed will finally make the public releases. Visit here often and please keep an eye on AppFuse. This is where Java development begins. And while AppFuse is free, it takes long hours and hard work, so get the source, create a new project, and log any bugs you find in the source we gave you at our JIRA issue tracking web site.

HistoryIn late 2002 Matt Raible, a software developer, had a vision. This vision was AppFuse. Matt began with sample application concepts or architectures that demonstrate the integration of bleeding-edge Java/J2EE technologies that were available to the open-source community. The application has evolved now from a pattern-driven Struts-Xdoclet application he was using for a book chapter he was authoring on Struts to a professional web application that he implemented at Comcast . Like most developers or software managers, we like things that work. AppFuse is the jumpstart application that works. AppFuse takes a good number of complicated technologies and integrates them in a single application in a modular fashion. This makes it easy to use. And while you're still learning Hibernate or Spring, e.g. you're not waiting on the application to work or come alive. Most model or archetype projects are simplistic in nature. Example projects are normally simple because you want to copy them for your next project. This is where AppFuse breaks all the rules. Matt developed this complex model application to do it all. But, Matt's logic was different. For example, if you don't need a secure login for your users, you just remove that part. Or, if you prefer to use iBatis instead of Hibernate, you can because an iBatis implementation is there and it works just like the Hibernate one. AppFuse has become the model application that Matt Raible has perfected over the years with help from the open-source public. That's you. Please download it and give it a try for your next web project.

TimelinesBelow are history and roadmap timelines for the AppFuse project. They were created with OmniGraffle. You can read more about AppFuse's history in AppFuse: Start Your J2EE Web Apps. AppFuse History Cannot resolve external resource into attachment. Future Roadmap Cannot resolve external resource into attachment.

Document generated by Confluence on Sep 05, 2007 00:56

Page 38

Document generated by Confluence on Sep 05, 2007 00:56

Page 39

Developer GuideThis page last changed on Dec 20, 2006 by mraible.

Deploying SnapshotsTo deploy AppFuse snapshots to http://static.appfuse.org/repository, create a ~/.m2/settings.xml file with the following settings:

appfuse-snapshots username password

WARNING: Maven 2.0.4 deploys artifacts with wrong permission and results in failures for everyone except the person who performed the initial deployment. To fix this problem, you have to replace two JARs in your $M2_HOME/lib directory. Please download wagon-ssh-1.0-alpha-8-SNAPSHOT.jar and wagon-ssh-external-1.0-alpha-7-SNAPSHOT.jar and replace wagon-ssh-1.0-alpha-7.jar and wagon-ssh-external-1.0-alpha-6.jar with them.

Then you can run "mvn deploy" from the AppFuse project. Please contact Matt Raible for the username and password.

Deploying Plugin WebsitesTo deploy AppFuse plugins' documentation to http://static.appfuse.org/plugins, create a ~/.m2/settings.xml file with the following settings:

appfuse-plugins username password

Then you can run "mvn deploy" from the "plugins" module. Please contact Matt Raible for the username and password. Currently deployed plugin websites include the AppFuse Plugin and the WarPath Plugin.

Document generated by Confluence on Sep 05, 2007 00:56

Page 40

Continuous IntegrationThis page last changed on Mar 15, 2007 by mraible.

CruiseControl is currently building both AppFuse 1.9.x and AppFuse 2.0. It's setup to only report failures, not successful builds. If you'd like to be notified of successful builds, please subscribe to the RSS feed at the following URL: http://home.raibledesigns.com:8280/rss You can see the status of AppFuse 1.9.x and AppFuse 2.0 in your browser at any time by going to: http://home.raibledesigns.com:8280 In addition to CruiseControl, Hudson is building AppFuse 2.x at http://home.raibledesigns.com:8281.

Document generated by Confluence on Sep 05, 2007 00:56

Page 41

Project PoliciesThis page last changed on Dec 08, 2006 by mraible.

The following policies and procedures are intended to ensure that AppFuse will continue to achieve its project objectives and support the community in the context of an expanding development team. 1. This project uses JIRA. Please log a task in JIRA for any changes you make to SVN, with the exception of very minor changes that users are unlikely to ever be interested in searching for and/or the change affects code that has never been in an officially released version of the project (e.g. ongoing changes to a new feature in SVN HEAD that hasn't been released previously). 2. Any users running from SVN HEAD are warmly encouraged to subscribe to the commits mailing list (RSS) so that they can keep an eye on commit comments. Developers are encouraged to join this mailing and read the commit comments. If anyone has a concern with any commit, please raise it on the dev mailing list (RSS) so that the broader community can participate. Alternatively, contact the author of the change directly if you think that would be more appropriate or diplomatic. 3. Please make your commit comments informative, yet not too detailed. If you include the JIRA issue number (i.e. APF-200), the changes will show up under the "FishEye" link in JIRA. Detailed comments are ideally placed in the JIRA task. In the case of a contribution by a non-developer, please use the SVN commits to reflect who provided the contribution and add that person's name to /pom.xml in the contributors section. If the contributors section does not list the name of someone who has contributed accepted code, please add them. 4. If you add a major new feature, please announce it on the developers mailing list. That way people using the project have an idea of what is coming up in the next release, and any implementation-specific comments can be received prior to the first release when users will start expecting some degree of consistency and stability. It also encourages people to try out your new feature. 5. Until we add some sort of source formatting (i.e. Jalopy), please follow Sun's Code Conventions for Java. In other words, curly braces on the same line and 4 spaces instead of tabs. 6. The /sandbox can be used to obtain feedback from fellow developers and the community about your code, general approach or new ideas. If you have SVN rights, please use /sandbox instead of emailing ZIP files to other developers for feedback. The community should understand that code in the sandbox is unsupported, subject to refactoring, may not have any unit tests, and may be removed at any time. The /sandbox will never be included in official releases. It's a "scratching pad" only. 7. Never check in code if the unit tests fail. This means, at minimum, successfully running "mvn" from the root directory. Always name your unit test classes so they end in "*Test" - this ensures that Maven picks them up. If there is code in SVN which you didn't write and it is breaking the unit tests, please correct it yourself - don't leave SVN "broken" whilst waiting for the responsible developer to address it (the delay causes confusing and long-running threads on the list and forum). You can always rollback to the previous working version if in doubt of how the class works (just remember to comment the commit appropriately and let the author know). 8. Please update the Reference Guide, Tutorials and JavaDocs for any new major features. The JavaDocs should always be correct. The reference guide may be kept updated with less rigor, although please briefly discuss any major new features. 9. Developers should try to monitor the user and issues mailing lists. RSS feeds are available for both of these lists via Nabble. The user list is very active, and it takes a lot of work if not shared around. Please don't hesitate to reply to users. Please read Kathy Sierra's How to Build a User Community for advice on how we can make the AppFuse Community a great place to be. 10. You should feel free to put to vote any proposed new developers. New developers should firstly be encouraged to attach patches to JIRA tasks to illustrate their understanding of the project, or, if they're long-time users, they might be given access without this JIRA stage if they're undertaking a major new feature.

Document generated by Confluence on Sep 05, 2007 00:56

Page 42

11. Developers should be subscribed to the developer mailing list. Obviously it would take significant time to read every thread, but reading the high priority messages (as indicated by the subject line) is needed to ensure we all have a way of communicating. 12. Please do not hesitate to assign yourself any JIRA task that is unassigned, or assigned to me and not in the "In Progress" status. Also feel free to approach fellow developers to volunteer to work on tasks they might be assigned but haven't started. 13. No code in SVN is "sacred". If you have a good idea or refactoring for an area of code that someone else wrote, raise it on developer list or contact the author directly. Please don't commit changes to such code unless it is a unit test failure correction, or you've firstly raised it on the developer list or directly with the author. 14. People's priorities are ever-changing, and we're all short on time. For this reason it's perfectly understandable that over time developers will move on to other things. This is not a negative reflection in any way - just part of any long-term project. If a developer no longer has the time or inclination to participate in the project, please send an email to [email protected] or myself. I will remove the SVN rights and reassign any JIRA tasks. Importantly, this helps find a new maintainer of the former developer's code (or, in very extreme cases, their code might be relocated to the sandbox or removed). 15. Keep the warm community spirit. The AppFuse community is a nice place to be - especially compared with some of the other open source communities out there where people are abused, ignored, insulted or excluded. No policy or procedure (including those above) should ever compromise operating in a considerate and diplomatic manner that respects the dignity of each individual member of the community. If in doubt, please contact me directly first. If I am ever guilty of this, please let me know and I will correct myself. Thanks for your help in connection with the above. If you have any suggestions for improving these policies and procedures, please use the developer list to raise them. Matt Raible Project Admin

Document generated by Confluence on Sep 05, 2007 00:56

Page 43

Release ProcessThis page last changed on Sep 03, 2007 by mraible.

To keep this list current, it is strongly recommended that release managers refer to and follow this list each time a distribution is created. If any of the steps need to be amended, then please update the list. In an ideal world, the Maven Release Plugin could be used to automate these tasks. However, the current version doesn't seem to shutdown Cargo between integration tests, and hence fails to work. 1 Review JIRA for any issues without a fix version set, and for any issues that should be resolved for the pending release. Delete the appfuse artifacts in your local Maven2 repository and obtain a fresh checkout:svn co https://appfuse.dev.java.net/svn/appfuse/trunk appfuse-#-#

2

3

Run sh touch-webfiles.sh;mvn install -N from the top-level directory, followed by cd plugins;mvn install. Now that plugins are installed, run mvn install from the root and ant -f common-test.xml test-all from the archetypes directory. If you get a BUILD SUCCESSFUL from both, proceed to step 4. Update the release notes and POMs to remove "-SNAPSHOT" from the version. Verify all tests pass and archetypes work (mvn clean;mvn install -N;cd archetypes;mvn install;cd ../plugins;mvn install;cd ..;mvn clean install). Commit the POM changes, and note the revision number. Make sure and disable Bamboo's deploy plan to ensure artifacts are not deployed during a release.

4

5

Tag the release by making a SVN copy of the head or designated revision:

svn copy -r ###### https://appfuse.dev.java.net/svn/appfuse/trunk https://appfuse.dev.java.net/svn/appfuse/tags/APPFUSE_#_#_ -m "Tag r###### as AppFuse #.#.#"

6

Deploy the release:sh touch-webfiles.sh

Document generated by Confluence on Sep 05, 2007 00:56

Page 44

mvn -DperformRelease=true deploy mvn site site:deploy

7

Leaving the clean APPFUSE_### folder be, update your usual working copy (svn up), change the POMs to next version number, add the "-SNAPSHOT" suffix, and commit the POM changes. Re-enable the deploy plan on Bamboo.

8

Update JIRA with tag/release date; Update QuickStart Guide with new version; Create new release notes page, and link to prior release page and JIRA filters. Add News story with link to JIRA Release Notes and Upgrade Guide. Deploy the new snapshot from the AppFuse trunk (with the latest POMs):mvn -DperformRelease=true deploy

9

10

Announce the test build to the dev list first and post a release/quality vote.

Resources Apache Struts Release Guidelines Struts Maintenance Guide for Maven OpenJPA Release Guidelines

RetaggingIf a tagged build needs to be retagged, be sure to delete the old tag first.svn delete https://appfuse.dev.java.net/svn/appfuse/tags/APPFUSE_#_#_# -m "APF-### Removing first try at 2.#.#."

Sample Test Build AnnouncementTest builds are only announced to the dev list.

The test build of AppFuse 2.0 M3 is available. No determination as to the quality ('alpha,' 'beta,' or 'GA') of this release has been made, and at

Document generated by Confluence on Sep 05, 2007 00:56

Page 45

this time it is simply a "test build". We welcome any comments you may have, and will take all feedback into account if a quality vote is called for this build. Release notes: [LINK] Maven 2 staging repository: http://static.appfuse.org/repository We appreciate the time and effort everyone has put toward contributing code and documentation, posting to the mailing lists, and logging issues.

Sample Release/Quality VoteThe AppFuse #.#.# test build has been available since ## ### ####. Release notes: [LINK] Maven 2 staging repository: http://static.appfuse.org/repository If you have had a chance to review the test build, please respond with a vote on its quality: [ [ [ [ ] ] ] ] Leave at test build Alpha Beta General Availability (GA)

Everyone who has tested the build is invited to vote. Votes by AppFuse committers are considered binding. A vote passes if there are at least three binding +1s and more +1s than -1s. Please remember that a binding +1 for GA implies that you intend to support the release by applying patches and responding to posts to the user and dev lists.

Sample Release AnnouncmentThe AppFuse team is pleased to announce the release of AppFuse #.#.# $GRADE.

Document generated by Confluence on Sep 05, 2007 00:56

Page 46

AppFuse #.#.# is available as a Maven archetype. For information on creating a new project using this release, please see the QuickStart Guide: http://appfuse.org/display/APF/AppFuse+QuickStart The #.#.x 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 The release notes are available online at: [LINK]

Document generated by Confluence on Sep 05, 2007 00:56

Page 47

Event CalendarThis page last changed on Jan 09, 2007 by mraible.

Below is a calendar of events related to the AppFuse project. Currently, this calendar lists estimated release dates, as well as any conferences and JUGs with AppFuse presentations.

GMT-0600 Today | Mondayuesday T Wednesday Thursday Friday Saturday Sunday 27 3 28 4 2.0 RC1 Release 29 5 30 6 31 7 1 8 2.0 Final Release 2 9

Calendars

AppFuse 2.0 Release Schedule

Add a calendar Please wait...

10 17 24

11 18 25

12 19 26

13 20 27

14 21 28

15 22 29

16 23 30

Document generated by Confluence on Sep 05, 2007 00:56

Page 48

IRC ChannelThis page last changed on Feb 13, 2007 by mraible.

The AppFuse project has an IRC channel set up specifically for AppFuse help and discussions. The channel can be found at:#[email protected]

Information on connecting to an IRC channel can be found at http://www.irchelp.org.

IRC ClientsThe following IRC clients are recommended: Trillian (Windows only) Colloquy (OS X only)

Document generated by Confluence on Sep 05, 2007 00:56

Page 49

Issue TrackingThis page last changed on Jan 08, 2007 by mraible.

This project uses JIRA for issue tracking and project management. Issues, bugs and feature requests should be submitted to the following issue tracking system for this project. http://issues.appfuse.org/browse/APF

Document generated by Confluence on Sep 05, 2007 00:56

Page 50

Mailing ListsThis page last changed on Mar 30, 2007 by mraible.

There are a number of mailing lists that have been established for the use and development of AppFuse. Even if you don't use AppFuse, we're confident you'll enjoy joining our community. We use some of the hottest technologies in Java today. If you use Spring, Hibernate, JSF, Maven 2 or Ajax, we'd love to hear your insights. Not only do we think that there's no such thing as a dumb question, we also believe there's no such thing as a dumb answer.

User ListThis list is the heart of the AppFuse community. All support questions, design pondering and shared successes are conducted here. Subscribe Post Unsubscribe Archive Nabble Gmane

To ask a single question and subscribe to its answers, please use our forums, graciously hosted by Nabble.

Developer ListsThese lists are used by the AppFuse development team to discuss the direction of the project as well as keep track of issues and changes.

Feel free to join any of these you are interested in, but please be sure to post any support questions to the User list. All of the AppFuse developers actively read and respond to the User list, but many experienced AppFuse users who may have encountered similar problems do not read the development list.

Dev Subscribe Unsubscribe Post Archive at Nabble

Issues

Document generated by Confluence on Sep 05, 2007 00:56

Page 51

Subscribe Unsubscribe Changelog FishEye RSS Feed Subscribe Unsubscribe

Document generated by Confluence on Sep 05, 2007 00:56

Page 52

Powered By AppFuseThis page last changed on Feb 12, 2007 by mraible.

Booking Booster - Booking Booster provides an exceptional gateway between your hotel and your extranet partners. Crystal Hotels - Good value Hotels in London City Centre Dive Worldwide - Scuba diving holidays and packages ExpressPlanner - The world's first free Event Registration Management portal of its kind forGetaway.com - A weather.com site Go2Nice France - Book Stylish Hotels in Nice, Juan-les-Pins, Cannes, Monaco, Menton greendimes.com - We get you off the junk mail lists. HTTP Scoop - The HTTP Sniffer for Mac OS X Internet Polyglot - Free Language Lessons Online LA Lakers Courtside Connection - LA Lakers Fan Loyalty site myJazz Connection - Utah Jazz Fan Loyalty site Rivercats Fan Loyalty Portal - Sacramento Rivercats Fan Loyalty site SourceBeat - Publisher of digital and print on demand books on the leading open source technologies USA Soccer Stars.com - Site supporting US World Cup Team 2006 Walks Worldwide - Walking, mountaineering, and trekking holidays and packages Wildlife Worldwide - Safaris, animals, adventure travel and holidays + many more posted to the mailing list

Document generated by Confluence on Sep 05, 2007 00:56

Page 53

RoadmapThis page last changed on Sep 04, 2007 by mraible.

This page is designed to document what's on the roadmap for future versions of AppFuse. Feel free to add suggestions as you see fit. For a more detailed report of where we are on the roadmap, see the roadmap in JIRA. You might also checkout the Event Calendar for events related to AppFuse. We sometimes add proposed release dates to this calendar, but we often miss the dates since this is an all-volunteer project.

AppFuse 2.0 - Spring 2007Milestone 1 Maven 2 integration Migrate from CVS to Subversion Remove XDoclet, putting generated files into source tree Get all flavors (WARs) deployed and running on Tomcat and Jetty Maven Plugin Spring 2.0: Upgrade XML to XSDs, annotations where appropriate Upgrade WebWork to Struts 2 Documentation: move to new Confluence or DocBook-based system for 2.0 documentation

Milestone 2 JDK 5, Annotations and JSP 2.0 Archetypes for creating new AppFuse projects Documentation, including screencasts for tutorials Released on January 12, 2007

Milestone 3 Internationalization Bug fixes for M2 and archetypes Released on February 6, 2007

Milestone 4 Fix modular archetypes, i18n bundles and polish documentation Released on March 24, 2007

Milestone 5 Integrate XFire by default (for existing classes and generated classes) Code Generation/AppGen - using the AppFuse Maven Plugin

Document generated by Confluence on Sep 05, 2007 00:56

Page 54

Documentation Released on May 23, 2007

Release Candidate 1 Released on September 4, 2007

2.0 Nice to haves TestNG replacing JUnit Hibernate Validation Annotations (hard part is hooking it into the web frameworks) Tomcat Plugin for Maven (that operates like Jetty's plugin) (Looks like there is a Maven 2 Tomcat Plugin that supports tomcat:run and tomcat:run-war) JPA Support Support for JDK 1.4 using something like Retroweaver Support for using Ant to build/test/deploy AppFuse-based projects Change from using Canoo WebTest to using Selenium for UI testing (Maven + Selenium HowTo )

AppFuse 2.1 Search using Compass, tutorials already existing for Spring MVC and JSF Pageable lists that only fetch a specified number of records (i.e. 10 at a time) Ajax Goodies (TBD)

AppFuse 2.2 Convention over configuration, no XML modifications needed when adding new files Plugin API so all "features" can be added/removed via plugins Add Wicket and Stripes as supported web frameworks

Future (Possibly) Add a Swing/RCP, GWT, Laszlo and/or J2ME front-end What others would like to see

Various Ideas - don't know if we'll use them Use JMeter, Grinder or Microsoft's Web Application Testing tool to configure load testing scripts for inclusion in the distribution. Motivated by this post. Create tutorial on how to integrate Quartz (using Spring). See Luciano Fiandesio's AppFuse and Quartz: an integration tutorial. Add Configuration object that talks to a database table for application configuration. Create a dynamic UI (JSP) to handle updating. Add Seam support (after they add Spring integration)

Document generated by Confluence on Sep 05, 2007 00:56

Page 55

Document generated by Confluence on Sep 05, 2007 00:56

Page 56

Software ProcessThis page last changed on Dec 19, 2006 by dlwhitehurst.

Introduction Most developers know that quality software is produced when a well-documented and well-proven software process is followed without deviation. We know from experience that deviation from the process leads to sloppy, error-prone code that somehow misses the mark when compared to quality code. It is our intention to provide AppFuse team members with good documentation that describes the software process. This process is a series of sequential operations or phases as described by Maven. This document will describe two contexts that represent the software process model. One model is the project itself and the phases of development that the project will experience. This model will be maintained using Maven. The second and parallel model of the software process is a higher level context that represents this project too but models AppFuse in a more virtual manner where many tools and resources are involved. This model can be thought of as AppFuse itself. Development Software is developed to application requirements. These requirements are either functional or technical in nature. The evolution of AppFuse has been very technical in nature beca