如何在没有激活规范或侦听器端口的情况下将消息驱动Bean连接到WebSphere MQ队列

时间:2016-03-24 17:51:11

标签: deployment ejb websphere-8 message-driven-bean

我的消息驱动bean:

XSpi_Transfer(&Spi, SendData, ResData, 1);

位于网络应用程序

@MessageDriven(
    activationConfig = { @ActivationConfigProperty(
            propertyName = "destination",     propertyValue = "jms/mytestqueue"), @ActivationConfigProperty(
            propertyName = "destinationType", propertyValue = "javax.jms.Queue")
    })
public class MessageQueueInputBean implements MessageListener {
    @Override
    public void onMessage(Message msg) {

我的目标是将MDB连接到MQ队列和MQ连接工厂。然而,在这个星座中我只得到了可怕的消息

  

MDB的REQUIRED_BINDING_NOT_FOUND

在WebSphere 8.5.5上部署它时。

因此我创建了文件<?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <display-name>Test WebApp</display-name> ,这导致部署成功:

ibm-ejb-jar-bnd.xml

显然,此配置仅允许<?xml version="1.0" encoding="UTF-8"?> <ejb-jar-bnd xmlns="http://websphere.ibm.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-ejb-jar-bnd_1_0.xsd" version="1.0"> <message-driven name="MessageQueueGuidewireBatchInputBean"> <jca-adapter activation-spec-binding-name="jms/myTestActivationSpecification" /> </message-driven> </ejb-jar-bnd> ,它指的是&#34;激活规范&#34;在WAS或侦听器端口。

我的问题是据我所知,在目标系统中(由来自不同公司的人员维护)没有激活规范。而是有一个队列和一个连接工厂。

是否可以仅参考队列和连接工厂部署MDB?

1 个答案:

答案 0 :(得分:1)

没有。您不只是连接到端点。您还要连接到一个线程池,其线程将用于分派您的MDB(具有所有正常的服务质量和API可用)。这就是您需要激活规范或侦听器端口的额外构造的原因。