Tomcat
Tomcat 7 及更高版本的配置问题
Tomcat 需要配置为忽略 Jetty SCI 注解,以防止 Tomcat 不小心拾取 Jetty WebSocket ServerContainerInitializer 类。有关此问题的更多信息,请参见 AMQ-6154 和 https://wiki.apache.org/tomcat/HowTo/FasterStartUp,并查阅您正在使用的 Tomcat 版本的文档以正确排除 Jetty jar 文件被 Tomcat 扫描。
预集成 Tomcat 与 ActiveMQ Classic
Apache TomEE 是 Tomcat 与完全集成的 ActiveMQ Classic 的发行版。此处详细介绍的所有集成步骤都已完成。该堆栈支持注入主题、队列和 ConnectionFactory 引用,以及事务性发送和传递。
以下内容在没有任何配置的情况下开箱即用
import javax.annotation.Resource; import javax.servlet.http.HttpServlet; import javax.jms.Topic; import javax.jms.Queue; import javax.jms.ConnectionFactory;
public class MyServet extends HttpServlet {
@Resource(name = "foo")
private Topic fooTopic;
@Resource(name = "bar")
private Queue barQueue;
@Resource
private ConnectionFactory connectionFactory;
手动集成 Tomcat 和 ActiveMQ Classic
注意,手动将 ActiveMQ Classic 与 Tomcat 集成确实允许注入主题、队列和 ConnectionFactory,但不支持事务性发送和传递。
您应该去 Tomcat 文档阅读 JNDI 资源 HOW-TO,特别是部分:配置 Tomcat 的资源工厂。
ActiveMQ Classic 具有所有管理对象的 JNDI 资源工厂:ConnectionFactory 和目标。
您必须将其作为资源的工厂参数提供
<Context …> …
… </Context>
如果您使用的是 Tomcat 5.5 或更高版本,请尝试以下方法...
此外,不要忘记将 ActiveMQ Classic 和依赖 jar 文件放到 tomcat 共享 lib 目录中。
在 Tomcat 5.5 或更高版本中创建目标
这完全没有测试,但应该有效
使用 Tomcat 时 JMX 提示
如果您想将 JMX 与 Tomcat 一起使用,然后通过 JConsole 连接以查看服务器的 JMX MBean,请设置以下内容
CATALINA_OPTS=”$CATALINA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=1099
-Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false”