Thursday May 29, 2008
Should we change AppFuse to be Struts 2-specific? Dusty recently posted an interesting idea to the AppFuse developers mailing list:
After thinking/coding/reading for a while I think the more interesting
task is: Retool AppFuse to be one or more Struts2 plugins based on
various higher level app patterns. (AppFuse Facebook, AppFuse
Employee DB, AppFuse Blog, AppFuse Basic LDAP, AppFuse Basic Crowd).
This all comes from the fact, that I have been wanting to refactor the
AppFuse web layer for Struts. One of the interesting aspects of
AppFuse is that it works pretty much the same across all its web
frameworks. It does so with some lowest common denominator
abstractions that can be ported and look and work the same across
frameworks. I have picked my tool(s): Struts 2 and Ruby On Rails when
I want to pretend I am young again. I know Spring MVC, JSF, etc. but
I have no desire to build significant apps on those platforms. It's
not because they suck and Struts2 rules, it is because I know Struts 2
the best, I am most efficient there and it provides everything I need
to build great webapps (Let's not devolve to a framework debate). So,
I would rather have a more Struts 2-specific web stack, that really
leverages conventions born and raised there. The nice thing about the
Struts 2 web stack is that it is complemented nicely by AppFuse's data/service layer, since unlike Grails or Rails, Struts 2 has no data or service layer.
[Read More »]
Seems like a good idea to me. What do you think?
Someday I'd like to come up with a "compatibility test" that allows others to improve upon the ideas in AppFuse and develop their stacks independently. A suite of Selenium tests that require extensionless URLs might be a good start. Posted in Java at May 29 2008, 08:29:44 AM MDT 10 Comments
Integrating Compass 2.0 into AppFuse
Last week, Chris Barham showed us an example of how to implement external sorting and paging with AppFuse + DisplayTag. This week, he's at it again with a tutorial titled Searching in AppFuse 2.0.2 with Compass 2.0 and Lucene 2.3.2.
From a message he sent to the mailing list:
I've extended the previous DisplayTag external sorting and paging project to implement full search capability across the domain objects by using Compass 2.0 - http://www.compass-project.org.
Although there are a number of tutorials around for Compass and AppFuse, I thought I'd update as Compass has just gone to version 2.0 and has new features, (annotations etc).
Search results in the example are displayed in plain HTML with Compass' own paging feature, and also using DisplayTag with its paging external feature, (both on the same search results page in the example).
Code is in a branch off the original project called branches/search - check it out with:
svn checkout http://pagingappfuse.googlecode.com/svn/branches/search/ appfusecompass
Instructions on how to implement Compass are here:
http://code.google.com/p/pagingappfuse/wiki/CompassSearching
Cheers,
Chris
Again, great work Chris! We really appreciate your contributions. Posted in Java at May 22 2008, 09:24:47 PM MDT 3 Comments
AppFuse + DisplayTag: External Sorting and Paging Example
Chris Barham has posted an excellent example of how to do external sorting and paging to the AppFuse mailing list:
I've put together a new AppFuse project which demonstrates how to enhance the List screens. DisplayTag as provided has issues with large datasets, (it retrieves all the records every time), and sorting via column headings does not work for the entire dataset, only those on screen at the time.
I've built a project which addresses these issues, using Hibernate Criteria and extensions to DisplayTags PaginatedList interface which gets DisplayTag to hand off all requests for sorting and paging to the new implementation of PaginatedList.
The Google Code project is checked in to: http://code.google.com/p/pagingappfuse/ feel free to check out the code and comment. (instructions here: http://code.google.com/p/pagingappfuse/source/checkout)
There are instructions regarding the steps taken on the project wiki page here: http://code.google.com/p/pagingappfuse/wiki/PagingSorting
Cheers,
Chris
Nice work - thanks Chris! Posted in Java at May 17 2008, 08:19:55 AM MDT 2 Comments
AppFuse 2.0.2 Released
The AppFuse Team is pleased to announce the release of AppFuse 2.0.2. This release includes upgrades to Spring Security 2.0, jMock 2.4, the ability to customize code generation templates and many bug fixes.
For information on upgrading from 2.0.1, see the Release Notes or changelog. AppFuse 2.0.2 is available as a Maven archetype. For information on creating a new project using AppFuse, please see the QuickStart Guide or the demos and videos.
To learn more about AppFuse, please read Ryan Withers' Igniting your applications with AppFuse.
The 2.0 series of AppFuse has a minimum requirement of the following specification versions:
- Java Servlet 2.4 and JSP 2.0 (2.1 for JSF)
- Java 5+
If you've used AppFuse 1.x, but not 2.x, you'll want to read the FAQ. Join the user mailing list if you have any questions.
Thanks to everyone for their help contributing code, writing documentation, posting to the mailing lists, and logging issues.
Please post any issues you have with this release to the mailing list.
Posted in Java at May 11 2008, 11:25:40 PM MDT 3 Comments
AppFuse Light 1.8.2 Released AppFuse Light 1.8.2 is a bug fixes release that includes upgrades for Spring, Spring Security, Hibernate, Wicket, Tapestry and many others. In addition, Spring bean definitions were replaced with annotations (@Repository, @Service and @Controller). See the Release Notes for more information on what's changed since the last release.
AppFuse Light now offers 60 possible combinations for download:
- Web Frameworks: JSF (MyFaces), Spring MVC (with Ajax, Acegi Security, JSP, FreeMarker or Velocity), Stripes, Struts 1.x, Struts 2.x, Tapestry, WebWork, Wicket
- Persistence Frameworks: Hibernate, iBATIS, JDO (JPOX), OJB, Spring JDBC
If you have any questions about this release, please subscribe to the AppFuse user mailing list by sending a blank e-mail to users-subscribe@appfuse.dev.java.net. You can also post questions in a forum-like fashion using Nabble: http://appfuse.org/forum/user. Posted in Java at May 11 2008, 10:16:17 PM MDT Add a Comment
The AppFuse Primer is now available! From David Whitehurst's blog:
The AppFuse Primer is published! And, you can order your copy today. It's been a long road getting this done, but I'm excited about it and I hope you will be too. Please visit the site and consider the purchase of a copy today at http://www.sourcebeat.com/books/appfuse.html.
For more information, see SourceBeat's Press Release.
This book is as up-to-date as you can get. While I hope to do another AppFuse release in the coming months, this book should be up-to-date for quite some time.
Posted in Java at Mar 18 2008, 12:47:15 PM MDT 1 Comment
Don Brown Makes Maven 2 Not Suck Don Brown spent some time over the weekend Making Maven 2 not suck:
While there are a few (very important, I might add) things Maven 2 gets right, there are a bunch that just suck, yet I use it at my day job (Atlassian) and in Open Source work, so in true Open Source tradition, rather than continue bitching, I'm doing something about it. I'm embarking on a quest to fix all the bits of Maven 2 that really annoy me and waste my time. I hope to get most, if not all, of the changes back into the codebase, but my personal deliverable is a build of Maven 2 that doesn't suck.
On his blog, Don lists a number of improvements he hopes to make. This weekend, he implemented the first three, which concentrates on speeding up remote repository access and downloading of artifacts.
First up, tasks #1-3. I implemented these changes in a bored Sunday afternoon and saw a example build (Struts 2 core) go from 3 minutes, 26 seconds to 2 minutes even, so a little over 40% performance improvement.
Interested, I decided to try Don's improvements on AppFuse. Since it fetches seemingly hundreds of artifacts from Maven's central repository, it seemed like a good testing ground. With a clean repository (rm -r ~/.m2/repository), a 8 MB/sec internet connection and "mvn -Dmaven.test.skip", I achieved the following results with the stock version of Maven 2.0.8:
[INFO] Total time: 7 minutes 40 seconds [INFO] Finished at: Mon Jan 28 09:02:11 MST 2008 [INFO] Final Memory: 55M/508M
With Don's improved uber-jar, I received the following results:
[INFO] Total time: 5 minutes 17 seconds [INFO] Finished at: Mon Jan 28 09:10:56 MST 2008 [INFO] Final Memory: 56M/508M
460 vs. 317 seconds = a 31.1% improvement -- Nice work Don!
When he implements #4 (Should support artifacts checked into the SCM in the lib/ directory so no external repository needed), I'll be a much happier Maven consumer. I've always wanted the ability to bundle all of AppFuse's dependencies for offline use like we did in 1.9.x.
Don - I'll buy you numerous beverages in Vegas if you add the ability to run a Maven command to put all a project's dependencies in its lib directory too.
Posted in Java
at Jan 28 2008, 09:28:09 AM MST
7 Comments
New Tools for AppFuse Project: MarkMail and FishEye/Crucible We've recently added some some new features to the AppFuse project. The first feature is the good folks at Mark Logic (primarily Jason Hunter) has setup a kick-ass mailing list archive for us at appfuse.markmail.org.
This is an easily searchable set of archives and goes all the way back to when our mailing list started in March 2004. In the future, they hope to provide RSS/Atom feeds and allow posting (like Nabble does). I've added a link to these archives to the mailing list page. To learn more about MarkMail, please see Jason's announcement of the service @ Apache.
The second feature is we've installed FishEye and Crucible (a code review tool) on AppFuse's server at Contegix. We've used FishEye in the past, but now we have it on our own server.
Thanks to Mark Logic and Atlassian for supporting the AppFuse project. Posted in Java at Dec 06 2007, 10:25:37 AM MST 1 Comment
Integrate AppFuse with Crowd in 5 Easy Steps The good folks at Atlassian have written a nice tutorial on Integrating Crowd with AppFuse and Acegi. Crowd is a web-based single sign-on (SSO) tool that simplifies application provisioning and identity management. We use Crowd for the AppFuse project to maintain a single user store for JIRA, Confluence, and Bamboo. It's worked awesome for us.
Posted in Java at Nov 29 2007, 10:33:32 AM MST 2 Comments
AppFuse Light 1.8.1 Released: includes upgrades to Spring 2.5 and Wicket 1.3 AppFuse Light 1.8.1 is a bug fixes release that includes an upgrade to Spring 2.5 and Wicket 1.3 RC1. See the Release Notes for more information on what's changed since the last release.
What is AppFuse Light? Click here to find out.
AppFuse Light now offers 60 possible combinations for download:
- Web Frameworks: JSF (MyFaces), Spring MVC (with Ajax, Acegi Security, JSP, FreeMarker or Velocity), Stripes, Struts 1.x, Struts 2.x, Tapestry, WebWork, Wicket
- Persistence Frameworks: Hibernate, iBATIS, JDO (JPOX), OJB, Spring JDBC
If you have any questions about this release, please subscribe to the AppFuse user mailing list by sending a blank e-mail to users-subscribe@appfuse.dev.java.net. You can also post questions in a forum-like fashion using Nabble: http://appfuse.org/forum/user.
If you're a developer of one of the frameworks that AppFuse Light uses - I'd love a code review to make sure I'm "up to snuff" on how to use your framework. I'm also more than willing to give commit rights if you'd like to improve the implementation of your framework.
Live demos are available at:
- Spring · Spring + Ajax · Spring + Acegi
- MyFaces + Facelets
- Stripes
- Struts 1 · Struts 2
- Tapestry
- WebWork
- Wicket
What's on tap for AppFuse Light 2.0? Here's what I'm hoping to do:
- Drop the seldom-used persistence frameworks: JDBC, JDO and OJB.
- Drop Struts 1.x and WebWork as web frameworks (replaced by Struts 2).
- Support the same persistence frameworks as AppFuse: Hibernate, iBATIS and JPA.
- Re-use appfuse-service, appfuse-hibernate, appfuse-ibatis and appfuse-jpa in AppFuse Light. I'll likely include the core classes (User, Role) since AppFuse Light is more "raw" than AppFuse.
- Require Java 5.
Let me know if you disagree with any of these items or would like to see other enhancements. Posted in Java at Nov 29 2007, 09:28:06 AM MST 3 Comments
Search This Site
Recent Entries
- The 416
- LinkedIn Tech Talk: Kevin Brown on Shindig
- Happy Birthday to Me
- My iPhone Review
- Bus Project Update
- Raible Road Trip #12 Vacation Report
- Raible Road Trip #12
- Bike to Work Day
- LinkedIn has the Biggest Rails app in the World
- RE: Are people blogging less?



