It is hard not to focus on the negatives on these projects although most of them went pretty well. Sometimes the thorns are actually the roses because we overcame some problem. The union member management application we worked on is a good example of this.
Our thorn on this project was automating functional tests. It is hard to get good code coverage with Java Spring they way you can with unit tests in RoR. Automating functional tests are also extremely difficult with Wicket because Wicket generates ids for all the HTML elements and they change, so they are impossible to target. What we ended up doing was adding name attribute to every element we wanted to target. Targeting by name is a little more difficult, but it worked well for automating these tests.