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



问候,我是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();
        }
    }
}

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

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