【问题标题】:Primefaces 3.5 JSF 2.1 ClassNotFoundException on GAEGAE 上的 Primefaces 3.5 JSF 2.1 ClassNotFoundException
【发布时间】:2013-04-25 19:14:12
【问题描述】:

我尝试将我的 JSF 2.1 Webapp 迁移到 Google App 引擎。

在本地开发模式下一切正常,在 GAE 上部署也正常,但是当我尝试访问任何页面时,我得到 HTTP 代码 500。日志文件显示存在 ClassNotFoundException:

INFO: com.sun.faces.lifecycle.ELResolverInitPhaseListener populateFacesELResolverForJsp: JSF1027: [null] 
      The ELResolvers for JSF were not registered with the JSP container.
WARNING: populateFacesELResolverForJsp: JSF1027: [null] The ELResolvers for JSF were not registered with the JSP container.
javax.servlet.ServletException: java.lang.RuntimeException:  
java.lang.ClassNotFoundException: com.sun.org.apache.xerces.internal.dom.ElementNSImpl
at com.google.apphosting.runtime.jetty.AppVersionHandlerMap.handle(AppVersionHandlerMap.java:268)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.Server.handle(Server.java:326)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923)
at com.google.apphosting.runtime.jetty.RpcRequestParser.parseAvailable(RpcRequestParser.java:76)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
at com.google.apphosting.runtime.jetty.JettyServletEngineAdapter.serviceRequest(JettyServletEngineAdapter.java:146)
at com.google.apphosting.runtime.JavaRuntime$RequestRunnable.run(JavaRuntime.java:438)
at com.google.tracing.TraceContext$TraceContextRunnable.runInContext(TraceContext.java:480)
at com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:487)
at com.google.tracing.TraceContext.runInContext(TraceContext.java:774)
at com.google.tracing.TraceContext$DoInTraceContext.runInContext(TraceContext.java:751)
at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:342)
at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:334)
at com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:484)
at com.google.apphosting.runtime.ThreadGroupPool$PoolEntry.run(ThreadGroupPool.java:251)
at java.lang.Thread.run(Thread.java:722)

我已经尝试部署了对应的库jaxp-ri-1.4.jar,但是没有效果。

关于我的配置和第三方库的更多信息:

- Mojarra JSF 2.1.12
- Primefaces 3.5
- Primefaces Extensions 
- Prettyfaces 3.3.3
- Ebay Finding Api
- STATE_SAVING_METHOD set to 'client'
-  i use EL 2.2 form jboss seam  <context-param>
    <param-name>com.sun.faces.expressionFactory</param-name>
    <param-value>org.jboss.el.ExpressionFactoryImpl</param-value>
    </context-param>

感谢您的帮助!

【问题讨论】:

  • 是的,我检查了这个。我已经实现了修改后的 WebConfiguration.java。我认为 lib 文件夹中包含旧文件。我重建一切并再次上传。同样的问题,但如果我使用 url 访问应用程序:1.version.myapp.appspot.com - 它可以工作!
  • 好的,它不起作用。该页面现在已呈现,但在任何 ajax 请求上我都会得到响应:class java.lang.NoClassDefFoundError
  • 你的 faces-config.xml 是否有:org.jboss.seam.jsf.SeamELResolver
  • "java.lang.ClassNotFoundException: com.sun.org.apache.xerces.internal.dom.ElementNSImpl",需要添加jaxp-ri jar文件。

标签: java google-app-engine jsf jsf-2 primefaces


【解决方案1】:

经过一些调试后,我发现 eBay Finding API 会导致问题,因为它使用 SOAP 进行服务调用。无需调用 eBay Api,一切正常。

com.sun.org.apache.xerces.internal.dom.NodeImpl is a restricted Class

似乎 eBay 查找 API 与 Google App Engine 不兼容,因为它使用 JAX-WS。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-09
    • 2013-06-09
    • 1970-01-01
    • 1970-01-01
    • 2011-12-07
    • 2014-05-14
    • 2023-03-04
    • 2013-11-03
    相关资源
    最近更新 更多