2013-02-06 2 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) 

다음은 또한 다음 링크에서 해결책을 찾을 수 있어요하지만 여전히 그렇지 // EDIT

(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

작동 않았다 : 그는 얻기 위해 자신의 appengine-web.xml에 다음 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> 

Google App Engine의 제한 사항 (스레드 없음, ...)으로 인해 Amazon Lib을 사용할 수 없습니다. 그러나 당신을 도움이 될 몇 가지 해결책이 있습니다 :

[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

하지만이 [link] (http://code.google. co.kr/p/googleappengine/issues/detail? id = 8166) 그들은 앱 엔진 1.7.3에서 문제가 해결되었지만 문제가 있음을 알았습니다. 내 코드 또는 구성에서 실수 한 부분이있을 수 있습니다. 감사합니다. 감사합니다. 너의 레스포를 위해서. nse –

+0

버그보고가 문제와 다른 것 같습니다. VersionInfo 줄 124에서 NullPointerException이 발생합니다. System.getProperty가 NullPointerException (os.name 또는 os.version)을 throw합니다. 그러나 그들의 [documentation] (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" /> 

관련 문제