Tomcat provides the
Servlet and
JSP functions of JSF along with some JNDI support, including the ability to use JNDI to present datasources. That's about all the
J2EE you're going to get from it. Anything else has to be added in separately.
One way around that is to use a system such as
JBoss or JOnAS (which is more popular in Europe). Both of those products embed Tomcat in their own frameworks to provide a full-service J2EE stack. Failing that, you have to manually add support jars as needed.
JSF and JPA support are fairly easy to obtain in unadorned Tomcat. However, if you want to be able to deploy on both Tomcat and full-stack J2EE servers, you need to be able to customize the build process. One way to do that is to use
Maven and define profiles. I have, for example, one or 2 projects whose
test profile is for Tomcat and whose production profile is for the IBM WebSphere server.
Maven is supported by most of the major IDEs. Additionally, Maven can do builds without IDEs or even a GUI environment. I learned a bitter lesson years ago that it's not wise to depend on an
IDE to do your production builds.