TomEE

连接性 > 容器 > 资源适配器 > TomEE

Apache TomEE 是一个包含完全集成的 ActiveMQ Classic 的 Tomcat 发行版,它为普通的 war 文件、Servlet 等提供完整的 JMS 支持。无需任何设置,以下代码就可以开箱即用。

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;

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    //...

    Connection connection = connectionFactory.createConnection();
    connection.start();

    // Create a Session
    Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

    // Create a MessageProducer from the Session to the Topic or Queue
    MessageProducer producer = session.createProducer(fooTopic);
    producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);

    // Create a message
    TextMessage message = session.createTextMessage("Hello World!");

    // Tell the producer to send the message
    producer.send(message);

    //...
} }

所有主题和队列都在代码中正确声明后自动创建。例如,以下代码中的引用

@Resource(name = "foo")
private Topic fooTopic;

与以下在/conf/tomee.xml 文件或 WEB-INF/resources.xml 文件中的声明相同

<Resource id="foo" type="javax.jms.Topic" />

在这两种情况下,主题名称都是 ‘foo’。

配置嵌入式代理

如果未配置代理并且 web 应用程序中使用了 JMS,TomEE 将创建一个与以下声明等效的代理

BrokerXmlConfig = broker:(tcp://someHostName:61616) ServerUrl = vm://127.0.0.1 ResourceAdapter = MyJmsResourceAdapter

这将创建一个在 TomEE 内部运行的 ActiveMQ Classic 代理,并绑定到地址 someHostName:61616。此代理将在 TomEE 启动时启动,并在 TomEE 关闭时关闭。TomEE 内部发生的任何 JMS 通信都将通过嵌入式 ActiveMQ Classic 代理使用 ActiveMQ Classic “vm” 传输,该传输针对在与代理相同的 JVM 中发送和接收消息进行了优化。

连接到外部代理

可以连接到外部运行的 ActiveMQ Classic 代理。设置与上述设置类似,只有两个变化。

BrokerXmlConfig = ServerUrl = tcp://someHostName:61616 ResourceAdapter = MyJmsResourceAdapter

这里 BrokerXmlConfig 属性为空,因为我们没有配置要嵌入 TomEE 中运行的代理。 ServerUrl 现在指向一个明确的远程主机和端口 someHostName:61616,ActiveMQ Classic 代理必须在该主机和端口运行。此代理可以是简单的 ActiveMQ Classic 安装,也可以是嵌入在 TomEE 安装中的 ActiveMQ Classic 代理。

Apache、ActiveMQ、Apache ActiveMQ、Apache 羽毛标志和 Apache ActiveMQ 项目标志是 Apache 软件基金会的商标。版权所有 © 2024,Apache 软件基金会。根据 Apache 许可证 2.0 授权。