I am having some trouble with JSF2 and websphere 7.0. I have searched in the internet but nothing. The thing looks to be that websphere puts its 1.2 libraries and override my 2.0 libs. The app is working fine in apache-tomcat
Thirst of all, when i try to get an xhtml page (with simple html the app works, the problem is with jsf) the server shows the error:
could not find factory: javax.faces.context.FacesContextFactory
i've read that i had to use the "parent last" option in the class loader section, but it didn't worked. Then i went to jsp and jsf options on the web module properties, and there i can choose between Sun reference implementation 1.2 and MyFaces 1.2, the sun was selected, so i choose myfaces and now the error is another one: if i try to go to "something.xhtml", it redirects to "something.jsf", which doesn't exists..
any idea?
thanks!
It seems that you didn't include the JSF implementation on your classpath.
Here's how I solved it.
Use the following library: javax.faces-2.1.7.jar
If you are on PrimeFaces 3.1: primefaces-3.1.1.jar
Application Server instance: Class Loading - Parent Last
Enterprise Application instance (war Module): Class Loading - Parent Last
Make sure to remove all Servlet Container libraries such as those needed by Tomcat.
Related
Adding dropdown list tag in my xhtml page and using title attribute trying to display the tooltip value.
The tooltip option is working fine when I deploy the application in Tomcat where as the samething is not working in wepsphere application server.
Can anyone please suggest me on this?
Tomcat does as being a barebones JSP/Servlet container not ship with any JSF libraries bundled and will use the webapp-supplied JSF libraries. WebSphere does as being a full fledged Java EE container already ship with JSF libraries bundled and will by default ignore the webapp-supplied JSF libraries.
Your concrete problem suggests that WebSphere is using an older JSF version which exposes a bug wherein the tooltip of the dropdown won't be properly rendered. You've basically 2 options:
Upgrade WebSphere-bundled JSF version to be the same version as the one which you initially used in Tomcat. Refer WebSphere administration manual for upgrade instructions, or if that isn't your responsibility, tell/ask the server admin to upgrade.
Tell WebSphere to use webapp-bundled JSF libraries instead. You can do that in WAS admin console by configuring the "Classloading Policy" of the application to "module" or "PARENT_LAST", depending on WAS version.
I am using JSF 2 and Richfaces 4.2.3.Final on a Websphere AS 8 (I think it ships with MyFaces 2.0.2)
I get a javascript error when trying to upload a document with the rich:fileUpload
this._q._curReq is null
I found this solution
https://issues.jboss.org/browse/RF-10128
So I downloaded the latest MyFaces version, placed myfaces-api.jar and myfaces-impl.jar in my lib folder and configured the application classloader-order to "Classes loaded with local class loader first (parent last) " and restarted my server.
It seems to have no effect at all, i still get the same error.
Is there more configuration needed on the WAS?
Someone has the same issue?
Thanks in advance
Regards
Edit: is there any way of finding out which Myfaces implementation is actually used for this application? In the server log I only find a warning that says MyFaces 2 is running in development mode, but it doesn't log the actual version
Ok, I found the solution. There actually is another configuration I needed to do in Websphere.
Admin Console - Applications - Websphere Enterprise applications - appName - Manage Modules - moduleName - Class loader order:classes loaded with local class loader first (parent last)
After that the latest myfaces version applies correctly and the fileUpload works.
Hope that helps people with the same problem.
I have created web dynamic project with jsf2, Primefaces 3.4, Tomcat7.Application runs fine. If i deploy the EAR of the same project on Websphere8 instead of Tomcat7, I am getting Exceptions.I am not sure of what is happening. I am new to JSF2 and Wepshere8.
can you provide me the links on how to start sample jsf2 + primefaces project on Websphere 8
Thanks in advance.
Got it. Try to add com.sun.faces.config.ConfigureListener instead of org.apache.myfaces.webapp.StartupServletContextListener in your web.xml, restart your server and then run it.
The code should look like the following.
<listener>
<listener-class>com.sun.faces.config.ConfigureListener</listener-class>
</listener>
For using different implementations of JSF, the WebSphere Application Server JSF engine determines if the SUN RI or Apache MyFaces is used from the application server run time. After the JSF engine determines the implementation that is used, the correct listener class is registered with the web container. You do not need to add the com.sun.faces.ConfigureListener or the org.apache.myfaces.StartupConfigureListener to the web.xml file.
http://www-01.ibm.com/support/knowledgecenter/SSAW57_8.0.0/com.ibm.websphere.nd.doc/info/ae/ae/cweb_javaserver_faces.html
Please see above...
I too faced the same problem.
Websphere by default support sun impl and apache myfaces and its jsf 1.2.
To use jsf 2 implementation.
1.Make sure to remove servlet.jar from your application.Its need for tomcat however not in websphere.
2.Change the classloader policy for ear to parent last.Parent last means lib in your app will have higher priority.if not found will load from WAS class path.
3.Also make sure to change the webmodule class loader policy to parent last.
4.Restart websphere.
To solve the classloader of primefaces in websphere 8.5 classes replace the jsf
jsf-api
jsf-impl
javaee-api
for the native implementation of websphere
myfaces-api
myfaces-impl
I have been struggling with the unholy alliance that is WebSphere 7+ and Mojarra 2.0.4 and have run into something of a showstopper.
I followed the directions as specified at this forum post and got Mojarra 2.0.4 initializing properly: http://forum.primefaces.org/viewtopic.php?f=3&t=6860
Basically I created an isolated classloader shared library that refers externally to the Mojarra and Primefaces jars, added the shared library to the webapp and reversed the classloader to go PARENT_LAST. All of that works.
When I attempt to access my web app http://server:port/context/index.xhtml it is hitting the FacesServlet correctly but then instantly the Request Dispatcher is redirecting to index.jsp???
I don't have any JSP specified ANYWHERE in my code, my app, my web.xml, and in fact I specified DEFAULT-SUFFIX to be .xhtml and that didn't help. All my web pages are .xhtml extension and FacesServlet is mapped correctly to *.xhtml.
I have tried adding XHTML as a mime type to WebSphere, disabling the Request Dispatcher, all to no avail. I have been able to get this running correctly on Tomcat 6-7, JBoss 6 and Glassfish 3 with no problems but for some reason WebSphere insists on a JSP file extension?
I appreciate any help you might have.
WAS7 sometimes does not undeploy the web applications properly. Clearing WAS_PROFILE_HOME/temp and WAS_PROFILE_HOME/wstemp may help.
I am trying to run a JSF 2.0 application with Mojarra 2.0 implementation. I need to change the Web Module class loading policy of the .war file to PARENT_LAST, so that WAS doesn't load the default configuration. I want the JSF 2.o implementation to be loaded from WEB-INF/lib folder. However RAD does not allow me to change the settings to PARENT_LAST in admin Console. ( It's disabled )
It works fine,when the class loader policy is set using shared libarary references and set at the server level. However I don't want that.
I would like this to be loaded at the "Web Module" level.
Can anyone help how to change to PARENT_LAST that using admin console?
Thanks!
I changed the deployment.xml file directly to include warClassLoaderPolicy="SINGLE" and changed the mode of the classloader element to "PARENT_LAST". It loaded the Mojarra JSF 2.0 implemention.