Standard Entity Beans with cache invalidation is easy to set up if you use the default configuration.
It's working great and the performance is good (it's always good when you cache all your database access anyway).
I'm using it that way and I love it.
Now for the problems you might encounter...
If you want to tweak the EJBs, it might get complicated.
As the distributed cache is not transactionnal, you're going to have trouble if you use JTA transactions for example - your cache is going to be invalidated all the time if you do that.
If you're using clustered Entity Beans you're going to have very poor performance because it's using pessimistic locking at the database level. Anyway, I don't think many people would want to do that.