JAX-RS Jersey / Grizzly Определите ресурс интерфейса - PullRequest
1 голос
/ 18 июля 2011

По примеру здесь При развертывании примера ресурса с использованием контейнера Grizzly.Он использует ресурс, который определен как класс, вместо этого я хотел бы определить интерфейс с аннотациями и иметь класс ресурса, реализующий этот интерфейс.

Проблема теперь в том, что Grizzly жалуется, что не может найти ресурс:

com.sun.jersey.api.container.ContainerException: The ResourceConfig instance does not     contain any root resource classes.

В классе Main, где com.mycompany.pack - это пакет, содержащий класс реализации.:

final String baseUri = "http://localhost:9999/";
final Map<String, String> initParams = new HashMap<String, String>();
initParams.put("com.sun.jersey.config.property.packages", "com.mycompany.pack");

[Редактировать]: Однако работает и при добавлении аннотаций в класс.Если есть способ объявить аннотации только на уровне интерфейса.

1 Ответ

1 голос
/ 18 июля 2011

Вы не можете сделать это со сканированием пакетов, потому что он ищет только классы с аннотациями JAX-RS на них.Вам придется использовать другой подход: либо один из параметров конфигурации , упомянутый в руководстве пользователя Джерси, который позволяет вам явно объявить ваши классы ресурсов, либо вы также можете использовать jersey-spring управлять вашими экземплярами.С jersey-spring нет никаких дополнительных шагов, чтобы можно было использовать интерфейс, какой вы хотите.Вы просто аннотируете интерфейс, делаете реализацию Spring-бином, и он работает.

...