调用createUploadUrl()的GWT Blobstore错误 [英] GWT Blobstore error calling createUploadUrl()

查看:182
本文介绍了调用createUploadUrl()的GWT Blobstore错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试使用Blobstore api作为使用GWT的appengine ...
我向你保证!我有它工作了几个月,突然间我开始
得到以下错误..在从
a servelet执行以下行后。



public class ImageServiceImpl扩展RemoteServiceServlet实现ImageService {/ b>

  / ** 
*
* /
private static final long serialVersionUID = 1L;

//初始化博客商店服务
私人BlobstoreService blobService = BlobstoreServiceFactory.getBlobstoreService();
// private static final Logger log = Logger.getLogger(ImageServiceImpl.class);
public static final String PATH_TO_DEFAULT_IMAGE =images / no_photo.jpg;






//为简洁省略
}

  @Override 
public String getUpLoadPath(){
String url = blobService.createUploadUrl(/ n5 / doimage);
返回网址;
}

}

初始化App Engine服务器
2011-09-19 7:28:45 com.google.apphosting.utils.jetty.JettyLogger info
INFO:通过com.google.apphosting.utils记录到JettyLogger(null) .jetty.JettyLogger
2011年9月19日下午7点28分45秒com.google.apphosting.utils.config.AppEngineWebXmlReader readAppEngineWebXml
INFO:成功处理C:\ development \\\
5\\\
5\\ \\ WAR \WEB-INF / appengine-web.xml
2011年9月19日下午7点28分45秒com.google.apphosting.utils.config.AbstractConfigXmlReader readConfigXml
INFO:成功处理C:\\ \\ development \\\
5\\\
5\war\WEB-INF / web.xml
2011年9月19日下午3点28分47秒com.google.appengine.tools.development.DevAppServerImpl start
INFO:服务器运行在 http:// localhost:8888 /
2011年9月19日7:34 :59 PM com.google.appengine.tools.development.ApiProxyLocalImpl log
SEVERE:javax.ser vlet.ServletContext日志:调度传入的RPC调用时发生异常
com.google.gwt.user.server.rpc.UnexpectedException:服务方法'public abstract java.lang.String com.six.n5.client.service.ImageService .getUpLoadPath()引发了一个意外的异常:java.lang.VerifyError:com.google.appengine.api.blobstore.BlobstoreServicePb类中的$ CreateUploadURLRequest覆盖了最终方法isInitialized。()Z
,com.google.gwt.user .server.rpc.RPC.encodeResponseForFailure(RPC.java:385)
at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:588)
com.google .gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:208)
,位于com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:248)
在com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62)
位于javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
a t javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:216)
com.google.inject .servlet.ServletDefinition.service(ServletDefinition.java:141)
在com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:93)
在com.google.inject.servlet.FilterChainInvocation .doFilter(FilterChainInvocation.java:63)
at com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:122)
com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter的.java:110)
。在org.mortbay.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java:1157)
。在com.google.appengine.tools.development.HeaderVerificationFilter.doFilter(HeaderVerificationFilter .java:35)
at org.mortbay.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java:1157)
at com.google.appengine.api.blobstore.de v.ServeBlobFilter.doFilter(ServeBlobFilter.java:58)
at org.mortbay.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java:1157)
com.google.apphosting.utils。在org.mortbay.jetty.servlet.ServletHandler $ CachedChain.doFilter servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)
(ServletHandler.java:1157)
。在com.google.appengine.tools。 development.StaticFileFilter.doFilter(StaticFileFilter.java:122)
at org.mortbay.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java:1157)
com.google.appengine.tools。 development.BackendServersFilter.doFilter(BackendServersFilter.java:97)维持在org.mortbay.jetty.servlet org.mortbay.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java:1157)

。 ServletHandler.handle(ServletHandler.java:388)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at org.mortbay.jetty.servlet.Sessio nHandler.handle(SessionHandler.java:182)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
at org.mortbay.jetty.webapp.WebAppContext.handle( WebAppContext.java:418)
在com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:70)
在org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper。 java:152)
at com.google.appengine.tools.development.JettyContainerService $ ApiProxyHandler.handle(JettyContainerService.java:351)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper。
at org.mortbay.jetty.Server.handle(Server.java:326)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
at org.mortbay.jetty.HttpConnection $ RequestHandler.content(HttpConnection.java:938)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:755)
at org.mortbay.jetty .HttpParser.parseAvailable(HttpParser.jav a:218)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
在org.mortbay.thread.QueuedThreadPool $ PoolThread.run(QueuedThreadPool.java:582)
引起:java.lang.VerifyError:com.google.appengine.api.blobstore.BlobstoreServicePb类$ CreateUploadURLRequest覆盖final方法isInitialized。()在java.lang.ClassLoader.defineClass1中的Z
(本地方法)$在java.lang.ClassLoader.defineClass中的
(未知源)$ java.security.SecureClassLoader.defineClass中的
(未知来源)
在java.net.URLClassLoader.defineClass(未知来源)
在java.net.URLClassLoader.access $ 100(未知来源)
在java.net.URLClassLoader $ 1.run (未知源代码)在java.net.URLClassLoader上
$ 1.run(未知源代码)$ java.util.AccessController.doPrivileged(Native方法)上的
在java.net.URLClassLoader.findClass上
未知来源)
在java.lang.ClassLoader.loadClass(未知源)
在com.google.appengine.tools.development.IsolatedAppClassLoader.loadClass(IsolatedAppClassLoader.java:176)
在java.lang.ClassLoader。的loadClass(来源不明)在com.google.appengine.api.blobstore.BlobstoreServiceImpl.createUploadUrl(BlobstoreServiceImpl.java:43)

在com.google.appengine.api.blobstore.BlobstoreServiceImpl.createUploadUrl(BlobstoreServiceImpl .java:34)
at com.six.n5.server.ImageServiceImpl.getUpLoadPath(ImageServiceImpl.java:153)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun .reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com .google.appengine.tools.development.agent.runtime.Runtime.invoke(Runtime.java:100)
,位于com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse( RPC.java:569)
... 39 more

解决方案

我发现自己的错误!因为事实证明,这个突然失败的原因是因为FORM职位认为这是跨域发布。我通过调用127.0.0.1:8888..etc来测试网站,但是当我的Image RPC被调用来建立上载路径时,它返回到表单setAction,我的机器名称kmoore-PC:8888..etc改为127.0.0.1:8888 ...因此它返回null,因为它认为它是跨域。



要修复,请单击url栏中的Google框并单击添加您的计算机名称,然后使用计算机名称而不是127
测试您的应用程序

I am attempt to use the Blobstore api for appengine using GWT... I promise you! I had it working for months and suddenly I started get the following errors.. arfter executing the following line from a servelet.

public class ImageServiceImpl extends RemoteServiceServlet implements ImageService {

    /**
 * 
 */
private static final long serialVersionUID = 1L;

  // init the blog store service
private BlobstoreService blobService = BlobstoreServiceFactory.getBlobstoreService();
    //private static final Logger log = Logger.getLogger(ImageServiceImpl.class);
    public static final String PATH_TO_DEFAULT_IMAGE = "images/no_photo.jpg";

. . . . . // omitted for brevity }

    @Override
    public String getUpLoadPath() {
        String url = blobService.createUploadUrl("/n5/doimage");
        return url;
    }

}

Initializing App Engine server Sep 19, 2011 7:28:45 PM com.google.apphosting.utils.jetty.JettyLogger info INFO: Logging to JettyLogger(null) via com.google.apphosting.utils.jetty.JettyLogger Sep 19, 2011 7:28:45 PM com.google.apphosting.utils.config.AppEngineWebXmlReader readAppEngineWebXml INFO: Successfully processed C:\development\n5\n5\war\WEB-INF/appengine-web.xml Sep 19, 2011 7:28:45 PM com.google.apphosting.utils.config.AbstractConfigXmlReader readConfigXml INFO: Successfully processed C:\development\n5\n5\war\WEB-INF/web.xml Sep 19, 2011 3:28:47 PM com.google.appengine.tools.development.DevAppServerImpl start INFO: The server is running at http://localhost:8888/ Sep 19, 2011 7:34:59 PM com.google.appengine.tools.development.ApiProxyLocalImpl log SEVERE: javax.servlet.ServletContext log: Exception while dispatching incoming RPC call com.google.gwt.user.server.rpc.UnexpectedException: Service method 'public abstract java.lang.String com.six.n5.client.service.ImageService.getUpLoadPath()' threw an unexpected exception: java.lang.VerifyError: class com.google.appengine.api.blobstore.BlobstoreServicePb$CreateUploadURLRequest overrides final method isInitialized.()Z at com.google.gwt.user.server.rpc.RPC.encodeResponseForFailure(RPC.java:385) at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:588) at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:208) at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:248) at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62) at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:216) at com.google.inject.servlet.ServletDefinition.service(ServletDefinition.java:141) at com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:93) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:63) at com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:122) at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:110) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) at com.google.appengine.tools.development.HeaderVerificationFilter.doFilter(HeaderVerificationFilter.java:35) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:58) 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 com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:122) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) at com.google.appengine.tools.development.BackendServersFilter.doFilter(BackendServersFilter.java:97) 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.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:70) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:351) 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.content(HttpConnection.java:938) at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:755) at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218) at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409) at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582) Caused by: java.lang.VerifyError: class com.google.appengine.api.blobstore.BlobstoreServicePb$CreateUploadURLRequest overrides final method isInitialized.()Z at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(Unknown Source) at java.security.SecureClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.access$100(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at com.google.appengine.tools.development.IsolatedAppClassLoader.loadClass(IsolatedAppClassLoader.java:176) at java.lang.ClassLoader.loadClass(Unknown Source) at com.google.appengine.api.blobstore.BlobstoreServiceImpl.createUploadUrl(BlobstoreServiceImpl.java:43) at com.google.appengine.api.blobstore.BlobstoreServiceImpl.createUploadUrl(BlobstoreServiceImpl.java:34) at com.six.n5.server.ImageServiceImpl.getUpLoadPath(ImageServiceImpl.java:153) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at com.google.appengine.tools.development.agent.runtime.Runtime.invoke(Runtime.java:100) at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:569) ... 39 more

解决方案

I found my own error! as it turn out the reason this was suddenly failing was because the FORM post thought it was cross domain posting. I was testing the web site by calling 127.0.0.1:8888..etc but when the when my Image RPC was called to establish the upload path, it returned to the form setAction the my machine name kmoore-PC:8888..etc instead of the 127.0.0.1:8888... and hence it returned null because it thought it was crossing domains.

To fix, click on the google box in url bar and add your computer name and then test you app using the computer name instead of 127

这篇关于调用createUploadUrl()的GWT Blobstore错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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