泽西安装在应用程序引擎 [英] Jersey setup on app engine

查看:116
本文介绍了泽西安装在应用程序引擎的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我最近在我的应用程序引擎项目中添加了球衣,在本地机器上一切正常,但当我尝试访问部署的网站上的页面时,我收到了错误。我想我可能会包括一个不受支持的类,但我认为我没有使用任何类。我的大部分代码都是本指南的精确副本,用于设置 jQuery上传



以下是我的代码:

  @GET 
@Path(/ url)
public Response getCallbackUrl(){
/ * this is / _ah / upload and it redirectcts to its given path * /
String url = blobstoreService.createUploadUrl(/ rest / file);
return Response.ok(new FileUrl(url),MediaType.APPLICATION_JSON).build();
}

web.xml:

 < servlet的> 
< servlet-name>球衣< / servlet-name>
< servlet-class> com.sun.jersey.spi.container.servlet.ServletContainer< / servlet-class>
< init-param>
< param-name> com.sun.jersey.config.property.packages< / param-name>
< param-value> com.thedailycaption< / param-value>
< / init-param>
< init-param>
< param-name> com.sun.jersey.api.json.POJOMappingFeature< / param-name>
< param-value> true< /参数值>
< / init-param>
< / servlet>
< servlet-mapping>
< servlet-name>球衣< / servlet-name>
< url-pattern> / rest / *< / url-pattern>
< / servlet-mapping>

这是我得到的错误:

 从servlet未捕获的异常
在com.sun.jersey.spi.container.ContainerRequest中的java.lang.NullPointerException
< init>(ContainerRequest.java: 188)
at com.sun.jersey.spi.container.servlet.WebComponent.createRequest(WebComponent.java:450)
at com.sun.jersey.spi.container.servlet.WebComponent.service( WebComponent.java:380)
at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:538)
at com.sun.jersey.spi.container.servlet。 ServletContainer.service(ServletContainer.java:716)
位于javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
位于org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder。
at org.mortbay.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java:1166)
at com.thedailycaption.Controller.FacebookLogin.doFilter(FacebookLogin.java:165)
at org.mortbay.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java:1157)
at com.google.apphosting.utils.servlet.ParseBlobUploadFilter.doFilter(ParseBlobUploadFilter.java:102)
at org.mortbay.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java:1157)

以下是启动时的错误:

  java.lang.SecurityException:无法获取com.sun类的成员。 jersey.atom.rome.impl.provider.entity.AtomFeedProvider 
at com.google.appengine.runtime.Request.process-51d788e4ae40f0dc(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。康波nent.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)

  com.sun.jersey.core.spi.component.ProviderFactory __getComponentProvider:供应商类,com.sun.jersey.atom类.rome.impl.provider.entity.AtomEntryProvider无法实例化。处理将继续,但该类将不会被利用
java.lang.SecurityException:无法获得com.sun.jersey.atom.rome.impl.provider.entity.AtomEntryProvider
的com成员。 google.appengine.runtime.Request.process-51d788e4ae40f0dc(Request.java)
位于java.lang.Class.getDeclaredMethods(Class.java:253)
位于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)
在com.sun.jer sey.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)

  com.sun.jersey.core.spi.component.ProviderFactory __getComponentProvider:提供程序类com.sun。 jersey.atom.rome.impl.provider.entity.AtomFeedProvider无法实例化。处理将继续,但该类将不会被利用
java.lang.SecurityException:无法获得com.sun.jersey.atom.rome.impl.provider.entity.AtomFeedProvider
的com成员。 google.appengine.runtime.Request.process-51d788e4ae40f0dc(Request.java)
位于java.lang.Class.getDeclaredMethods(Class.java:253)
位于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)
在com.sun.jers ey.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.initWriters(MessageBodyFactory.java:207)
at com.sun.jersey.core.spi.factory.MessageBodyFactory.init(MessageBodyFactory.java:163)
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)

  com.sun.jersey.core.spi.component.ProviderFactory __getComponentProvider:提供程序类com.sun.jersey.atom.rome.impl.provider.entity.AtomEntryProvider无法实例化。处理将继续,但该类将不会被利用
java.lang.SecurityException:无法获得com.sun.jersey.atom.rome.impl.provider.entity.AtomEntryProvider
的com成员。 google.appengine.runtime.Request.process-51d788e4ae40f0dc(Request.java)
位于java.lang.Class.getDeclaredMethods(Class.java:253)
位于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)
在com.sun.jer sey.core.spi.component.ProviderServices.getComponent(ProviderServices.java:256)

p>

 从servlet未捕获的异常
在com.sun.xml.bind.v2中的java.lang.ExceptionInInialialError
。 runtime.reflect.opt.AccessorInjector.prepare(AccessorInjector.java:83)
at com.sun.xml.bind.v2.runtime.reflect.opt.OptimizedAccessorFactory.get(OptimizedAccessorFactory.java:176)
at com.sun.xml.bind.v2.runtime.reflect.Accessor $ FieldReflection.optimize(Accessor.java:282)
at com.sun.xml.bind.v2.runtime.property.ArrayProperty。< ; init>(ArrayProperty.java:69)
at com.sun.xml.bind.v2.runtime.property.ArrayERProperty。< init>(ArrayERProperty.java:88)
at com.sun .xml.bind.v2.runtime.property.ArrayElementProperty。< init>(ArrayElementProperty.java:100)
at com.sun.xml.bind.v2.runtime.property.ArrayElementNodeProperty。< init>( ArrayElementNodeProperty.java:62)
在sun.reflect .NativeConstructorAccessorImpl.newInstance0(本地方法)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
在java.lang.reflect.Constructor.newInstance(Constructor.java:33)


解决方案

您需要添加

 < init-param> 
< param-name> com.sun.jersey.config.feature.DisableWADL< / param-name>
< param-value> true< /参数值>
< / init-param>

到web.xml

这可以防止使用反射的类,这在应用程序引擎中是不允许的。

I recently added jersey to my app engine project, everything works great on my local machine but when I try to access the page on the deployed site I get errors. I think I might be including an unsupported class, but I don't think I'm using any. Most of my code is an exact copy from this guide to setting up jQuery upload

Here is my code:

@GET
@Path("/url")
public Response getCallbackUrl() {
  /* this is /_ah/upload and it redirects to its given path */
  String url = blobstoreService.createUploadUrl("/rest/file");
  return Response.ok(new FileUrl(url), MediaType.APPLICATION_JSON).build();
}

web.xml:

<servlet>
    <servlet-name>jersey</servlet-name>
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>com.sun.jersey.config.property.packages</param-name>
        <param-value>com.thedailycaption</param-value>
    </init-param>
    <init-param>
           <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
         <param-value>true</param-value>
    </init-param>
</servlet>
<servlet-mapping>
    <servlet-name>jersey</servlet-name>
    <url-pattern>/rest/*</url-pattern>
</servlet-mapping>

here is the error I am getting:

Uncaught exception from servlet
java.lang.NullPointerException
    at com.sun.jersey.spi.container.ContainerRequest.<init>(ContainerRequest.java:188)
    at com.sun.jersey.spi.container.servlet.WebComponent.createRequest(WebComponent.java:450)
    at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:380)
    at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:538)
    at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:716)
    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.thedailycaption.Controller.FacebookLogin.doFilter(FacebookLogin.java:165)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    at com.google.apphosting.utils.servlet.ParseBlobUploadFilter.doFilter(ParseBlobUploadFilter.java:102)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)

Here are the errors on startup:

java.lang.SecurityException: Unable to get members for class com.sun.jersey.atom.rome.impl.provider.entity.AtomFeedProvider
at com.google.appengine.runtime.Request.process-51d788e4ae40f0dc(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)

and

    com.sun.jersey.core.spi.component.ProviderFactory __getComponentProvider: The provider class, class com.sun.jersey.atom.rome.impl.provider.entity.AtomEntryProvider, 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.atom.rome.impl.provider.entity.AtomEntryProvider
    at com.google.appengine.runtime.Request.process-51d788e4ae40f0dc(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)

and

    com.sun.jersey.core.spi.component.ProviderFactory __getComponentProvider: The provider class, class com.sun.jersey.atom.rome.impl.provider.entity.AtomFeedProvider, 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.atom.rome.impl.provider.entity.AtomFeedProvider
    at com.google.appengine.runtime.Request.process-51d788e4ae40f0dc(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.initWriters(MessageBodyFactory.java:207)
    at com.sun.jersey.core.spi.factory.MessageBodyFactory.init(MessageBodyFactory.java:163)
    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)

and

com.sun.jersey.core.spi.component.ProviderFactory __getComponentProvider: The provider class, class com.sun.jersey.atom.rome.impl.provider.entity.AtomEntryProvider, 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.atom.rome.impl.provider.entity.AtomEntryProvider
    at com.google.appengine.runtime.Request.process-51d788e4ae40f0dc(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)

and

Uncaught exception from servlet
java.lang.ExceptionInInitializerError
    at com.sun.xml.bind.v2.runtime.reflect.opt.AccessorInjector.prepare(AccessorInjector.java:83)
    at com.sun.xml.bind.v2.runtime.reflect.opt.OptimizedAccessorFactory.get(OptimizedAccessorFactory.java:176)
    at com.sun.xml.bind.v2.runtime.reflect.Accessor$FieldReflection.optimize(Accessor.java:282)
    at com.sun.xml.bind.v2.runtime.property.ArrayProperty.<init>(ArrayProperty.java:69)
    at com.sun.xml.bind.v2.runtime.property.ArrayERProperty.<init>(ArrayERProperty.java:88)
    at com.sun.xml.bind.v2.runtime.property.ArrayElementProperty.<init>(ArrayElementProperty.java:100)
    at com.sun.xml.bind.v2.runtime.property.ArrayElementNodeProperty.<init>(ArrayElementNodeProperty.java:62)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:33)

解决方案

You need to add

<init-param>
    <param-name>com.sun.jersey.config.feature.DisableWADL</param-name>
    <param-value>true</param-value>
</init-param>

to web.xml

This prevents classes that use reflection, which is not allowed on app engine.

这篇关于泽西安装在应用程序引擎的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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