GAE上奇怪的500错误 [英] Weird 500 Error on GAE

查看:186
本文介绍了GAE上奇怪的500错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我今天开始在我的应用程序上出现这个错误,不记得改变任何东西..
只要我在本地尝试它,它就可以正常工作,但部署出现此错误。

  EXCEPTION 
java.lang.ClassNotFoundException:se.myApp.server.MyServiceImpl
com.google.appengine.runtime.Request.process- bf332e9dcd56cd0b(Request.java)
在java.lang.ClassLoader.loadClass(ClassLoader.java:266)
在org.mortbay.util.Loader.loadClass(Loader.java:91)
在org.mortbay.util.Loader.loadClass(Loader.java:71)
at org.mortbay.jetty.servlet.Holder.doStart(Holder.java:73)
at org.mortbay.jetty .servlet.ServletHolder.doStart(ServletHolder.java:242)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at org.mortbay.jetty.servlet.ServletHandler.initialize (ServletHandler.java:685)
在org.mortbay.jetty.servlet.Context.startContext(Context.java:140)
在org.mortbay.jetty.webapp.WebAppCon text.startContext(WebAppContext.java:1250)
at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517)
at org.mortbay.jetty.webapp.WebAppContext.doStart( WebAppContext.java:467)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
com.google.net.rpc.impl.RpcUtil.runRpcInApplication(RpcUtil.java: 437)
在com.google.net.rpc.impl.Server $ RpcTask.runInContext(Server.java:573)
在com.google.tracing.TraceContext $ TraceContextRunnable $ 1.run(TraceContext.java :448)
,位于com.google.tracing.TraceContext.runInContext(TraceContext.java:688)
位于com.google.tracing.TraceContext $ AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:326)
。在com.google.tracing.TraceContext $ AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:318)
在com.google.tracing.TraceContext $ TraceContextRunnable.run(TraceContext.java:446)
。在java中。 util.concurren t.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)$ b $在java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:603)$ b $在java.lang.Thread.run(线程。 java:636)

E 2011-04-28 06:42:42.981

javax.servlet.ServletContext日志:不可用
javax.servlet.UnavailableException:se .myApp.server.MyServiceImpl $在org.mortbay.jetty.servlet.Holder.doStart(Holder.java:79)b
$ b。在org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java: 242)
。在org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
。在org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:685)
在org.mortbay.jetty.servlet.Context.startContext(Context.java:140)
at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250)
at org.mortbay .jetty.handler.ContextHandler.doStart(ContextHandler.java:517)
at org.mortbay.jetty.webapp.WebAppContext.do开始(WebAppContext.java:467)
在org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
在com.google.apphosting.runtime.jetty.AppVersionHandlerMap.createHandler(AppVersionHandlerMap。 java:191)
at com.google.apphosting.runtime.jetty.AppVersionHandlerMap.getHandler(AppVersionHandlerMap.java:168)
at com.google.apphosting.runtime.jetty.JettyServletEngineAdapter.serviceRequest(JettyServletEngineAdapter。 java:123)
at com.google.apphosting.runtime.JavaRuntime.handleRequest(JavaRuntime.java:261)
at com.google.apphosting.base.RuntimePb $ EvaluationRuntime $ 2.handleRequest(RuntimePb.java :9285)
在com.google.net.rpc.impl.RpcUtil.runRpcInApplication(RpcUtil.java:437)
在com.google.net.rpc.impl.Server $ RpcTask.runInContext(服务器.java:573)
,位于com.google.tracing.TraceContext $ TraceContextRunnable $ 1.run(TraceContext.java:448)
,位于com.google.tracing.TraceContext.runInContext(TraceContext.java:688)
at com.google.tracing.TraceContext $ AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:326)
at com.google.tracing.TraceContext $ AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:318)
at com.google .tracing.TraceContext $ TraceContextRunnable.run(TraceContext.java:446)$ b $在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
在java.util.concurrent.ThreadPoolExecutor $ Worker .run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:636)


上下文com.google.apphosting的启动失败。 utils.jetty.RuntimeAppEngineWebAppContext@bd93cd {/,/ base / data / home / apps / my_app / 1.350039326756879872}
org.mortbay.util.MultiException [java.lang.NullPointerException,java.lang.NullPointerException,java.lang .NullPointerException,java.lang.NullPointerException,java.lang.NullPointerException]
at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletH andler.java:656)
at org.mortbay.jetty.servlet.Context.startContext(Context.java:140)
at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java: 1250)
at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517)
at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:467)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at com.google.apphosting.runtime.jetty.AppVersionHandlerMap.createHandler(AppVersionHandlerMap.java:191)
at com .google.apphosting.runtime.jetty.AppVersionHandlerMap.getHandler(AppVersionHandlerMap.java:168)
at com.google.apphosting.runtime.jetty.JettyServletEngineAdapter.serviceRequest(JettyServletEngineAdapter.java:123)
at com .google.apphosting.runtime.JavaRuntime.handleRequest(JavaRuntime.java:261)
at com.google.apphosting.base.RuntimePb $ EvaluationRuntime $ 2.handleRequest(RuntimePb.java:9285)
at com。感伤gle.net.rpc.impl.RpcUtil.runRpcInApplication(RpcUtil.java:437)
at com.google.net.rpc.impl.Server $ RpcTask.runInContext(Server.java:573)
at com.google.tracing.TraceContext $ TraceContextRunnable $ 1.run(TraceContext.java:448)
,位于com.google.tracing.TraceContext.runInContext(TraceContext.java:688)
,位于com.google.tracing .TraceContext $ AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:326)
,位于com.google.tracing.TraceContext $ AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:318)
,位于com.google.tracing.TraceContext $ TraceContextRunnable .run(TraceContext.java:446)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)$ b $ at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java :603)
在java.lang.Thread.run(Thread.java:636)

从servlet未捕获的异常
javax.servlet.UnavailableException:初始化失败。
at com.google.apphosting.runtime.jetty.AppVersionHandlerMap.createHandler(AppVersionHandlerMap.java:200)
at com.google.apphosting.runtime.jetty.AppVersionHandlerMap.getHandler(AppVersionHandlerMap.java:168)
,位于com.google.apphosting.runtime.jetty.JettyServletEngineAdapter.serviceRequest(JettyServletEngineAdapter.java:123)
,位于com.google.apphosting.runtime.JavaRuntime.handleRequest(JavaRuntime.java:261)
在com.google.apphosting.base.RuntimePb $ EvaluationRuntime $ 2.handleRequest(RuntimePb.java:9285)
在com.google.net.rpc.impl.RpcUtil.runRpcInApplication(RpcUtil.java:437)
在com.google.net.rpc.impl.Server $ RpcTask.runInContext(Server.java:573)
在com.google.tracing.TraceContext $ TraceContextRunnable $ 1.run(TraceContext.java:448)
位于com.google.tracing.TraceContext.runInContext(TraceContext.java:688)
位于com.google.tracing.TraceContext $ AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java :326)
在com.google.tracing.TraceContext $ AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:318)
在com.google.tracing.TraceContext $ TraceContextRunnable.run(TraceContext.java:446)
。在在在java的java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:603)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
。 lang.Thread.run(Thread.java:636)

每次执行RPC-来自GWT的调用,不管它可能是什么RPC。
例如,调用getHello()会导致这个错误:

  / ** 
*服务器RPC服务的端实现。
* /
@SuppressWarnings(serial)
public class MyServiceImpl extends RemoteServiceServlet implements
MyService {
$ b $ public String getHello()
{
返回Hello;
}
}

web.xml看起来像这样,

 <?xml version =1.0encoding =UTF-8?> 
<!DOCTYPE web-app
PUBLIC - // Sun Microsystems,Inc. //DTD Web Application 2.3 // EN
http://java.sun.com/ DTD /网络app_2_3.dtd>

< web-app>
< servlet>
< servlet-name> myService< / servlet-name>
< servlet-class> se.myApp.server.MyServiceImpl< / servlet-class>
< / servlet>

< servlet-mapping>
< servlet-name> myService< / servlet-name>
< url-pattern> / etc / myService< / url-pattern>
< / servlet-mapping>

<! - 要投放的默认页面 - >
< welcome-file-list>
< welcome-file> index.html< / welcome-file>
< / welcome-file-list>

< / web-app>

更新:
获得最新的GAE SDK后,GWT SDK:
尝试将标准GreetingSample部署到新的.appspot.com。问题仍然存在。



更新:
在得到eclipse的更新后,这个错误似乎消失了,但是每次都有一个小小的错误服务器端代码,可以说一个拼写错误的查询,而不是抛出一个正常的错误指向查询,我得到了上述错误。

解决方案

在测试过程中从我的IDE进行快速部署时,发生过几次这种情况。



您可能有部分部署的应用程序。

您应该对应用进行回滚以确保它未部分部署,然后重新部署。



在Maven化我的项目并开始使用maven-gae-plugin进行部署时,我停止了这些问题。

它使部署与 mvn clean package gae:deploy 一样简单。它也使得回滚简单到 mvn gae:rollback



我有关于为GAE部署设置Maven 3的指示,它也包含GWT支持,如果您不使用GWT,则可以将其删除。


i started getting this error on my app today, dont recall changing anything at all.. It works fine whenever i try it locally, but deployed i get this error.

EXCEPTION 
java.lang.ClassNotFoundException: se.myApp.server.MyServiceImpl
    at com.google.appengine.runtime.Request.process-bf332e9dcd56cd0b(Request.java)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
    at org.mortbay.util.Loader.loadClass(Loader.java:91)
    at org.mortbay.util.Loader.loadClass(Loader.java:71)
    at org.mortbay.jetty.servlet.Holder.doStart(Holder.java:73)
    at org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java:242)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:685)
    at org.mortbay.jetty.servlet.Context.startContext(Context.java:140)
    at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250)
    at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517)
    at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:467)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at com.google.net.rpc.impl.RpcUtil.runRpcInApplication(RpcUtil.java:437)
    at com.google.net.rpc.impl.Server$RpcTask.runInContext(Server.java:573)
    at com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:448)
    at com.google.tracing.TraceContext.runInContext(TraceContext.java:688)
    at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:326)
    at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:318)
    at com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:446)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:636)

E 2011-04-28 06:42:42.981

javax.servlet.ServletContext log: unavailable
javax.servlet.UnavailableException: se.myApp.server.MyServiceImpl
    at org.mortbay.jetty.servlet.Holder.doStart(Holder.java:79)
    at org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java:242)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:685)
    at org.mortbay.jetty.servlet.Context.startContext(Context.java:140)
    at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250)
    at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517)
    at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:467)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at com.google.apphosting.runtime.jetty.AppVersionHandlerMap.createHandler(AppVersionHandlerMap.java:191)
    at com.google.apphosting.runtime.jetty.AppVersionHandlerMap.getHandler(AppVersionHandlerMap.java:168)
    at com.google.apphosting.runtime.jetty.JettyServletEngineAdapter.serviceRequest(JettyServletEngineAdapter.java:123)
    at com.google.apphosting.runtime.JavaRuntime.handleRequest(JavaRuntime.java:261)
    at com.google.apphosting.base.RuntimePb$EvaluationRuntime$2.handleRequest(RuntimePb.java:9285)
    at com.google.net.rpc.impl.RpcUtil.runRpcInApplication(RpcUtil.java:437)
    at com.google.net.rpc.impl.Server$RpcTask.runInContext(Server.java:573)
    at com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:448)
    at com.google.tracing.TraceContext.runInContext(TraceContext.java:688)
    at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:326)
    at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:318)
    at com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:446)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:636)


Failed startup of context com.google.apphosting.utils.jetty.RuntimeAppEngineWebAppContext@bd93cd{/,/base/data/home/apps/my_app/1.350039326756879872}
org.mortbay.util.MultiException[java.lang.NullPointerException, java.lang.NullPointerException, java.lang.NullPointerException, java.lang.NullPointerException, java.lang.NullPointerException]
    at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:656)
    at org.mortbay.jetty.servlet.Context.startContext(Context.java:140)
    at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250)
    at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517)
    at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:467)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at com.google.apphosting.runtime.jetty.AppVersionHandlerMap.createHandler(AppVersionHandlerMap.java:191)
    at com.google.apphosting.runtime.jetty.AppVersionHandlerMap.getHandler(AppVersionHandlerMap.java:168)
    at com.google.apphosting.runtime.jetty.JettyServletEngineAdapter.serviceRequest(JettyServletEngineAdapter.java:123)
    at com.google.apphosting.runtime.JavaRuntime.handleRequest(JavaRuntime.java:261)
    at com.google.apphosting.base.RuntimePb$EvaluationRuntime$2.handleRequest(RuntimePb.java:9285)
    at com.google.net.rpc.impl.RpcUtil.runRpcInApplication(RpcUtil.java:437)
    at com.google.net.rpc.impl.Server$RpcTask.runInContext(Server.java:573)
    at com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:448)
    at com.google.tracing.TraceContext.runInContext(TraceContext.java:688)
    at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:326)
    at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:318)
    at com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:446)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:636)

Uncaught exception from servlet
javax.servlet.UnavailableException: Initialization failed.
    at com.google.apphosting.runtime.jetty.AppVersionHandlerMap.createHandler(AppVersionHandlerMap.java:200)
    at com.google.apphosting.runtime.jetty.AppVersionHandlerMap.getHandler(AppVersionHandlerMap.java:168)
    at com.google.apphosting.runtime.jetty.JettyServletEngineAdapter.serviceRequest(JettyServletEngineAdapter.java:123)
    at com.google.apphosting.runtime.JavaRuntime.handleRequest(JavaRuntime.java:261)
    at com.google.apphosting.base.RuntimePb$EvaluationRuntime$2.handleRequest(RuntimePb.java:9285)
    at com.google.net.rpc.impl.RpcUtil.runRpcInApplication(RpcUtil.java:437)
    at com.google.net.rpc.impl.Server$RpcTask.runInContext(Server.java:573)
    at com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:448)
    at com.google.tracing.TraceContext.runInContext(TraceContext.java:688)
    at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:326)
    at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:318)
    at com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:446)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:636)

It is thrown whenever i perform a RPC-call from GWT, regardless os what RPC it may be. For example, calling getHello() will cause this error:

/**
 * The server side implementation of the RPC service.
 */
@SuppressWarnings("serial")
public class MyServiceImpl extends RemoteServiceServlet implements
        MyService {

    public String getHello()
    {
        return "Hello";
    }
}

web.xml looks like this,

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>
     <servlet>
    <servlet-name>myService</servlet-name>
    <servlet-class>se.myApp.server.MyServiceImpl</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>myService</servlet-name>
    <url-pattern>/etc/myService</url-pattern>
  </servlet-mapping>

  <!-- Default page to serve -->
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
  </welcome-file-list>

</web-app>

Update: After getting the lastest GAE SDK, GWT SDK: Tried deploying the standard GreetingSample to a new .appspot.com. The problem still persists there.

Update: After getting updates for eclipse the error seems to have gone away, HOWEVER, everytime there is one tiny error in the server-side code, lets say a miss-spelled query, instead of throwing a normal error pointing to the query, i get the above error instead.

解决方案

This has happened me a few times when doing rapid deployments from my IDE while testing.

You probably have a partially deployed app.

You should do a rollback on the app to make sure it isn't partially deployed and then do a redeploy.

I stopped having these problems when I Mavenized my project and started using the maven-gae-plugin to do deployments.

It makes deployment as simple as mvn clean package gae:deploy. It also makes doing roll backs as simple as mvn gae:rollback

I have instructions on setting up Maven 3 for GAE deployment, it does include GWT support as well, you can remove that if you are not using GWT.

这篇关于GAE上奇怪的500错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆