开发者

Can JSF 2.0 be used with Websphere application server version 7.x

Can JSF 2.0 be used with Web开发者_JAVA技巧Sphere Application Server version 7.x?

If so, how?


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.


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.


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.


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


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.


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 .


Hi I could run my website using this libraries

Can JSF 2.0 be used with Websphere application server version 7.x

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


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

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜