2013-02-06 55 views
2

我正在開發gwt2.4,jre7和GAE 1.7.3.in模式我的代碼正常工作,但是當我上傳應用程序引擎上的應用程序時,以下錯誤將文件從Google App Engine上傳到Amazon S3導致出現異常

java.lang.ExceptionInInitializerError 
at com.amazonaws.services.s3.AmazonS3Client.<init>(AmazonS3Client.java:277) 
at com.wa.gwtamazon.server.UploadServiceImpl.amazonConfig(UploadServiceImpl.java:124) 
at com.wa.gwtamazon.server.UploadServiceImpl.doPost(UploadServiceImpl.java:76) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) 
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:100) 
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:679) 


Nested in java.lang.ExceptionInInitializerError: 
java.lang.NullPointerException 
at com.amazonaws.util.VersionInfoUtils.initializeUserAgent(VersionInfoUtils.java:124) 
at com.amazonaws.util.VersionInfoUtils.getUserAgent(VersionInfoUtils.java:86) 
at com.amazonaws.ClientConfiguration.<clinit>(ClientConfiguration.java:31) 
at com.amazonaws.services.s3.AmazonS3Client.<init>(AmazonS3Client.java:277) 
at com.wa.gwtamazon.server.AmazonService.uploadFileToAmazone(AmazonService.java:50) 
at com.wa.gwtamazon.server.AmazonService.doPost(AmazonService.java:36) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) 
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:100) 
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:679) 

我也發現了以下鏈接的解決方案但仍然沒有工作

http://code.google.com/p/googleappengine/issues/detail?id=8166

+0

僅供參考:Google App Engine僅支持JDK 5和6. https://developers.google.com/appengine/docs/java/gettingstarted/installing – Eich

回答

3

//編輯:他補充以下XML他appengine-web.xml得到它的工作:

<system-properties> 
    <property name="java.util.logging.config.file" value="WEB-INF/logging.properties"/> 
    <property name="os.name" value="Linux" /> 
    <property name="os.version" value="6.1" /> 
    <property name="java.vm.name" value="Java HotSpot(TM) Client VM" /> 
    <property name="java.vm.version" value="23.5-b02" /> 
    <property name="user.language" value="en" /> 
    <property name="user.region" value="us" /> 
</system-properties> 

不能使用亞馬遜利布斯,因爲在谷歌應用程序引擎的限制(沒有線程,...)。 但也有一些解決方案,可以幫助你:

[1] http://socialappdev.com/using-amazon-s3-with-google-app-engine-02-2011

[2] https://github.com/handstandtech/s3-simple-appengine

你爲什麼不使用Google Cloud StorageGAE Java SDK? GCS API與S3 API幾乎相同。

+0

但在此[鏈接](http://code.google。 com/p/googleappengine/issues/detail?id = 8166)他們告訴我在1.7.3版本的應用程序引擎中修正了這個問題,但是我仍然有問題,所以你知道這個問題可能是我的代碼或配置中的錯誤。爲您的respo nse –

+0

看來這個錯誤報告與你的問題不同。你在VersionInfo第124行得到一個NullPointerException。我想System.getProperty拋出NullPointerException(os.name或os.version)。但是在他們的[文檔](https://developers.google.com/appengine/docs/java/runtime)中,他們寫道允許System.getProperty。嘗試按照[這裏](http://code.google.com/p/googleappengine/issues/detail?id=6971)中的說明自行設置屬性。 – Eich

+0

你是對的,我也嘗試把<系統屬性> 這個屬性,但我不知道什麼我寫在價值領域?????我把不同的價值比上傳在應用程序引擎上仍然給我同樣的錯誤如上。 –

2

一段時間的應用程序引擎沒有得到os.name,os.version,java.vm.name等的價值,所以我們必須在AppEngine上-web.xml文件中手動指定

<system-properties> 

<property name="os.name" value="Linux" /> 
<property name="os.version" value="6.1" /> 

<property name="java.vm.name" value="Java HotSpot(TM) Client VM" /> 
<property name="java.vm.version" value="23.5-b02" /> 

<property name="user.language" value="en" /> 
<property name="user.region" value="us" />