The JSF situation in JBoss has gone from bad to worse. In the pre-4.2.0 servers, if you wanted to package your own JSF implementation with a web app, you had to delete the JSF libraries folder that ship with JBoss. From all the trouble I read on various forums, users had only some success doing this. Telling me to modify my app server to deploy a single app is "bad".
But, at least with 4.2.0 CR-2 (and I assume 5.0.0 Betas), there is no way to package your own JSF libraries with your web app! Check this wiki link for proof:
The important line to look for is this little dandy:
Before you begin, note: You should not add JSF implementation jars to your WAR!!
Before you continue, note: Um, NO!!
Maybe I WANT my own JSF implementation jars deployed! Maybe I've got something working on an older version of JSF and don't want anything to change. The whole point of J2EE is to give us deployment options not available in J2SE. You guys are getting just a little too JBossy, if you forgive the pun, by telling ME how I need to package MY app!
But, the implications of this are worse, MUCH worse.
1) You're squatting on a public namespace - you don't own javax.faces, you own org.jboss. If you want to ship your own mutant faces server-wide, fine, do it, just repackage everything so it pollutes your namespace and not mine.
2) You're acting very proprietary. You're not J2EE anymore, now you're J2EE+JBoss Faces+JBoss Log4J+JBoss-whatever-specific-versions-you-bundle-and-force-us-to-use. Stop doing me favors, you're in the wrong. I hereby revoke any JBoss J2EE Certification until further notice.
3) You're attempting to engage in vendor lock-in, plain and simple. I should be able to take my WAR that deploys fine on WebLogic, WebSphere, and Geronimo and deploy it on JBoss with only JBoss vendor deployment descriptor changes. But you take away my power in more than just the JSF case to decide what libraries and versions I can use. And, your vendor specific deployment descriptor tweaks for classloader control are toothless!! You are telling me to make a special version of my app, just for JBoss. No, it is not going to happen, I reject your vendor lock-in attempt!
Thoughts? Am I way off base? Oh, and by the way, citing JBoss technicalities or idiosyncrasies is no excuse. The other vendors don't share your design issues to such an extent. Tell me how to invert or suppress the appserver classloader so that I can override your JSF libraries, or I will not support deployments to JBoss.