У меня есть два класса REST для простого веб-сервиса (Jersey и GlassFish), который включает в себя пользовательские ресурсы - один для работы со всеми пользователями (например, factory для @POSTing), а другой - для отдельных пользователей (например, @GET, @PUT, @DELETE). Они находятся по адресу:
@Stateless @Path("users") public class AllUsersResource {...}
@Stateless @Path("user") public class OneUserResource {...}
соответственно. Когда POSTing на AllUsersResource, я хочу вернуть местоположение (через Response.created(uri).build()
) нового пользователя, например,
http://localhost:8080/.../user/152
Мой вопрос - как это сделать. AllUsersResource внедряет @Context UriInfo uriInfo, но это не дает мне информацию @Path для OneUserResource, только для текущего вызова ( "пользователи" ). То, как я, наконец, получил это, было просто использовать отражение, но я беспокоюсь, что он хрупкий и нечистый:
OneUserResource.class.getAnnotation(Path.class).value();
Поиск StackOverflow - единственное, что я нашел, чтобы попробовать, было без успеха:
- com.sun.jersey.api.core.ResourceContext
- javax.ws.rs.core.UriInfo.getMatchedResources()
- @javax.inject.Inject OneUserResource oneUserRes;
Любая помощь будет потрясающей!