@Context
ResourceContext rc;
@Path("reports")
public ReportsResource reportsResource() {
return rc.initResource(new ReportsResource());
}
报表子资源
@Inject
ReportsService rs;
@GET
@Path("{rptno}")
@Produces(MediaType.APPLICATION_XML)
public Report report(@PathParam("rptno") int rptNumber) throws Exception {
return rs.getReport(rptNumber);
}
我使用Java EE7和Glassfish和WAS Liberty配置文件的经验是,没有注入ReportService rs实例,使rs为空并导致NPE。
我的假设是,因为resource类正在执行“new ReportsResource()”,所以CDI对ReportsResource实例没有可见性,因此ReportsResource不是容器管理的。这似乎与这个问题相同,当通过ResourceContext获得子资源时,将EJB注入JAX-RS2.0子资源
@Inject
ReportsSerivce rs;
@Context
ResourceContext rc;
@Path("reports")
public ReportsResource reportsResource() {
return rc.initResource(new ReportsResource(rs));
}
public class ReportsResource {
private ReportsSerivce rs;
public ReportsResource(ReportsSerivce rs) {
this.rs = rs;
}
@Context
HttpHeaders headers;
@GET
@Path("{rptno}")
@Produces(MediaType.APPLICATION_XML)
public Report report(@PathParam("rptno") int rptNumber) throws Exception {
return rs.getReport(rptNumber);
}
如果希望将CDI bean注入JAX-RS资源,我不建议使用rc.initresource。它所做的只是将字段注入到现有对象中,但它使用JAX-RS特定的机制,类似于当CDI不可用时JavaEE5中EJB的注入工作方式。
最好使用CDI并从代码中删除resourceContext
。
示例:
@Inject
private ReportsResource reportsResource;
@Path("reports")
public ReportsResource reportsResource() {
return reportsResource;
}
@Inject
private Instance<ReportsResource> reportsResources;
@Path("reports")
public ReportsResource reportsResource() {
return reportsResources.get();
}
service.java: sqlDataProvider.java: 如果在Glassfish服务器中部署此servlet并执行请求,将引发以下异常: 亲切地问候帕斯卡
问题内容: 我一直在尝试使用NetBeans Ide创建一个简单的Restful WebService。 我的Java EE版本是:Java EE 7 Web。 我创建了一个新的Java Web应用程序,设置此ContexPath: 。 现在,运行我的应用程序,浏览器在以下位置显示我的页面: 因此,一切正常。 然后,我尝试使用RESTful Web服务向导创建一个简单的Restful资源。 因此,
我正在尝试构建一个RESTful web服务。该组件是对已包含多个servlet的现有Tomcat7Web应用程序的添加。我用的是泽西2.25。 我需要实例化一些与现有系统相关的组件(对象)。我希望在应用程序加载时这样做一次,然后从每个资源中读取它们。 和资源: 我不明白为什么我会得到这个例外: ServletException:一个MultiException有3个异常。他们是:1。org.gl
我正在泽西岛应用程序中使用 CDI。在根资源上,CDI 注入按预期工作,但每当我返回子资源时,CDI 注入源都不可用。 具有子资源定位器的根资源: 子资源: 错误: 我正在使用和Weld依赖项,在Undertow上运行,并将Weld servlet侦听器添加到部署中。 同样,对根资源的相同注入确实有效。< code>@Named("name ")字符串由< code>@ApplicationSco
问题内容: REST资源版本控制的最佳做法是将版本信息放入HTTP请求的Accept / Content-Type标头中,而URI保持不变。 这是对REST API的示例请求/响应,用于检索系统信息: 请注意,版本是在MIME类型中指定的。 这是版本2的另一个请求/响应: 有关更多说明和示例,请参见http://barelyenough.org/blog/tag/rest- versioning/
我试图将资源的实例注入具有Singleton作用域的JAX-RS应用程序,但当我这样做时,我得到: 警告:在服务器运行时中注册的提供程序com.test.jersey.app.MyResource未实现任何适用于服务器运行时的提供程序接口。由于约束配置问题,将忽略提供程序com.test.jersey.app.MyResource。 我有一个如下的应用程序,它需要一个已经运行的MyResource