Проверил, что это необязательно в Resteasy. Написал так, потому что у аннотаций типа @GET, @Path нет мета-аннотации @Inherited, т. е. по логике они не наследуются. Как к этому отнесутся другие реализации — не знаю. Resteasy ищет и в интерфейсе тоже.
Бин создается при инжекции его в другой бин или при обращении к нему через сервлет Resteasy. Наличие JAX-RS аннотаций не является необходимым. Например, могут присутствовать аннотации JAX-WS.
Как правило в реальных задачах этой проблемы не возникает: аннотируется класс-реализация, интерфейс для нее не экстрагируется, но создается независимый.
В методах этого класса и методах интерфейса для прокси могут быть разные сигнатуры: метод реализации возвращает javax.ws.rs.core.Response, а интерфейса InputStream или String
Только если они успели допилить. API деплоя изменилось от 7.1.RC (такое же, как в 7.0 ветке) к 7.1.Final, это поломало совместимость в идее (11.0 не работает без скачанной руками сборки plugin'а — см. IDEA-81489, в 11.1 EAP уже всё норм).
Всегда остается workaround: использовать jboss-maven-plugin. Так в idea спасались, когда не было поддержки AS 7 вообще.
В Java это проблема частично решается Joda Time.
В jdk7 так и не вошло улучшение JSR-310 от Стефена Коулборна (автора joda time).
Остается надеяться, что оно войдет в java se 8.
Ещё дополнение. Современные AppServer'а обычно сами строятся на OSGi платформе. В JBoss AS 7 оно тоже доступно, но работает независимо от JBoss Modules, используемого для деплоя и разрешения зависимостей WAR/EJB-JAR/EAR/etc
Да, JBoss Modules напоминает OSGi уровень, отвечающий за загрузку, но ориентированы на разное применение.
Modules — легковесная прослойка для загрузки классов, не занимающаяся, например, разделением видимости публичного API и имплементации.
То есть, если Modules указать в зависимостях определенный jar, то все его классы будут доступны для classloader'а. В OSGi окружении будут доступны только классы, указанные в Export-Package в манифесте.
Естественно, OSGi R4 затрагивает и другие уровни (lifecycle, services), что ортогонально применимости JBoss Modules.
В SE вошло JAXP (включая StAX), вот и ошибся =)
@GET,@Pathнет мета-аннотации@Inherited, т. е. по логике они не наследуются. Как к этому отнесутся другие реализации — не знаю. Resteasy ищет и в интерфейсе тоже.Бин создается при инжекции его в другой бин или при обращении к нему через сервлет Resteasy. Наличие JAX-RS аннотаций не является необходимым. Например, могут присутствовать аннотации JAX-WS.
Как правило в реальных задачах этой проблемы не возникает: аннотируется класс-реализация, интерфейс для нее не экстрагируется, но создается независимый.
В методах этого класса и методах интерфейса для прокси могут быть разные сигнатуры: метод реализации возвращает
javax.ws.rs.core.Response, а интерфейсаInputStreamилиStringВсегда остается workaround: использовать jboss-maven-plugin. Так в idea спасались, когда не было поддержки AS 7 вообще.
В jdk7 так и не вошло улучшение JSR-310 от Стефена Коулборна (автора joda time).
Остается надеяться, что оно войдет в java se 8.
Modules — легковесная прослойка для загрузки классов, не занимающаяся, например, разделением видимости публичного API и имплементации.
То есть, если Modules указать в зависимостях определенный jar, то все его классы будут доступны для classloader'а. В OSGi окружении будут доступны только классы, указанные в Export-Package в манифесте.
Естественно, OSGi R4 затрагивает и другие уровни (lifecycle, services), что ортогонально применимости JBoss Modules.