尽管声明了here:
因为在类级别缺少@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>
resources.xml中
<resources>
<Service id="exceptionMapper" class-name="package.MyExceptionMapper"/>
</resources>
beans.xml只显示空根元素
更新
UriBuilder.path(EJBBackedMyEndpoint.class, "getById")
抛出IllegalArgumentException: No Path annotation for 'retrieve' method
。 答案 0 :(得分:2)
这篇博文可能会产生误导。 JAX-RS不支持在接口上放置@Path
,@GET
,@PathParam
或其他JAX-RS注释。根据规范,所有这些都需要在“资源类”上,这是这种情况下的@Stateless
bean类。
如果将@Path
从接口移到bean类,它应该可以工作。至少它应该更进一步。