【发布时间】:2023-04-07 19:54:01
【问题描述】:
我开发了一个 HTTP servlet,它实现 MessageListener 并使用 javax.jms.ConnectionFactoy 连接到基于 JMS 的 MQ 系统。
连接工厂通过 Resource 注解注入到 servlet。
@Resource(name = "jms/ConnectionFactory")
private ConnectionFactory connectionFactory;
资源在 context.xml 配置文件中定义。
我的经验是,当我使用 Java 11 编译 servlet 时,javax.annotation.Ressource 被简单地忽略了,而我仍然可以直接在上下文中根据其名称查找资源。 但是,当我使用 Java 8 编译它时,资源被注入到 servlet 中的注释字段中。
谁能解释一下?
另外一点是,当从 Java EE 迁移到 Jakarta EE 时,javax 命名空间被 jakarate 取代。大多数 JMS 库仍然使用 javax.jms.* 接口实现,例如 ConnectionFactory、Queue 等。
有没有人体验过兼容性如何,或者是否有必要重新实现 JMS 库?
【问题讨论】:
-
将 Tomcat 9 与 Java 11 一起使用,请参阅 stackoverflow.com/questions/54861840/…
-
备注:虽然该问题专门针对 Tomcat 10 和任何 Java 版本上的
jakarta.annotation.*,但它也适用于javax.annotation.*和 Java 11 或更高版本。
标签: java servlets annotations tomcat8