在本地主机上运行的 Restlet 在部署到 GAE 上时会抛出 NullPointerException

发布于 2024-10-08 12:53:56 字数 8248 浏览 0 评论 0原文

以下简单方法在我的本地计算机上运行良好,但当我将其部署到 App Engine 时抛出 NullPointerException。调用 memberVO 上的任何方法(例如 getId())都会抛出 NullPointerException。我不明白为什么这在我的本地网络上有效,但在 appspot.com 上不起作用。

我尝试用原语和字符串替换可序列化对象,只是为了测试目的,但没有一个可以传递给 GAE。全部变成空。

如果有人有任何想法,我还包括了日志中的例外情况。

预先感谢您的任何见解。

奥维尔

@Override
public Boolean updateMember(MemberVO memberVO) { 
        PersistenceManager pm = PMF.get().getPersistenceManager();

        try { 
                Member member = pm.getObjectById(Member.class, memberVO.getId());

                member.setFirstName(memberVO.getFirstName()); 
                member.setLastName(memberVO.getLastName());

                pm.makePersistent(member); 
        } catch (NullPointerException npe) { 
                npe.printStackTrace(); 
        } catch (Exception e) { 
                e.printStackTrace(); 
        } finally { 
                pm.close(); 
        }

        return true; 
}



@Override 
public Boolean updateMember(MemberVO memberVO) { 
        PersistenceManager pm = PMF.get().getPersistenceManager(); 
        try { 
                Member member = pm.getObjectById(Member.class, memberVO.getId()); 
                member.setFirstName(memberVO.getFirstName()); 
                member.setLastName(memberVO.getLastName()); 
                pm.makePersistent(member); 
        } catch (NullPointerException npe) { 
                npe.printStackTrace(); 
        } catch (Exception e) { 
                e.printStackTrace(); 
        } finally { 
                pm.close(); 
        } 
        return true; 
} 

堆栈跟踪:

12-20 05:23PM 48.523 /rest/member 500 3162ms 3858cpu_ms 8api_cpu_ms 0kb Restlet-Framework/2.0snapshot,gzip(gfe) 
72.27.92.51 - - [20/Dec/2010:17:23:51 -0800] "POST /rest/member HTTP/1.1" 500 549 - "Restlet-Framework/2.0snapshot,gzip(gfe)" 
"myapp.appspot.com" ms=3162 cpu_ms=3858 api_cpu_ms=8 cpm_usd=0.307323
loading_request=1 pending_ms=977 
I 12-20 05:23PM 50.343 
javax.servlet.ServletContext log: adapter: [Restlet] Attaching 
application: com.myapp.MyApplication@1a3b359 to URI: 
W 12-20 05:23PM 51.656 
org.restlet.resource.UniformResource doCatch: Exception or error 
caught in resource 
java.lang.NullPointerException 
        at com.myapp.MemberResource.updateMember(MemberResource.java:67) 
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java: 
57) 
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImp l.java: 
43) 
        at java.lang.reflect.Method.invoke(Method.java:43) 
        at org.restlet.resource.ServerResource.doHandle(ServerResource.java: 
453) 
        at org.restlet.resource.ServerResource.post(ServerResource.java:1095) 
        at org.restlet.resource.ServerResource.doHandle(ServerResource.java: 
506) 
        at 
org.restlet.resource.ServerResource.doNegotiatedHandle(ServerResource.java: 
563) 
        at 
org.restlet.resource.ServerResource.doConditionalHandle(ServerResource.java : 
299) 
        at org.restlet.resource.ServerResource.handle(ServerResource.java: 
821) 
        at org.restlet.resource.Finder.handle(Finder.java:513) 
        at org.restlet.routing.Filter.doHandle(Filter.java:156) 
        at org.restlet.routing.Filter.handle(Filter.java:203) 
        at org.restlet.routing.Router.doHandle(Router.java:495) 
        at org.restlet.routing.Router.handle(Router.java:735) 
        at org.restlet.routing.Filter.doHandle(Filter.java:156) 
        at org.restlet.routing.Filter.handle(Filter.java:203) 
        at org.restlet.routing.Filter.doHandle(Filter.java:156) 
        at org.restlet.routing.Filter.handle(Filter.java:203) 
        at org.restlet.routing.Filter.doHandle(Filter.java:156) 
        at 
org.restlet.engine.application.StatusFilter.doHandle(StatusFilter.java: 
154) 
        at org.restlet.routing.Filter.handle(Filter.java:203) 
        at org.restlet.routing.Filter.doHandle(Filter.java:156) 
        at org.restlet.routing.Filter.handle(Filter.java:203) 
        at org.restlet.engine.ChainHelper.handle(ChainHelper.java:111) 
        at 
org.restlet.engine.application.ApplicationHelper.handle(ApplicationHelper.j ava: 
72) 
        at org.restlet.Application.handle(Application.java:382) 
        at org.restlet.routing.Filter.doHandle(Filter.java:156) 
        at org.restlet.routing.Filter.handle(Filter.java:203) 
        at org.restlet.routing.Router.doHandle(Router.java:495) 
        at org.restlet.routing.Router.handle(Router.java:735) 
        at org.restlet.routing.Filter.doHandle(Filter.java:156) 
        at org.restlet.routing.Filter.handle(Filter.java:203) 
        at org.restlet.routing.Router.doHandle(Router.java:495) 
        at org.restlet.routing.Router.handle(Router.java:735) 
        at org.restlet.routing.Filter.doHandle(Filter.java:156) 
        at org.restlet.routing.Filter.handle(Filter.java:203) 
        at org.restlet.engine.ChainHelper.handle(ChainHelper.java:111) 
        at org.restlet.Component.handle(Component.java:387) 
        at org.restlet.Server.handle(Server.java:488) 
        at org.restlet.engine.ServerHelper.handle(ServerHelper.java:71) 
        at 
org.restlet.engine.http.HttpServerHelper.handle(HttpServerHelper.java: 
150) 
        at org.restlet.ext.servlet.ServerServlet.service(ServerServlet.java: 
1037) 
        at 
org.restlet.ext.gwt.GwtShellServletWrapper.service(GwtShellServletWrapper.j ava:
189) 
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
        at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java: 
511) 
        at org.mortbay.jetty.servlet.ServletHandler 
$CachedChain.doFilter(ServletHandler.java:1166) 
        at org.mortbay.jetty.servlet.ServletHandler 
$CachedChain.doFilter(ServletHandler.java:1157) 
        at org.mortbay.jetty.servlet.ServletHandler 
$CachedChain.doFilter(ServletHandler.java:1157) 
        at org.mortbay.jetty.servlet.ServletHandler 
$CachedChain.doFilter(ServletHandler.java:1157) 
        at 
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java: 
388) 
        at 
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java: 
216) 
        at 
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java: 
182) 
        at 
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java: 
765) 
        at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java: 
418) 
        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 org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) 
        at 
com.google.net.rpc.impl.BlockingApplicationHandler.handleRequest(BlockingAp plicationHandler.java: 
24) 
        at com.google.net.rpc.impl.RpcUtil.runRpcInApplication(RpcUtil.java: 
435) 
        at com.google.net.rpc.impl.Server$RpcTask.runInContext(Server.java: 
572) 
        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.jav a: 
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) 
I 12-20 05:23PM 51.684 
This request caused a new process to be started for your application, 
and thus caused your application code to be loaded for the first time. 
This request may thus take longer and use more CPU than a typical 
request for your application.

The following simple method works well on my local machine but throws a NullPointerException when I deploy it to App Engine. Calling any method on memberVO such as getId() throws NullPointerException. I cannot understand why this works on my local network but not on appspot.com.

I have tried replacing the serializable object with primitives and strings just for test purposes but none can be passed to GAE. All become null.

I also included the exception from the logs if anyone has any idea.

Thank you in advance for any insight.

Orville

@Override
public Boolean updateMember(MemberVO memberVO) { 
        PersistenceManager pm = PMF.get().getPersistenceManager();

        try { 
                Member member = pm.getObjectById(Member.class, memberVO.getId());

                member.setFirstName(memberVO.getFirstName()); 
                member.setLastName(memberVO.getLastName());

                pm.makePersistent(member); 
        } catch (NullPointerException npe) { 
                npe.printStackTrace(); 
        } catch (Exception e) { 
                e.printStackTrace(); 
        } finally { 
                pm.close(); 
        }

        return true; 
}



@Override 
public Boolean updateMember(MemberVO memberVO) { 
        PersistenceManager pm = PMF.get().getPersistenceManager(); 
        try { 
                Member member = pm.getObjectById(Member.class, memberVO.getId()); 
                member.setFirstName(memberVO.getFirstName()); 
                member.setLastName(memberVO.getLastName()); 
                pm.makePersistent(member); 
        } catch (NullPointerException npe) { 
                npe.printStackTrace(); 
        } catch (Exception e) { 
                e.printStackTrace(); 
        } finally { 
                pm.close(); 
        } 
        return true; 
} 

Stacktrace:

12-20 05:23PM 48.523 /rest/member 500 3162ms 3858cpu_ms 8api_cpu_ms 0kb Restlet-Framework/2.0snapshot,gzip(gfe) 
72.27.92.51 - - [20/Dec/2010:17:23:51 -0800] "POST /rest/member HTTP/1.1" 500 549 - "Restlet-Framework/2.0snapshot,gzip(gfe)" 
"myapp.appspot.com" ms=3162 cpu_ms=3858 api_cpu_ms=8 cpm_usd=0.307323
loading_request=1 pending_ms=977 
I 12-20 05:23PM 50.343 
javax.servlet.ServletContext log: adapter: [Restlet] Attaching 
application: com.myapp.MyApplication@1a3b359 to URI: 
W 12-20 05:23PM 51.656 
org.restlet.resource.UniformResource doCatch: Exception or error 
caught in resource 
java.lang.NullPointerException 
        at com.myapp.MemberResource.updateMember(MemberResource.java:67) 
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java: 
57) 
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImp l.java: 
43) 
        at java.lang.reflect.Method.invoke(Method.java:43) 
        at org.restlet.resource.ServerResource.doHandle(ServerResource.java: 
453) 
        at org.restlet.resource.ServerResource.post(ServerResource.java:1095) 
        at org.restlet.resource.ServerResource.doHandle(ServerResource.java: 
506) 
        at 
org.restlet.resource.ServerResource.doNegotiatedHandle(ServerResource.java: 
563) 
        at 
org.restlet.resource.ServerResource.doConditionalHandle(ServerResource.java : 
299) 
        at org.restlet.resource.ServerResource.handle(ServerResource.java: 
821) 
        at org.restlet.resource.Finder.handle(Finder.java:513) 
        at org.restlet.routing.Filter.doHandle(Filter.java:156) 
        at org.restlet.routing.Filter.handle(Filter.java:203) 
        at org.restlet.routing.Router.doHandle(Router.java:495) 
        at org.restlet.routing.Router.handle(Router.java:735) 
        at org.restlet.routing.Filter.doHandle(Filter.java:156) 
        at org.restlet.routing.Filter.handle(Filter.java:203) 
        at org.restlet.routing.Filter.doHandle(Filter.java:156) 
        at org.restlet.routing.Filter.handle(Filter.java:203) 
        at org.restlet.routing.Filter.doHandle(Filter.java:156) 
        at 
org.restlet.engine.application.StatusFilter.doHandle(StatusFilter.java: 
154) 
        at org.restlet.routing.Filter.handle(Filter.java:203) 
        at org.restlet.routing.Filter.doHandle(Filter.java:156) 
        at org.restlet.routing.Filter.handle(Filter.java:203) 
        at org.restlet.engine.ChainHelper.handle(ChainHelper.java:111) 
        at 
org.restlet.engine.application.ApplicationHelper.handle(ApplicationHelper.j ava: 
72) 
        at org.restlet.Application.handle(Application.java:382) 
        at org.restlet.routing.Filter.doHandle(Filter.java:156) 
        at org.restlet.routing.Filter.handle(Filter.java:203) 
        at org.restlet.routing.Router.doHandle(Router.java:495) 
        at org.restlet.routing.Router.handle(Router.java:735) 
        at org.restlet.routing.Filter.doHandle(Filter.java:156) 
        at org.restlet.routing.Filter.handle(Filter.java:203) 
        at org.restlet.routing.Router.doHandle(Router.java:495) 
        at org.restlet.routing.Router.handle(Router.java:735) 
        at org.restlet.routing.Filter.doHandle(Filter.java:156) 
        at org.restlet.routing.Filter.handle(Filter.java:203) 
        at org.restlet.engine.ChainHelper.handle(ChainHelper.java:111) 
        at org.restlet.Component.handle(Component.java:387) 
        at org.restlet.Server.handle(Server.java:488) 
        at org.restlet.engine.ServerHelper.handle(ServerHelper.java:71) 
        at 
org.restlet.engine.http.HttpServerHelper.handle(HttpServerHelper.java: 
150) 
        at org.restlet.ext.servlet.ServerServlet.service(ServerServlet.java: 
1037) 
        at 
org.restlet.ext.gwt.GwtShellServletWrapper.service(GwtShellServletWrapper.j ava:
189) 
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
        at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java: 
511) 
        at org.mortbay.jetty.servlet.ServletHandler 
$CachedChain.doFilter(ServletHandler.java:1166) 
        at org.mortbay.jetty.servlet.ServletHandler 
$CachedChain.doFilter(ServletHandler.java:1157) 
        at org.mortbay.jetty.servlet.ServletHandler 
$CachedChain.doFilter(ServletHandler.java:1157) 
        at org.mortbay.jetty.servlet.ServletHandler 
$CachedChain.doFilter(ServletHandler.java:1157) 
        at 
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java: 
388) 
        at 
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java: 
216) 
        at 
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java: 
182) 
        at 
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java: 
765) 
        at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java: 
418) 
        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 org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) 
        at 
com.google.net.rpc.impl.BlockingApplicationHandler.handleRequest(BlockingAp plicationHandler.java: 
24) 
        at com.google.net.rpc.impl.RpcUtil.runRpcInApplication(RpcUtil.java: 
435) 
        at com.google.net.rpc.impl.Server$RpcTask.runInContext(Server.java: 
572) 
        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.jav a: 
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) 
I 12-20 05:23PM 51.684 
This request caused a new process to be started for your application, 
and thus caused your application code to be loaded for the first time. 
This request may thus take longer and use more CPU than a typical 
request for your application.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

鲸落 2024-10-15 12:53:56

这是由于 GAE 对 HTTP 分块编码的已知限制(与 Restlet 无关)。

然而,Restlet 在最近的 2.1 快照中确实提供了一种方便的解决方法,以防止客户端出现分块。请参阅此处的详细信息:
http://wiki.restlet .org/docs_2.1/13-restlet/21-restlet/318-restlet/303-restlet.html

This is due to a know limitation of GAE with HTTP chunked encoding (not related to Restlet).

However, Restlet does offer a convenient workaround in recent 2.1 snapshot to prevent chunking on the client-side. See details here:
http://wiki.restlet.org/docs_2.1/13-restlet/21-restlet/318-restlet/303-restlet.html

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文