Как получить JAX-RS @Path другого ресурса во время POST?

У меня есть два класса REST для простой веб-службы (Jersey и GlassFish), в которой задействованы ресурсы пользователя - один для работы со всеми пользователями (например, фабрика для @POSTing), а другой для отдельных пользователей (например, @GET, @PUT, @DELETE). Они находятся по адресу:

@Stateless @Path("users") public class AllUsersResource {...}
@Stateless @Path("user") public class OneUserResource {...}

соответственно. При POSTing к AllUsersResource я хочу вернуть Location (через Response.created(uri).build()) нового пользователя, например,

http://localhost:8080/.../user/152

Мой вопрос в том, как это сделать. AllUsersResource инжектирует @Context UriInfo uriInfo, но это не дает мне @Path информации для OneUserResource, только для текущего вызова ("users"). Способ, которым я наконец-то заставил его работать, заключался в использовании отражения, но я беспокоюсь, что это хрупко и нечисто:

OneUserResource.class.getAnnotation(Path.class).value();

Поискав на StackOverflow, я нашел только следующие вещи, которые можно попробовать, но безуспешно:

  • com. sun.jersey.api.core.ResourceContext
  • javax.ws.rs.core.UriInfo.getMatchedResources()
  • @javax.inject.Inject OneUserResource oneUserRes;

Любая помощь была бы потрясающей!

14
задан Matthew Cornell 27 February 2012 в 13:55
поделиться