Just because you've committed to J2EE as a strategic platform doesn't mean that J2EE technology is the best way to solve each and every problem. For example, in the case described above, Joe was facing a database migration problem. He might have done better to begin by surveying database-centric solutions. Other technologies that can often be used for specific tasks are XSLT and database languages such as PL/SQL. There's a tradeoff to be struck here. The more non-J2EE products incorporated into an app, the harder it is to maintain. Some indications that we should look beyond J2EE are:
When using a different tool can lead to a dramatic simplification. This may well have happened with Joe's problem.
Many J2EE practitioners take an unduly J2EE-centric view of enterprise software. J2EE is a fine platform, but it can't, and should not attempt to, encompass all the software requirements of an enterprise.
We should remember that J2EE is an excellent integration platform. As such, we shouldn't feel a need to attempt to implement everything using J2EE technologies, but should be prepared to use J2EE to make disparate resources work together as necessary.