I had talked about the J22 pitfalls here and here earlier. The J2EE best practice bush has been beaten around for a long time. I came across this set of best practices on the WebSphere site. I am mentioning the high level points here. For complete details check out the article here.
1. Always use MVC.
2. Apply automated unit tests and test harnesses at every layer.
3. Develop to the specifications, not the application server.
4. Plan for using J2EE security from Day One.
5. Build what you know.
6. Always use Session Facades whenever you use EJB components.
7. Use stateless session beans instead of stateful session beans.
8. Use container-managed transactions.
9. Prefer JSPs as your first choice of presentation technology.
10. When using HttpSessions, store only as much state as you need for the current business transaction and no more.
11. In WebSphere, turn on dynamic caching and use the WebSphere servlet caching mechanism.
12. Prefer CMP Entity beans as a first-pass solution for O/R mapping due to the programmer productivity benefits.
J2EE Best Practices