Simplify Open Source with AppFuse

Matt Raible matt@raibledesigns.com

!ww.raibledesigns.co"

0) Developing in Java since 1999 • Committer on several open source projects: Roller AppFuse Weblogger.0 and JSF 1.co" !ww. Struts Menu.springlive. XDoclet.co" .2 Expert Group Member • Author: Spring Live (SourceBeat) and contributor to Pro JSP (Apress) !ww. Display Tag.raibledesigns.Who is Matt Raible? • Developing websites since 1994 (before Netscape 1. • J2EE 5.

Spring? !ww.Who are you? • Your Experience with webapps? • What do you want to get from this presentation? • Open Source experience with Ant. Struts. Hibernate.raibledesigns. XDoclet.co" .

raibledesigns.Presentation Agenda • What is AppFuse? • History • Demo of Features • HowTo: CRUD a database table • Recent Usability Improvements • Questions? !ww.co" .

accesses and mail !ww. build file and project classes to get your project started quickly • The hard part is getting started and configuring dependencies • Uses popular open-source tools: Ant.raibledesigns. Spring.co" .net • Top 5traffic project in hits. XDoclet. Hibernate.AppFuse .what is it? • A directory structure. Struts (or Spring MVC/WebWork) java.

History • Started as a sample app for Pro JSP • Became a toolkit for starting new projects makes • Lots of community feedbackJ2EE it a “best practices” webapp for • Documentation and Tutorials written November 2003 • AppGen .CRUD made easy .

raibledesigns.com/appfuse !ww.raibledesigns.co" .easily switch from JDBC to LDAP or Windows domain authentication • Remember Me and Self Registration • GZip Compression Built-in • Testing environment ready to go. Anthill and CruiseControl files included • http://demo.Demo of Features • Container Managed Authentication .

raibledesigns.co" .Dependencies !ww.

co" . table and CRUD code A Quick HowTo !ww. POJO.Create database.raibledesigns.

2. MySQL CC / Administrator !ww. Cocoa MySQL.1. BBEdit.com/wiki/Wiki.1.jsp? page=DevelopmentEnvironment • Recommended Tools: Eclipse 3. TopStyle.Development Environment Setup • Use instructions at: http:// raibledesigns.7 • OS X: Intellij IDEA. JDK 1.28.0. Tomcat 5. Cygwin. Ant 1. MySQL 4. Smart CVS • Windows: HomeSite.2. Tortoise CVS.raibledesigns.4.6.co" .

Part I: Create database and table • Create new database with Ant and generate • Create Person.java POJOwith XDoclet Hibernate mapping file • Configure Spring to be aware of Person object • Create “person” table from POJO using Ant !ww.co" .raibledesigns.

Test First! • Create PersonDAO Interface • Create PersonDAOHibernate implementation class • Configure PersonDAO in Spring • Run JUnit Test !ww.Part II: Create DAO • What is a DAO? • Create PersonDAOTest .raibledesigns.co" .

Recent Usability Improvements .

Spring and JSF • SiteMesh can be used with almost anything • Very little maintenance required after setup .Tiles to SiteMesh • Used Tiles since it first came out in 2001 • Integrated into AppFuse since the beginning • SiteMesh much easier to setup and use • Tiles can be used with Struts.

AppGen a table.co" . • To create CRUD formodify 5it required you create 11 files and • AppGen requires you create 1 and modify 1 • Uses BaseHibernateDAO and BaseManager for generic CRUD methods • Still requires you to “pretty up” the UI !ww.raibledesigns.

co" .AppFuse Roadmap • Add Tapestry and JSF • Continue to try and make IDE integration easier • Support/Documentation for more app servers • Other things you’d like to see? !ww.raibledesigns.

Struts.Equinox quick apps • AppFuse Light .dev. XDoclet).net . WebWork. no • Includes 5 MVC implementations: Spring.java. build-time dependencies • No out-of-the-box security (i.e.e. Tapestry and JSF easily ported to • Equinox code can be AppFuse features AppFuse if you need • Demos at http://equinox.designed forprototypes) with few requirements (i.

Questions? • AppFuse Official Homepage: • http://raibledesigns.java.co" .raibledesigns.com/appfuse • AppFuse Demo: • http://demo.raibledesigns.pdf !ww.net/AppFuse.dev.com/appfuse • This Presentation: • http://appfuse.