【发布时间】:2010-12-15 16:36:11
【问题描述】:
JSF 2.0 可以与 WebSphere Application Server 7.x 版一起使用吗?
如果有,怎么做?
【问题讨论】:
标签: java jsf jsf-2 websphere websphere-7
JSF 2.0 可以与 WebSphere Application Server 7.x 版一起使用吗?
如果有,怎么做?
【问题讨论】:
标签: java jsf jsf-2 websphere websphere-7
WebSphere Infocenter 表示更改为替代 JSF 实现的正确方法是创建一个启用了隔离类加载器选项的 WebSphere 共享库。
任何需要 JSF 2 的模块都将与新的共享库相关联,然后应用程序将从 JSF 2 而不是 JSF 1.2 开始。
【讨论】:
Websphere 附带 JSF 1.2.something,默认情况下会加载它。要使用不同的 JSF 库(或 WS 提供的任何其他库,例如 commons-logging),您需要更改类加载器确定位置优先级的方式。他们称其为“最后一个父级”,意思是先加载您的库,然后再加载 WS 版本。
【讨论】:
我这几天一直在努力解决这个问题。这是我解决它的方法。
使用以下库:javax.faces-2.1.7.jar
如果您使用的是 PrimeFaces 3.1:primefaces-3.1.1.jar
Application Server 实例:类加载 - Parent Last
企业应用程序实例(war 模块):类加载 - Parent Last
确保删除所有 Servlet 容器库,例如 Tomcat 所需的库。
【讨论】:
按照 IBM 的建议,逐步将 WebSphere Application Server v7 上的 MyFaces 2.0 设置为共享库: http://wasbehindtheglass.blogspot.co.uk/
我为 Majorra/JSF 2.0.4 应用了类似的步骤,并仅使用 jsf-api.jar 和 jsf-impl.jar 创建了一个共享库。正如@Ian McLaird 所说,需要 WAS 7.0.0.19 和 JSF 2.0.4。 JSF 2.1.x 需要 Servlet 3,WAS7 不支持
【讨论】:
我的经验:
-> Windows 上的 WAS 7.0.0.11
-> 我的 War 应用程序的 WEB-INF/lib 中的 javax.faces-2.0.11.jar
-> 使用带有独立类加载器的 javax.faces-2.0.11.jar 共享库
-> 与我的 War App 关联的共享库
-> 实例和应用程序的类加载器没有变化 (PARENT_FIRST)
有了这个配置(上图),应用程序可以在 WAS 7 上与 JSF 2.0 一起正常工作。 如果我从我的 War 应用程序中删除 javax.faces-2.0.11.jar,它不起作用。
【讨论】:
以下对我有用
如下修改web.xml
<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>
就是这样。
【讨论】:
谢谢你们!
它适用于较新版本的 javax.faces。查看 Maven 依赖项:
<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>
不要忘记在 web.xml 中添加以下内容:
<context-param>
<param-name>com.sun.faces.expressionFactory</param-name>
<param-value>com.sun.el.ExpressionFactoryImpl</param-value>
</context-param>
最后将应用程序和模块的WebSphere类加载器顺序改为(parent last)设置: https://www.ibm.com/support/knowledgecenter/SSAW57_7.0.0/com.ibm.websphere.nd.doc/info/ae/ae/urun_rclassloader_inst.html
问候
【讨论】: