У меня есть два класса REST для простого веб-сервиса (Jersey и GlassFish), который включает пользовательские ресурсы - один для работы со всеми пользователями (например, фабрика для @POSTing), а другой для отдельных пользователей (например, @GET, @ PUT, @DELETE). Они находятся по адресу:
@Stateless @Path("users") public class AllUsersResource {...}
@Stateless @Path("user") public class OneUserResource {...}
соответственно. При размещении сообщения в AllUsersResource я хочу вернуть местоположение (через 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;
Любая помощь будет потрясающей!