Я читал, что из java EE6 web.xml не является обязательным. Итак, без web.xml, как я могу сказать серверу приложений использовать Джерси как реализацию спецификации JAX-RS?Как использовать Джерси как реализацию JAX-RS без web.xml?
ответ
What @AlexNevidomsky wrote в своем ответе является правильным, насколько, как реализовать конфигурацию приложения без каких-либо web.xml; вы используете аннотацию @ApplicationPath
на подклассе Application
.
@ApplicationPath("/api")
public class AppConfig extends Application {}
Для получения дополнительной информации о параметрах развертывания см JAX-RS spec -> 2.3 Publication -> 2.3.2 Servlet
Так как это реализовано ...
Первые вещи первых, не все серверы Java EE с помощью Джерси. На самом деле единственные, кого я знаю, которые используют Джерси, - это Glassfish и WebLogic. JBoss использует Resteasy. Том ЭЭ использует CXF. WebSphere использует Apache Wink. Это единственные, о которых я могу думать.
Так что, я думаю, вопрос: «Как Сервер знает, как загрузить приложение JAX-RS?»
В Servlet 3.0 представлен механизм вместимости, в котором используется ServletContainerInitializer
. Как это работает, когда при запуске контейнера Server/Servlet он сканирует банки для папки META-INF/services
с файлом с именем javax.servlet.ServletContainerInitializer
. Этот файл должен содержать одно или несколько полных имен реализаций ServletContainerInitializer
.
Этот интерфейс имеет только один метод
void onStartup(java.util.Set<java.lang.Class<?>> c, ServletContext ctx)
Set<Class<?>
будет список классов, подгонки критериев в @HandlesTypes
аннотации на ServletContainerInitializer
реализации. Если вы посмотрите на реализацию Джерси
@HandlesTypes({ Path.class, Provider.class, Application.class, ApplicationPath.class })
public final class JerseyServletContainerInitializer
implements ServletContainerInitializer {
Вы должны заметить некоторые знакомые классы аннотаций, а также Application.class
. Все эти классы, соответствующие критериям при сканировании, добавляются к Set
, переданным методу onStartup
.
Если вы сканируете остальную часть исходного кода, вы увидите, что вся регистрация выполняется со всеми этими классами.
Resteasy использует
@HandlesTypes({Application.class, Path.class, Provider.class})
public class ResteasyServletInitializer implements ServletContainerInitializer
Я не буду вдаваться в другие.
Некоторые источники, на которые вы можете посмотреть ...
В web.xml необязательно оговаривать. Определить класс активатора:
@ApplicationPath("/rest")
public class _JaxRsActivator extends javax.ws.rs.core.Application {
static {
//Check some system init on REST init.
Config.initCheck();
}
}
Но как сервер знать, чтобы использовать Джерси? – DesirePRG
Если вас интересуют технические подробности, обратите внимание, что вы определяете там путь. Итак, при первом запросе этого префикса пути происходит инициализация: контейнер сервлета вызывает ResteasyDeployment.start(). По крайней мере, это то, что делает JBoss. –
- 1. Настройка Джерси без web.xml
- 2. Как настроить Джерси JSPTemplatePath без использования web.xml
- 3. CxF jaxrs эквивалент Джерси @NameBinding
- 4. Spring Security с Apache CXF jaxrs без использования web.xml
- 5. авторизация джерси используя web.xml
- 6. Как заставить Google Guice работать с JaxRS (Джерси)
- 7. Как зарегистрировать слушателя без web.xml
- 8. Джерси 2,21 web.xml NoSuchMethod Ошибка
- 9. Настроить Джерси MVC, чтобы служить Просмотр без web.xml
- 10. Рестайлинг (или не Джерси - реализация JAXRS) на WebLogic12c, возможно?
- 11. Расширение Restlet + JAXRS - как использовать фильтры?
- 12. ArrayIndexOutOfBoundsException развертывание в GlassFish 4.1.1 без web.xml Джерси
- 13. 404 ошибка в сервисе JAXRS с использованием джерси и tomcat
- 14. Как использовать CXF, JAXRS и HTTP Caching
- 15. Игнорирование web.xml ошибок страницы с Джерси ExceptionMapper
- 16. Джерси 2,1 Конфигурация JsonMoxy в web.xml
- 17. Как легко использовать Джексон для Джерси
- 18. Как использовать мою реализацию интерфейса без создания зависимости от реализации?
- 19. web.xml для сервлетов джерси не работает
- 20. Джерси web.xml файл <init-param>
- 21. Джерси + интеграция с весной и web.xml
- 22. Как использовать Джерси в рестле для скачивания?
- 23. Как использовать Джерси в Слинг?
- 24. Как использовать @XmlVariableNode в Джерси?
- 25. Как использовать supportNullCreation() в Джерси?
- 26. Jersey 2 + Spring 4 без web.xml/applicationContext.xml
- 27. Jaxrs - как читать xml?
- 28. Как Tomcat точно загружает приложение без web.xml?
- 29. Как использовать «Просмотр» в «Джерси-каркасе»?
- 30. Многостраничные формы не работают с Джерси и JaxRs
Итак, могу ли я удалить web.xml в проекте на Джерси? – BAE
@BAE обязательно ...... –