2013-04-25 48 views
0

我尝试将我的JSF 2.1 Webapp迁移到Google App引擎。GAE上的Primefaces 3.5 JSF 2.1 ClassNotFoundException

一切都运行在本地开发模式确定,部署也对GAE ok了,但是当我尝试访问任何网页,我得到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> 

感谢您的帮助!

+0

你看看这个:http://javadocs.wordpress.com/2009/10/17/mojarra-jsf-2-0-rc2-and-google-app-engine-sdk-1-2 -6 /#more-242? – 2013-04-25 19:42:26

+0

是的,我检查了这一点。我已经实现了修改后的WebConfiguration.java。我认为lib文件夹中包含了旧文件。我重建所有内容并再次上传。同样的问题,但如果我访问该应用程序与网址:1.version.myapp.appspot.com - 它的工作! – Sonic 2013-04-26 00:10:42

+0

好吧,它不起作用。该页面现在呈现,但在任何ajax请求上,我收到了响应: class java.lang.NoClassDefFoundError<![CDATA [无法初始化com.google.apphosting类.runtime.security.shared.stub.com.sun.org.apache.xerces.internal.dom.NodeImpl]]> Sonic 2013-04-26 00:16:36

回答

0

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

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

好像eBay的发现API是不是与谷歌App Engine的兼容,因为它使用JAX-WS。