<configuration xmlns="urn:hornetq"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:hornetq /schema/hornetq-jms.xsd">
<queue name="searchtabQueue">
<entry name="/queue/searchtabQueue"/>
</queue>
</configuration>
在一个无状态bean中,我正在查找队列,这是正确的,并且发送没有抛出异常:
Context ctx = new InitialContext(p); // Create the initial context
ConnectionFactory factory = (ConnectionFactory) ctx.lookup("ConnectionFactory");
Queue queue = (Queue) ctx.lookup("queue/searchtabQueue");
Connection connect = factory.createConnection();
javax.jms.Session session = connect.createSession(false, 0);
MessageProducer sender = session.createProducer(queue);
TextMessage msg = session.createTextMessage();
msg.setText("abc");
sender.send(msg);
connect.close();
但不调用消息驱动bean的onMessage方法。
我错过了什么?
我的消息驱动bean有以下代码:
@MessageDriven(activationConfig = {
@ActivationConfigProperty(propertyName = "destinationType",
propertyValue = "javax.jms.Queue"),
@ActivationConfigProperty(propertyName = "destination",
propertyValue = "queue/searchtabQueue"),
@ActivationConfigProperty(propertyName = "acknowledgeMode",
propertyValue = "Auto-acknowledge")
})
public class SearchTableBean implements MessageListener {
public void onMessage (Message message) {
}
}
现在它正在工作,我改变了一个看法的东西。
查找代码:
Context ctx = new InitialContext(p); // Create the initial context
Queue queue = (Queue) ctx.lookup("java:jboss/exported/jms/queue/searchtab");
QueueConnectionFactory factory = (QueueConnectionFactory)
ctx.lookup("ConnectionFactory");
QueueConnection connect = factory.createQueueConnection();
javax.jms.QueueSession session = connect.createQueueSession(false,
QueueSession.AUTO_ACKNOWLEDGE);
TextMessage msg = session.createTextMessage("Hello World");
QueueSender sender = session.createSender(queue);
sender.send(msg);
connect.close();
队列创建xml文件:
<configuration xmlns="urn:hornetq"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:hornetq /schema/hornetq-jms.xsd">
<queue name="searchtabQueue">
<entry name="queue/searchtab"/>
<entry name="java:jboss/exported/jms/queue/searchtab"/>
</queue>
</configuration>
@MessageDriven(activationConfig = {
@ActivationConfigProperty(propertyName = "destinationType",
propertyValue = "javax.jms.Queue"),
@ActivationConfigProperty(propertyName = "destination",
propertyValue = "queue/searchtab"),
@ActivationConfigProperty(propertyName = "acknowledgeMode",
propertyValue = "Auto-acknowledge")
})
public class SearchTableBean implements MessageListener {
public void onMessage (Message message) {
System.out.println("abc");
}
我对JMS编码是新手。我试图从独立的java客户端创建消息,该客户端创建并将消息发送到队列,消息驱动bean用于进一步处理消息。 我使用的是Glassfish应用服务器(3.1)。并设置从独立java客户机创建消息的所有内容。 下面是我的代码:客户端 消息驱动bean: 问题是:没有被调用。我错过什么了吗?请帮帮我.
是否可以在MDB(消息驱动Bean)中为“目的地”动态分配运行时值? 我还尝试了ejb-jar.xml方法,但是“activation-config-property-name”=“destination”的值被理解为队列的文字物理名称。因此我无法对资源进行JNDI查找。 从属性读取和分配目标或使用-d参数传递值的正确方法是什么?
在企业应用程序中,我试图使用netBeans 8.1将MessageDriven beans注入Web应用程序(到REST服务)。我在IDE中没有得到任何警告,但是,在部署时,我得到以下错误: 严重:加载应用程序时出现异常:CDI部署失败:Weld-001408:未满足类型StatisticsBean的依赖关系,其限定符@Default在注入点[BackedAnnotatedField]@Inje
消息驱动Bean是一种企业bean,当EJB容器从队列或主题接收消息时由EJB容器调用。 消息驱动的bean是一个无状态bean,用于异步执行任务。 为了演示消息驱动bean的使用,我们将使用EJB-persistence章节,我们需要执行以下任务 - Step 1 - 在数据库中创建表(请参阅EJB-Persistence章节)。 Step 2 - 创建与表对应的实体类(请参阅EJB-Persi
早上好在我的时区。 事先表示感谢并致以最良好的问候
同事, 你能帮我解决以下问题吗? 我有JavaEE应用程序。它包含一些具有业务逻辑的消息驱动Bean和一些负责整个应用程序配置的不同方面的管理Bean。我想设置bean启动和初始化的顺序。这意味着在管理Bean完成应用程序的初始化之前,容器不应该调用消息驱动Bean。应用程序的初始化包括读取和解析一些配置文件,这需要一些时间。 有WebSphere配置选项吗? 或者它应该只以编程方式完成技巧?