Rule #5 No over-engineering
Too many layers is counter-productive : have a look at the learning curve for JEE. And if you succeed in reading all the specs and enjoying all them, dive into JSF multi-client specs ...
Implement the exact number of layers you need and delay genericity to the actual need. You may have good ideas but wrong usecases and wrong implementations. As a general rule, while you don't have a test for it, don't code it.
"Faites simple, aussi simple que possible, mais pas simpliste" - Albert Einstein