1

我遇到了 JSF 渲染问题。这是我的设置:

  • 中央操作系统
  • TomEE Plus 1.5.2
  • 冰面
  • 弹簧安全 3

我的应用程序是这样设置的:

  • /opt/tomee/lib/[所有普通的 TomEE jars]
  • /opt/tomee/lib/[所有 Spring Security jars]
  • /opt/tomee/lib/icefaces.jar
  • /opt/tomee/lib/icefaces-compat.jar
  • /opt/tomee/lib/icepush.jar
  • /opt/tomee/webapps/UI/index.xhtml
  • /opt/tomee/webapps/UI/WEB-INF/lib/icefaces-ace.jar
  • /opt/tomee/webapps/UI/[正常的jsf 2配置]

日志中没有任何明显的内容,但是当 JSF 尝试渲染时,我收到以下错误:

com/sun/crypto/provider/HmacCore

viewId=/index.xhtml
位置=/opt/tomee/webapps/UI/index.xhtml
phaseId=RENDER_RESPONSE(6)

造成的:
java.lang.LinkageError - com/sun/crypto/provider/HmacCore
在 com.sun.crypto.provider.HmacSHA1.(DashA13*..)

错误页面上的堆栈跟踪是大量的,所以我不打算在这里转储小说,但这里是注意的调用。

java.lang.LinkageError: com/sun/crypto/provider/HmacCore
在 com.sun.crypto.provider.HmacSHA1.(DashA13*..)
{...}
在 java.security.Provider$Service.newInstance(Provider.java:1221)
{...}
在 org.apache.myfaces.shared.util.StateUtils.encrypt(StateUtils.java:328)
{...}
在 org.icefaces.impl.renderkit.RenderWrapper.encodeEnd(RenderWrapper.java:53)
{...}
在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:311)

我将所有 jar 的内容转储到了 tomee/lib 中,但 com.sun.crypto 不在我可以在 Web 服务器中找到的任何地方。不使用 Spring Security 的应用程序工作得很好。

有什么想法吗?

4

1 回答 1

0

好的。我让它发挥作用,所以我将成为“那个人”并回答我自己的问题。我希望它能帮助其他人摆脱它给我带来的偏头痛。在我执行以下操作后问题就消失了:

  1. 删除我的战争
  2. 让tomcat清理webapps目录
  3. 停止Tomcat
  4. 删除相关目录work
  5. 将 spring security taglibs jar 添加到我的应用程序
  6. 从我的 applicationSecurity.xml 中删除编码器声明
  7. 重建应用程序
  8. 启动tomcat
  9. 重新部署
  10. 利润

第 10 步实际上并不是调试过程的一部分,但如果是,我也不会抱怨。分享和享受。

于 2013-07-31T20:40:17.457 回答