2013-03-12 162 views
1

我部署在谷歌应用程序引擎我的REST服务,我收到每一次我尝试查询服务下列错误:泽西1.17在谷歌应用程序引擎

com.sun.jersey.core.spi.component.ProviderFactory __getComponentProvider: The provider class, class com.sun.jersey.core.impl.provider.entity.MimeMultipartProvider, could not be instantiated. Processing will continue but the class will not be utilized 
java.lang.SecurityException: Unable to get members for class com.sun.jersey.core.impl.provider.entity.MimeMultipartProvider 
    at com.google.appengine.runtime.Request.process-7d6711107bb7eaaa(Request.java) 
    at java.lang.Class.getDeclaredMethods(Class.java:253) 
    at com.sun.jersey.core.reflection.MethodList.getAllDeclaredMethods(MethodList.java:70) 
    at com.sun.jersey.core.reflection.MethodList.<init>(MethodList.java:64) 
    at com.sun.jersey.core.spi.component.ComponentConstructor.getPostConstructMethods(ComponentConstructor.java:131) 
    at com.sun.jersey.core.spi.component.ComponentConstructor.<init>(ComponentConstructor.java:123) 
    at com.sun.jersey.core.spi.component.ProviderFactory.__getComponentProvider(ProviderFactory.java:165) 
    at com.sun.jersey.core.spi.component.ProviderFactory.getComponentProvider(ProviderFactory.java:137) 
    at com.sun.jersey.core.spi.component.ProviderServices.getComponent(ProviderServices.java:256) 
    at com.sun.jersey.core.spi.component.ProviderServices.getServices(ProviderServices.java:160) 
    at com.sun.jersey.core.spi.factory.MessageBodyFactory.initReaders(MessageBodyFactory.java:176) 
    at com.sun.jersey.core.spi.factory.MessageBodyFactory.init(MessageBodyFactory.java:162) 
    at com.sun.jersey.server.impl.application.WebApplicationImpl._initiate(WebApplicationImpl.java:1310) 
    at com.sun.jersey.server.impl.application.WebApplicationImpl.access$700(WebApplicationImpl.java:168) 
    at com.sun.jersey.server.impl.application.WebApplicationImpl$13.f(WebApplicationImpl.java:774) 
    at com.sun.jersey.server.impl.application.WebApplicationImpl$13.f(WebApplicationImpl.java:770) 
    at com.sun.jersey.spi.inject.Errors.processWithErrors(Errors.java:193) 
    at com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:770) 
    at com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:765) 
    at com.sun.jersey.spi.container.servlet.ServletContainer.initiate(ServletContainer.java:489) 
    at com.sun.jersey.spi.container.servlet.ServletContainer$InternalWebComponent.initiate(ServletContainer.java:319) 
    at com.sun.jersey.spi.container.servlet.WebComponent.load(WebComponent.java:605) 
    at com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:210) 
    at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:374) 
    at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:557) 
    at javax.servlet.GenericServlet.init(GenericServlet.java:212) 
    at org.mortbay.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:440) 
    at org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java:263) 
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) 
    at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:685) 
    at org.mortbay.jetty.servlet.Context.startContext(Context.java:140) 
    at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250) 
    at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517) 
    at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:467) 
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) 
    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 java.lang.Thread.run(Thread.java:679) 
Caused by: java.lang.reflect.InvocationTargetException 
    at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:616) 
    ... 41 more 
Caused by: java.lang.NoClassDefFoundError: javax/mail/MessagingException 
    at java.lang.Class.getDeclaredMethods0(Native Method) 
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2444) 
    ... 41 more 
Caused by: java.lang.ClassNotFoundException: javax.mail.MessagingException 
    at com.google.appengine.runtime.Request.process-7d6711107bb7eaaa(Request.java) 
    ... 41 more 

此服务不使用或发送任何邮件。只有一件事是从一些POJO编写JSON响应。它当然适用于本地(在本地GAE和本地Tomcat上)。

回答

1

这可能是版本的兼容性问题。根据this,与Google App Engine兼容的Jersey版本是1.5和1.1.5。

我有类似的问题,我不喜欢这个版本的兼容性问题,所以我选择了:

  • 从GAE提供REST Web服务,使用Google Cloud Endpoints,这仍然是一个实验性的技术,但作为就我所尝试的那样,它工作得很好。此外,它与GAE和Google Plugin for Eclipse很好地结合在一起。

  • 为了从GAE中获取REST服务,我选择了仅使用Java内置HTTP客户端库,如here所解释的。我不知道这是否是最好的方法,但它非常简单,并且避免了GAE和泽西岛等外部API之间可能出现的兼容性问题。

+0

很多,我会检查它。 – TOUDIdel 2013-03-13 20:31:50

+0

你好!我认为在GAE开发中使用尽可能多的Google API和工具是一个好主意......例如Gson for JSON,OAuth的google-oauth-java-client等等...... – MikO 2013-03-13 20:38:58

+0

我宁愿搜索云它会在哪里工作。我现在测试CloudBees,看起来很有效。 – TOUDIdel 2013-03-15 19:17:51