The following is a summary of some of the most important general principles we've discussed:
Use J2EE: don't let it use you
Successful software projects treat technologies as tools. J2EE should be used as a means to an end. Each of the many technologies within J2EE should only be used where it delivers demonstrable benefit. Avoid the temptation to use features of J2EE just because (like Everest) they are there; this is likely to add unnecessary complexity, and ongoing expense.