【问题标题】:glassfish change default jsf implglassfish 更改默认 jsf impl
【发布时间】:2013-02-13 08:45:55
【问题描述】:

我需要更改 glassfish 3.0.1 提供的默认 jsf impl 提供的版本是 2.0.2,但我需要更高版本的版本,例如 2.1.x,因为我使用 liferay 门户 6.0.6,它在尝试将 ResourceResponseImpl 转换为 HttpServletResponse 时抛出异常。我得到一个提示,如果我将 jsf impl 更改为 2.1.x,它应该可以工作。无论如何,我只是想确保我做对了。我应该只更改 jsf-impl 和 jsf-api jar 还是做其他事情。有两个 jars 我不确定是否应该更改,即 jsftemplating 和 jsf-connector..

谢谢

【问题讨论】:

  • 无论如何,jsf-impl 和 jsf-api 都位于 glassfish 内的 modules 文件夹中。我试图用较新的版本(版本 2.1.3.b02)交换 impl 和 api,但后来我得到异常,我的 bean 为空。所以我认为除了交换 jar 之外还有更多工作要做。我对 jsftemplating 和 jsf-connector jar 有很大的怀疑,因为我认为它们也有更新的版本,3.0.1 中使用的是(jsf-connector 3.1.2,jsftemplating 在清单中找不到版本) 谢谢!

标签: jsf glassfish liferay


【解决方案1】:

您可以将所需的 jsf 实现打包到您的应用程序中。您需要在 glassfish-web.xml 的行中添加以下内容:

<class-loader delegate="false" />
<property name="useBundledJsf" value="true" />


您可以交替更新 glassfish 附带的 jsf 实现。您需要从 glassfish3\glassfish\modules\ 删除(或备份)文件 jsf-api.jar 和 jsf-impl.jar 并放置新的 jsf 实现,例如来自javaserverfaces.java.net 的最新二进制版本。

【讨论】:

  • 我试图复制并粘贴 2.1.3 jsf api 和 impl,但随后我收到错误消息,指出我的 bean 为空。 Target unreachable 'userBean' 为空,我得到类似这样的东西..我不知道为什么会发生这种情况,但似乎没有触发 faces servlet 来扫描应用程序类路径并且无法实例化 bean,所以当 jsf呈现它们为空.. 嗯?
  • 这个错误不应该是更新JSF实现引起的……你的代码或配置可能有问题。
  • 嗯,我想这可能是我的配置。我看到 faces-config.xml 的 version=2.0 并且架构是 2.0 这会导致 impl 忽略 faces-config.xml 吗?
  • 我将 faces-config.xml 更改为 2.1(实际上是用 eclipse 生成的,所以我在这里不会错)但它仍然无法正常工作,我的 bean 是空的。当我换回旧的 jsf impl 和 api 应用程序工作正常,但问题出在 ajax 上,它不能在 jsf 之前的 2.1 上工作,所以我必须使用 2.1,服务器提供了 2.0,这不是我想要的..
  • 我设法让它工作,似乎 #{userBean.userName} 不工作,但 #{userBean} 工作,但我不知道它是如何计算出属性的..(我在 bean 中拥有一个属性)
猜你喜欢
  • 2014-05-23
  • 1970-01-01
  • 2011-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-29
相关资源
最近更新 更多