我一直在使用Spring 3.1和Spring-Jersey 1.x,Jackson 2.x和Hibernate.我想升级到Spring-Jersey 2.6.
我根据Jersey用户指南和示例应用程序包含了所有相关的依赖项.我有一种感觉,我的问题可能与我使用Jackson和JAXB注释的POJO有关,但我似乎无法弄清楚如何前进.杰克逊以前解析JAX-B注释似乎没有任何问题,所以我不知道如何修改我的配置.
我的应用程序看起来像:
public class MyApplication extends ResourceConfig {
public MyApplication(){
packages(true,"com.my.app");
register(JacksonContextResolver.class); //Custom Context Resolver
register(JacksonFeature.class);
}
}
Run Code Online (Sandbox Code Playgroud)
在启动时我收到此错误:
MultiException stack 1 of 3
java.lang.NullPointerException
at com.sun.jersey.core.provider.jaxb.AbstractJAXBProvider.setConfiguration(AbstractJAXBProvider.java:109)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.glassfish.hk2.utilities.reflection.ReflectionHelper.invoke(ReflectionHelper.java:1017)
at org.jvnet.hk2.internal.ClazzCreator.methodMe(ClazzCreator.java:375)
at org.jvnet.hk2.internal.ClazzCreator.create(ClazzCreator.java:428)
at org.jvnet.hk2.internal.SystemDescriptor.create(SystemDescriptor.java:456)
at org.jvnet.hk2.internal.PerLookupContext.findOrCreate(PerLookupContext.java:69)
at org.jvnet.hk2.internal.Utilities.createService(Utilities.java:2445)
at org.jvnet.hk2.internal.ServiceHandleImpl.getService(ServiceHandleImpl.java:98)
at org.jvnet.hk2.internal.ServiceHandleImpl.getService(ServiceHandleImpl.java:87)
at org.glassfish.jersey.internal.inject.ProviderToService.apply(ProviderToService.java:58)
at org.glassfish.jersey.internal.inject.ProviderToService.apply(ProviderToService.java:54)
at jersey.repackaged.com.google.common.collect.Iterators$8.transform(Iterators.java:860)
at jersey.repackaged.com.google.common.collect.TransformedIterator.next(TransformedIterator.java:48)
at java.util.AbstractCollection.addAll(AbstractCollection.java:333)
at java.util.LinkedHashSet.<init>(LinkedHashSet.java:169)
at jersey.repackaged.com.google.common.collect.Sets.newLinkedHashSet(Sets.java:292)
at org.glassfish.jersey.internal.inject.Providers.getClasses(Providers.java:364)
at org.glassfish.jersey.internal.inject.Providers.getProviders(Providers.java:186)
at org.glassfish.jersey.message.internal.MessageBodyFactory.<init>(MessageBodyFactory.java:304)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) …Run Code Online (Sandbox Code Playgroud) 我正在尝试获取在Tomcat中部署的Jersey资源的servlet上下文,但每当我尝试这个时,我得到一个空指针异常.我的代码如下:
@Path("/resource")
public class MyResource {
@Context ServletContext context;
public MyResource(){
System.out.println("Context: "+context.getRealPath("/"));
}
}
Run Code Online (Sandbox Code Playgroud)
我的web.xml配置如下:
<servlet>
<servlet-name>MyResource</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.mypackage</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>MyResource</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)
任何线索我的问题可能是什么?使用Tomcat 6.0.33和Jersey 1.12.