JSF has certain
J2EE standard version prerequisites for
servlets, JSPs and assorted other functions. So as long as a J2EE server supports the corresponding component versions, it either runs JSF or it's not truly standards-compliant.
As far as database support goes, normally one uses
JDBC and that, too has certain certified versions.
The secret of how to be miserable is to constantly expect things are going to happen the way that they are "supposed" to happen.
You can have faith, which carries the understanding that you may be disappointed. Then there's being a willfully-blind idiot, which virtually guarantees it.