ここで主張されているにもかかわらず:
クラス レベルで @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 仕様では、クラスレベルの注釈についてはまったく言及されていないようです
- @Consumes と @Produces は、インターフェイスに適用すると機能します。
- @Path (クラス レベル) は、インターフェイスに適用すると機能しません。
- メソッド レベルの @Path は、リクエストをルーティングするときに受け入れられますが、UriBuilder は失敗しています:
UriBuilder.path(EJBBackedMyEndpoint.class, "getById")
throwsIllegalArgumentException: No Path annotation for 'retrieve' method
。