【问题标题】:Richfaces 3.x under weblogic 8.1weblogic 8.1下的Richfaces 3.x
【发布时间】:2011-01-16 22:40:57
【问题描述】:

我一直在开发一个旨在在 weblogic 8.1 下运行的小项目。 Richfaces 根据文档声明它支持 weblogic 8.1。

Weblogic 8.1 使用 servlet 规范 2.3 和 jsp 1.2 这一直在我本地安装的 weblogic 8.1 版本上运行,但是在部署到 sparc 服务器时,我开始遇到麻烦。我已经解决了一些最初的头痛问题,但后来我收到错误 500 并且无法获取详细信息。但经过一番努力,我得出了这个...

javax.servlet.ServletException: javax/servlet/jsp/JspContext 在 weblogic.servlet.internal.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:344) 在 com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:346) 在 com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:152) 在 org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:108) 在 org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:216) 在 com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:107) 在 com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:245) 在 com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:137) 在 javax.faces.webapp.FacesServlet.service(FacesServlet.java:214) 在 weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1072) 在 weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:465) 在 weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:28) 在 weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27) 在 org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:141) 在 org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:281) 在 weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27) 在 weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27) 在 weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6987) 在 weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) 在 weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121) 在 weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3892) 在 weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2766) 在 weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:224) 在 weblogic.kernel.ExecuteThread.run(ExecuteThread.java:183)

JspContext 不是 jsp 1.2 的一部分,它是较新的。我认为这个异常最初是 ClassNotFoundException 或考虑到该消息的类似内容。异常没有附加任何“原因”。

以下是我的网络应用程序中包含的 jar 文件。

antlr-2.7.6.jar asm-1.5.3.jar asm-attrs-1.5.3.jar cglib-2.1_3.jar commons-beanutils-1.6.jar commons-collections-3.2.jar commons-digester-1.5.jar commons-lang-2.4.jar commons-logging-1.0.3.jar dom4j-1.6.1.jar ehcache-1.2.3.jar hibernate-3.2.4.sp1.jar jsf-api-1.1_02.jar jsf-impl-1.1_02.jar jstl-1.0.jar jta-1.1.jar log4j-1.2.15.jar richfaces-api-3.1.6.SR1.jar richfaces-impl-3.1.6.SR1.jar richfaces-ui-3.1.6.SR1.jar xercesImpl-2.9.1.jar xml-apis-1.3.04.jar

我的选择已经不多了,我将试图找出谁依赖于 JspContext 类...但如果有人能给我一些见解,我将不胜感激。哦,我不能对生产网络逻辑服务器进行很多更改。我宁愿不做任何事情,这些变化很可能是denied

哦,这个错误是在尝试查看页面的时候出现的,所以部署成功了。

【问题讨论】:

  • 感谢重新格式化 :) 我注意到了这些变化。

标签: jsf richfaces weblogic8.x


【解决方案1】:

好的,我已经解决了我的问题。不是我想要的方式,但它正在发挥作用(至少就我现在所知道的而言)。

在(再次)使用 google 之后,我发现有人提到使用 Richfaces 3.0.1 的评论。 现在我看到很多人说使用版本 xxx 甚至 3.3.x。毕竟我确实让它在 3.1.6 上工作,但是在 weblogic 的 windows 版本上(可能被我安装的其他一些 weblogic 版本污染了)。

所以我修改了我的 pom 以供 maven 依赖:

org.richfacesrichfaces3.0.1版本>

这不是最佳的,但我猜它有效。 一些 taglibrary 引用需要更改,并且包在一定程度上发生了变化。

如果有人需要,我可以为此发布我的项目配置。让这一切在 weblogic 8.1 上运行并非易事。但据我所知,3.1.6 的参考文档不正确,因为它支持 weblogic 8.1

【讨论】:

  • RichFaces 3.3.x 的文档(明确指出 RichFaces 需要 WebLogic 9.1 或 10.0 (docs.jboss.org/richfaces/3.3.2.GA/en/devguide/html/…)。我认为他们在 3.1.6(或更早版本)中引入了一些破坏 Weblogic 8.1 支持但没有更新文档。感谢您的反馈。
【解决方案2】:

jsp-api-2.1.jar 包含缺少的类,因此您可以尝试使用它(在 weblogic 中替换它,或者在您的 /lib 中尝试),但我无法预测会发生什么。

【讨论】:

  • 奇怪的是,当我这样做时,uat 服务器是如何倒塌的。我将尝试解决这个想法,但我同意......结果可能是粗略的。谢谢
  • weblogic 8.1 的问题是......它仍然运行 jdk 1.4 :( 除非我构建自己的 jsp-api-2.1 版本,否则它不会工作。不过谢谢
猜你喜欢
  • 1970-01-01
  • 2011-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-23
相关资源
最近更新 更多