消息驱动Bean侦听JMS远程目标(Weblogic)

时间:2014-11-13 21:54:27

标签: ejb

问候,我是Java EE的新手,特别是消息驱动的bean,所以我遵循了一直使用内部JMS目标的教程(例如在本地计算机上运行的weblogic服务器)。现在我正在尝试收听来自远程目的地的新消息(例如,在不同机器上运行的另一个weblogic服务器)。我正在考虑jndi命名查找但是我没有看到在MDB中实现任何合适的位置。我的问题是我需要任何配置文件才能使其正常工作吗?或者甚至可以收听远程JMS目的地?

@MessageDriven(mappedName="jms/myQueue") //jms/myQueue is remote queue name
public class PMQueueListener implements MessageListener{
    @Resource
    private MessageDrivenContext mdc;

    /**
     * Default constructor. 
     */
    public PMQueueListener() {
        System.out.println("This is onmessage()");
    }


    /**
     * @see MessageListener#onMessage(Message)
     */
    public void onMessage(Message message) {
        TextMessage msg = null;
        try 
        { 
            if (message instanceof TextMessage) 
            {
                msg = (TextMessage) message;
                System.out.println("MESSAGE BEAN: Message received: " +
                    msg.getText());
            } 
            else 
            {
                System.out.println("Message of wrong type: " +
                        message.getClass().getName());
            }
        } 
        catch (JMSException e) 
        {
            e.printStackTrace();
            mdc.setRollbackOnly();
        } 
        catch (Throwable te) 
        {
            te.printStackTrace();
        }

    }

}

1 个答案:

答案 0 :(得分:0)

您可以在MDB上添加以下注释,看看它是否适合您。

@TransactionManagement(TransactionManagementType.CONTAINER)
@TransactionAttribute(TransactionAttributeType.REQUIRED)