Ответ 1
Программный API для создания ресурсов
Класс Resource
- это то, что вы ищете. Просто имейте в виду специфический API в Джерси.
Согласно документации, класс Resource
является основной точкой входа в API моделирования программных ресурсов, который обеспечивает возможность программно расширять существующие классы ресурсов аннотированных JAX-RS или создавать новые модели ресурсов, которые могут использоваться во время выполнения Джерси.
Посмотрите пример, представленный в документации:
@Path("hello")
public class HelloResource {
@GET
@Produces("text/plain")
public String sayHello() {
return "Hello!";
}
}
// Register the annotated resource.
ResourceConfig resourceConfig = new ResourceConfig(HelloResource.class);
// Add new "hello2" resource using the annotated resource class
// and overriding the resource path.
Resource.Builder resourceBuilder =
Resource.builder(HelloResource.class, new LinkedList<ResourceModelIssue>())
.path("hello2");
// Add a new (virtual) sub-resource method to the "hello2" resource.
resourceBuilder.addChildResource("world")
.addMethod("GET")
.produces("text/plain")
.handledBy(new Inflector<Request, String>() {
@Override
public String apply(Request request) {
return "Hello World!";
}
});
// Register the new programmatic resource in the application configuration.
resourceConfig.registerResources(resourceBuilder.build());
В следующей таблице показаны поддерживаемые запросы и предоставлены ответы для приложения, настроенного в приведенном выше примере:
Request | Response | Method invoked
-----------------------+------------------+----------------------------
GET /hello | "Hello!" | HelloResource.sayHello()
GET /hello2 | "Hello!" | HelloResource.sayHello()
GET /hello2/world | "Hello World!" | Inflector.apply()
Дополнительные сведения см. в документации Jersey.