次のような一連の JAX-RS ロケーターとサブロケーターがあるとします。
@Path("/users")
public class UserListResource {
@Path("/{id}")
public UserResource getCustomer(@PathParam("id") int id) {
// Find and return user object
}
}
public class UserResource {
@GET
public String get() {...}
}
たとえばUserResource
、 ID5
を持つオブジェクトのパスは になります"/users/5"
。私のシステムには、いくつかの異なるリソースがあります。
問題は、サーバーが特定のリソースのパスをどのように把握できるかということです。JAX-RS API を介してプログラムでこれを行うことはできますか? それとも、リフレクションを使用するコードを実装する必要がありますか? (後者の方法は知っていますが、他のアプローチを好むでしょう。)
- パスを知る必要がある時点で、リクエスト オブジェクトがまったくありません。たとえば、いくつかのバックグラウンド処理を行うタイマーがあり、ドメイン モデル内のいくつかのエンティティを変更し、変更されたエンティティ (パスを含む) についてすべてのクライアントに通知します。
- リクエストのスコープ内で、
UriInfo
これを提供するオブジェクトを注入できることはわかっていますが、事前にパスを知る必要があります (必ずしも JAX-RS リソースを介して発生したとは限らない変更をクライアントに通知するため)。 - パス情報を別の場所で繰り返したくありません。また、各リソース タイプ (この場合は
"/users"
と"/{id}"
) の一連のパス フラグメント定数も必要ありません。