问候,我是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();
}
}
}
答案 0 :(得分:0)
您可以在MDB上添加以下注释,看看它是否适合您。
@TransactionManagement(TransactionManagementType.CONTAINER)
@TransactionAttribute(TransactionAttributeType.REQUIRED)