问题
Can JSF 2.0 be used with WebSphere Application Server version 7.x?
If so, how?
回答1:
The WebSphere Infocenter indicates that the right way to change to an alternative JSF implementation is to create a WebSphere Shared Library with the isolated classloader option enabled.
Any modules that need JSF 2 would be associated with the new shared library, and then the application would start with JSF 2 instead of JSF 1.2.
It is also necessary to have fix pack 7.0.0.19 or later installed.
回答2:
Websphere ships with JSF 1.2.something and it loads that by default. To use a different JSF library (or any other library that WS provides such as commons-logging) you need to change the way the classloader prioritizes locations. They call it 'parent last" meaning load your libs then the WS versions.
回答3:
I've been struggling to solve this for days. 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.
回答4:
Step by step setting MyFaces 2.0 on WebSphere Application Server v7 as shared library as IBM recommends: http://wasbehindtheglass.blogspot.co.uk/
I have applied similar steps for Majorra/JSF 2.0.4 and created a shared library using only jsf-api.jar and jsf-impl.jar. As @Ian McLaird has told WAS 7.0.0.19 and JSF 2.0.4 are required. JSF 2.1.x requires Servlet 3 and is not supported by WAS7
回答5:
My Experience:
-> WAS 7.0.0.11 on Windows
-> javax.faces-2.0.11.jar in WEB-INF/lib of my War application
-> WAS Shared librairies with javax.faces-2.0.11.jar with Isolated Class Loader
-> WAS Shared librairies associated with my War App
-> No change on Class Loader for instance and application (PARENT_FIRST)
With this conf (above) the application works fine with JSF 2.0 on WAS 7. if i delete the javax.faces-2.0.11.jar from my War app, it doesn't works.
回答6:
Following worked for me
- Create a shared library and put your JSF 2.0 jars in it.
- Also add EL 2.2 API and EL-Impl 2.2 jars as well since JSF 2.0 implicitly needs this.
- Add this library to your application and make classloader preference as PARENT_LAST.
Change web.xml as following
<context-param>
<param-name>com.sun.faces.expressionFactory</param-name>
<param-value>com.sun.el.ExpressionFactoryImpl</param-value>
</context-param>
<listener>
<listener-class>com.sun.faces.config.ConfigureListener</listener-class>
</listener>
Thats it .
回答7:
Hi I could run my website using this libraries
Configuring in web.xml of my project
<context-param>
<param-name>com.sun.faces.expressionFactory</param-name>
<param-value>com.sun.el.ExpressionFactoryImpl</param-value>
</context-param>
Configuring in websphere to load my libraries (Parent Last)
Regards
回答8:
Thank you guys!
It worked with a newer version of javax.faces. See the maven dependencies:
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.faces</artifactId>
<version>2.1.29-08</version>
</dependency>
<dependency>
<groupId>javax.el</groupId>
<artifactId>el-api</artifactId>
<version>2.2</version>
</dependency>
<dependency>
<groupId>com.sun.el</groupId>
<artifactId>el-impl</artifactId>
<version>2.2</version>
</dependency>
Don't forget to add the following in your web.xml:
<context-param>
<param-name>com.sun.faces.expressionFactory</param-name>
<param-value>com.sun.el.ExpressionFactoryImpl</param-value>
</context-param>
And finally change the WebSphere class loader order of the application and the module to the (parent last) settings: https://www.ibm.com/support/knowledgecenter/SSAW57_7.0.0/com.ibm.websphere.nd.doc/info/ae/ae/urun_rclassloader_inst.html
Regards
来源:https://stackoverflow.com/questions/1718934/can-jsf-2-0-be-used-with-websphere-application-server-version-7-x