我参与了在OSGI环境(Equinox)中部署的Web应用程序。 WAR部署在Jetty 9 Bundle中。该应用程序是使用Guice作为注入框架的JAX RS 2.0应用程序(Jersey 2)。我使用guice bridge来实现这一目标。
我有一个REST资源,其中省略了WADL注释:
@Context
private Provider<SAXParserFactory> saxFactoryProvider;
@javax.ws.rs.GET
@javax.ws.rs.Produces(javax.ws.rs.core.MediaType.TEXT_PLAIN)
public String get() {
return "Hello REST Guice" + saxFactoryProvider.get();
}
这是一个测试资源,用于检查是否注入了saxFactoryProvider,并且是这种情况,实现是org.glassfish.jersey.jaxb.internal.SecureSaxParserFactory
我的扩展WADL生成器配置如下:
@Override
public List<WadlGeneratorDescription> configure() {
return generator(WadlGeneratorApplicationDoc.class).prop(
"applicationDocsStream", "/application-doc.xml")
.generator(WadlGeneratorGrammarsSupport.class).prop(
"grammarsStream", "/application-grammars.xml")
.generator(WadlGeneratorResourceDocSupport.class).prop( "resourceDocStream", "/resourcedoc.xml")
.descriptions();
}
以下类中存在Null指针异常,因为saxFactoryProvider为null,即使它的注入方式与之前提到的相同:org.glassfish.jersey.server.wadl.internal.generators.WadlGeneratorApplicationDoc.init(WadlGeneratorApplicationDoc.java) :133)
关于原因的任何想法?