尽管这里声称:
对于由于在类级别缺少 @Path 而无法工作的应用程序 -> 现在应该可以工作
我仍然需要注释我的端点实现,因为没有拾取接口上的注释。
它与我配置 JAX-RS 的方式有关,还是 TomEE 中仍然存在错误?
界面:
@Path("myPath") public interface MyEndpoint {
@Path("{id}") String getById(@PathParam("id") long id);
}
执行:
@Stateless class EJBBackedMyEndpoint implements MyEndpoint {
String getById(long id) { return "foo"; }
}
openejb-jar.xml
<openejb-jar xmlns="http://www.openejb.org/openejb-jar/1.1">
<ejb-deployment ejb-name="EJBBackedMyEndpoint">
<properties>cxf.jaxrs.providers = exceptionMapper</properties>
</ejb-deployment>
</openejb-jar>
资源.xml
<resources>
<Service id="exceptionMapper" class-name="package.MyExceptionMapper"/>
</resources>
beans.xml 只有空的根元素
更新:
- JAX-RS Spec 显然根本没有提到类级别的注释
- @Consumes 和 @Produces 在应用于界面时起作用,
- @Path(类级别)在接口上应用时不起作用,
- 路由请求时,方法级别的 @Path 受到尊重,但是 UriBuilder 失败:
UriBuilder.path(EJBBackedMyEndpoint.class, "getById")
throwsIllegalArgumentException: No Path annotation for 'retrieve' method
。