Аннотации ресурсов в сервлетах работают только с Java 8, а не с Java 11 на сервере Tomcat 8

0

Вопрос

Я разработал сервлет HTTP, который реализует MessageListener и подключается к системе MQ на основе JMS с помощью javax.jms.ConnectionFactoy.

Фабрика соединений вводится в сервлет с помощью аннотации ресурса.

@Resource(name = "jms/ConnectionFactory")
private ConnectionFactory connectionFactory;

Ресурс определяется в context.xml файл конфигурации.

Что я испытал, так это то, что при компиляции сервлета с использованием Java 11, аннотации javax.Ресурс просто игнорируется, в то время как я все еще могу искать ресурс на основе его имени непосредственно в контексте. Но когда я компилирую его с помощью Java 8, ресурс вводится в аннотированное поле сервлета.

Кто-нибудь может это объяснить?

Другой момент заключается в том, что пространство имен javax заменяется пространством имен jakarate при переходе с Java EE на Jakarta EE. Большая часть библиотеки JMS по-прежнему реализована с использованием интерфейсов javax.jms.*, таких как ConnectionFactory, очередь и т. Д.

Есть ли у кого-нибудь опыт в том, как выглядит совместимость, или необходима повторная реализация библиотек JMS?

annotations java servlets tomcat8
2021-11-23 12:23:33
1

Лучший ответ

0

tl;dr

Для развертывания Java 11 используйте Tomcat 10.1.x, именование пакетов Jakarta EE, API сервлета 6 и API обмена сообщениями Jakarta 3.1.

Более ранние версии также могут работать на Java 11, но эти версии созданы специально для Java 11 в качестве минимального требования.

Эта комбинация, скорее всего, будет работать как на Java 17, так и на Java 11. Java 17-это последняя версия долгосрочной поддержки (LTS). Хотя поддержка официально не требуется в Jakarta EE, различные команды, похоже, стремятся к тому, чтобы их последние версии хорошо работали на Java 17.

Используйте Tomcat версии 10.1 для Java 11

Согласно версиям Apache Tomcat, версия 10.1 Tomcat поддерживает Java 11, в то время как версии 9 и 10.0 нацелены на Java 8.

Имя пакета

Вам нужно будет изменить свой import заявления от javax.*посылка в jakarta.*. Это изменение в именовании пакетов связано с переходом от Oracle к Eclipse Foundation в качестве распорядителей технологии Jakarta EE (ранее Java EE).

API сервлета

Переключитесь на соответствующую версию API сервлета, версия 6. См.страницу Спецификации сервлета.

API обмена сообщениями

Обратите внимание, что JMS стала системой обмена сообщениями в Джакарте. Вам нужно будет скорректировать свой import инструкции и номер версии соответственно. См.страницу спецификации.

Аналогичным образом обновите свою реализацию обмена сообщениями в Джакарте.

2021-11-23 17:47:04

Версии Tomcat поддерживают "любой стабильный выпуск Java, соответствующий требованиям ". Это означает, что оператор может безопасно использовать Tomcat 9 с Java 11 до тех пор, пока его любимые реализации JMS не переключатся на JMS 3.0.
Piotr P. Karwasz

На других языках

Эта страница на других языках

Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................