Recurso de anotaciones en Servlets son sólo trabajando con Java 8, no con Java 11 en un Tomcat server 8

0

Pregunta

He desarrollado un servlet HTTP que implementa MessageListener y se conecta a una JMS basado en MQ sistema utilizando javax.jms.ConnectionFactoy.

La conexión de la fábrica se inyecta al servlet a través de un Recurso de anotación.

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

El recurso se define en el context.xml archivo de configuración.

Lo que he experimentado es que al compilar el servlet en Java 11, el javax.la anotación.Ressource es simplemente ignorado, mientras que todavía puedo buscar el recurso en base a su nombre en el contexto directamente. Pero, cuando me compilar usando Java 8, el recurso se inyecta a la anotada campo en el servlet.

Alguien puede explicar esto?

Otro punto es que la javax espacio de nombres se sustituye por el jakarate uno, al migrar de Java EE en Jakarta, EE. La mayoría de los JMS biblioteca todavía están implementadas usando el javax.jms.* interfaces, como ConnectionFactory, Cola, etc.

¿Alguien tiene experiencia de cómo la compatibilidad se parece o es una reimplementación de JMS libs necesario?

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

Mejor respuesta

0

tl;dr

Para Java 11 de implementación, uso de Tomcat 10.1.x, Yakarta EE paquete de nomenclatura, Servlet 6 de la API, y Yakarta Mensajería 3.1 de la API.

Las versiones anteriores se pueden ejecutar en Java 11 demasiado, pero estas versiones están fabricados específicamente para Java 11 como mínimo.

Esta combinación es probable que funcione en Java 17 así como Java 11. Java 17 es la última Apoyo a Largo Plazo (LTS) versión. Mientras que el apoyo no requiere oficialmente en Yakarta, EE, los diferentes equipos que parecen ser el objetivo de sus últimas versiones para que funcione bien en Java 17.

El uso de Tomcat Versión 10.1 para Java 11

De acuerdo con Apache Tomcat Versiones, la Versión 10.1 de Tomcat soporta Java 11, mientras que las versiones 9 y 10.0 están dirigidas a Java 8.

Nombre del paquete

Usted tendrá que cambiar su import las declaraciones de javax.*paquete jakarta.*. Este cambio en la denominación de los paquetes es debido a la transición de Oracle a la Eclipse Foundation como los guardianes de Yakarta EE tecnología (anteriormente Java EE).

Servlet API

Cambiar a la versión apropiada del Servlet API, versión 6. Consulte la página de especificaciones Servlet.

La API de mensajería

Tenga en cuenta que JMS se ha convertido en Yakarta Mensajería. Tendrás que ajustar su import las declaraciones y el número de versión en consecuencia. Consulte la página de especificaciones.

Asimismo, la actualización de su Yakarta aplicación de Mensajería.

2021-11-23 17:47:04

Tomcat versiones "estables Java versión que cumple con los requisitos ". Esto significa que el OP puede utilizar de forma segura Tomcat 9 con Java 11 hasta su favorito JMS implementaciones cambia a JMS 3.0.
Piotr P. Karwasz

En otros idiomas

Esta página está en otros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Slovenský
..................................................................................................................