Spring发送消息给JBoss的消息驱动Bean有问题,请指教。
各位,大家好。
小弟遇到一些困难,请大家指教。
我想用Spring提供的JmsTemplate发送一个文本消息(Topic方式),给Jboss上的一组消息驱动bean。
Spring我是这样配置的。
测试代码如下
测试这个case的话,会出现如下异常。小弟不明原因,还请各位指教。
指出我的目标并不是一个JBoss的Destination,我不清楚这个具体是什么意思。
我直接使用JMS的API,发送消息给MessageDrivenBean是没有问题的。 所以我推断并不是JBOSS的配置有什么问题。
分数不多,200分送上。
小弟遇到一些困难,请大家指教。
我想用Spring提供的JmsTemplate发送一个文本消息(Topic方式),给Jboss上的一组消息驱动bean。
Spring我是这样配置的。
<!-- 这个是要放送的Destination,是用JNDI方式查找到的 -->
<bean id="defaultTopic" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="topic/A" />
<property name="lookupOnStartup" value="true" />
<property name="proxyInterfaces">
<list>
<value>javax.jms.Topic</value>
</list>
</property>
</bean>
<!-- 这个是ConnectionFactory的实例,也是通过JNDI查找到的 -->
<bean id="connectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="ConnectionFactory" />
<property name="lookupOnStartup" value="true" />
<property name="proxyInterfaces">
<list>
<value>javax.jms.ConnectionFactory</value>
</list>
</property>
</bean>
<!-- 这个就是JmsTemplate啦 -->
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="connectionFactory" />
<property name="defaultDestination" ref="defaultTopic" />
</bean>
测试代码如下
@ContextConfiguration("classpath*:spring*.xml")
public class TestCases extends AbstractJUnit4SpringContextTests {
@Resource
private JmsTemplate jmsTemplate;
@Test
public void case0() {
jmsTemplate.send(new MessageCreator() {
public Message createMessage(Session session) throws JMSException {
TextMessage textMessage = session.createTextMessage();
textMessage.setText("......");
return textMessage;
}
});
}
}
测试这个case的话,会出现如下异常。小弟不明原因,还请各位指教。
org.springframework.jms.InvalidDestinationException: Not a JBossDestination:JBossTopic[TestTopicA]; nested exception is javax.jms.InvalidDestinationException: Not a JBossDestination:JBossTopic[TestTopicA]
at org.springframework.jms.support.JmsUtils.convertJmsAccessException(JmsUtils.java:285)
at org.springframework.jms.support.JmsAccessor.convertJmsAccessException(JmsAccessor.java:168)
at org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:469)
at org.springframework.jms.core.JmsTemplate.send(JmsTemplate.java:534)
at org.springframework.jms.core.JmsTemplate.send(JmsTemplate.java:526)
at test.TestCases.case0(TestCases.java:23)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:74)
at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:82)
at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:72)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:231)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:174)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:49)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: javax.jms.InvalidDestinationException: Not a JBossDestination:JBossTopic[TestTopicA]
at org.jboss.jms.client.JBossSession.createProducer(JBossSession.java:206)
at org.springframework.jms.core.JmsTemplate.doCreateProducer(JmsTemplate.java:971)
at org.springframework.jms.core.JmsTemplate.createProducer(JmsTemplate.java:952)
at org.springframework.jms.core.JmsTemplate.doSend(JmsTemplate.java:563)
at org.springframework.jms.core.JmsTemplate$3.doInJms(JmsTemplate.java:536)
at org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:466)
... 31 more
指出我的目标并不是一个JBoss的Destination,我不清楚这个具体是什么意思。
我直接使用JMS的API,发送消息给MessageDrivenBean是没有问题的。 所以我推断并不是JBOSS的配置有什么问题。
分数不多,200分送上。
...全文
相关推荐
JBoss+Ejb
博文链接:https://yanghaiskys.iteye.com/blog/223301
EJB入门:无状态、有状态与消息驱动Bean实战解析
在Java企业级开发中,理解容器托管的事务管理与并发控制是进阶的关键。EJB作为企业级JavaBean规范,将事务边界、安全校验等基础设施下沉至应用服务器,让业务代码更简洁可靠。围绕无状态会话Bean、有状态会话Bean与消息驱动Bean三种核心类型,对比各自的生命周期与适用场景:无状态Bean适合高并发幂等操作,有状态Bean需关注序列化与钝化,消息驱动Bean则通过JMS队列实现异步削峰填谷。在WildFly等主流应用服务器上,通过JNDI名称查找代理对象,即可完成远程调用与部署。无论是维护金融、政务等
28、深入探讨事务管理:JTA与Spring应用实践
本文深入探讨了事务管理在企业应用开发中的重要性,重点介绍了JTA(Java Transaction API)与Spring框架在事务管理中的应用实践。通过一个示例Web应用,展示了如何在数据库和消息队列之间使用JTA事务,确保跨多个事务资源操作的一致性和健壮性。同时,对比了JTA事务与本地事务的适用场景、性能和配置复杂度,并提出了事务管理的最佳实践。文章还通过具体的测试用例验证了事务管理的正确性,为开发者提供了全面的事务管理解决方案。
IBM MQ与JBOSS整合,通过SPRING来读写消息
NULL 博文链接:https://xnbhnly.iteye.com/blog/1256331
spring-jboss整合
spring和jboss整合,全部是英文的,自己好好看吧


