0

我是Google App Engine的新手。我在部署之前在glassfish服務器上工作的應用程序時遇到問題。在GAE中部署應用程序

此應用程序使用Facebook的JavaScript sdk和Java servlets和jsp's。 該應用程序部署到GAE,但它不起作用。

這是我的應用程序應該如何工作。 它有一個index1.jsp(只包含獲取Facebook數據的代碼和一個重定向到index.jsp的表單)數據文件,我從中獲取Facebook用戶數據(如姓名和性別),然後重定向到index.jsp文件。這是用戶看到的第一頁。 它有一個輸入按鈕,將用戶帶到另一個頁面。

問題 當我運行帶有url的應用程序myappname.appspot.com/index1時,我只是看到一個沒有任何錯誤的空白頁面。

我檢查,如果沒有index1.jsp應用程序工作(需要Facebook的數據字段在這種情況下是空的)的URL,myappname.appspot.com/index.jsp。它顯示index.jsp,但是當我按下輸入時,我得到NullPointerException。

以下是我的GAE日誌中的日誌: check_gender是應用程序必須重定向到的實際servlet。

登錄

/check_gender 
java.lang.NullPointerException 
    at org.apache.jsp.menu_jsp._jspService(menu_jsp.java:67) 
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97) 
    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.handle(ServletHandler.java:390) 
    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.servlet.Dispatcher.forward(Dispatcher.java:327) 
    at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:126) 
    at apps.check_gender.processRequest(check_gender.java:60) 
    at apps.check_gender.doGet(check_gender.java:545) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:617) 
    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 com.google.apphosting.utils.servlet.ParseBlobUploadFilter.doFilter(ParseBlobUploadFilter.java:125) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at com.google.apphosting.runtime.jetty.SaveSessionFilter.doFilter(SaveSessionFilter.java:35) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43) 
    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 com.google.apphosting.runtime.jetty.AppVersionHandlerMap.handle(AppVersionHandlerMap.java:266) 
    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:447) 
    at com.google.tracing.TraceContext$TraceContextRunnable.runInContext(TraceContext.java:454) 
    at com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:461) 
    at com.google.tracing.TraceContext.runInContext(TraceContext.java:703) 
    at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:338) 
    at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:330) 
    at com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:458) 
    at com.google.apphosting.runtime.ThreadGroupPool$PoolEntry.run(ThreadGroupPool.java:251) 
    at java.lang.Thread.run(Thread.java:722) 
C 2013-03-04 00:20:56.397 
Uncaught exception from servlet 
java.lang.NullPointerException 
    at org.apache.jsp.menu_jsp._jspService(menu_jsp.java:67) 
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97) 
    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.handle(ServletHandler.java:390) 
    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.servlet.Dispatcher.forward(Dispatcher.java:327) 
    at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:126) 
    at apps.check_gender.processRequest(check_gender.java:60) 
    at apps.check_gender.doGet(check_gender.java:545) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:617) 
    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 com.google.apphosting.utils.servlet.ParseBlobUploadFilter.doFilter(ParseBlobUploadFilter.java:125) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at com.google.apphosting.runtime.jetty.SaveSessionFilter.doFilter(SaveSessionFilter.java:35) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43) 
    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 com.google.apphosting.runtime.jetty.AppVersionHandlerMap.handle(AppVersionHandlerMap.java:266) 
    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:447) 
    at com.google.tracing.TraceContext$TraceContextRunnable.runInContext(TraceContext.java:454) 
    at com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:461) 
    at com.google.tracing.TraceContext.runInContext(TraceContext.java:703) 
    at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:338) 
    at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:330) 
    at com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:458) 
    at com.google.apphosting.runtime.ThreadGroupPool$PoolEntry.run(ThreadGroupPool.java:251) 
    at java.lang.Thread.run(Thread.java:722) 

回答

1

你,如果你的應用程序是在本地開發環境運行的檢查?

正如你所說的所有值都爲空,這也許是Nullpointer的原因? 關於你的日誌中的空指針來自於你的JSP:

menu_jsp在第67行

顯示java.lang.NullPointerException 在org.apache.jsp.menu_jsp._jspService(menu_jsp.java:67)

0

事實上,這可能是一個簡單的空指針,它出現在你的代碼中。嘗試在check_gender.java的第60行放置一個斷點,以便您可以看到發生了什麼。

+1

我發現了這個問題。在check_gender.java ArrayList中被返回null,因爲它不能從那些需要檢查同一個servlet內部條件的Facebook得到一些數據。現在它工作正常。 – 2013-03-08 02:38:56