我是Spring Jms的新手,我研究了如何使用spring和jboss来创建队列并使用它们。我想知道在使用JndiObjectFactoryBean spring配置配置时如何创建队列。
我们是否需要编写一些用于创建队列的xml配置?我已经看到了在文件中编写队列配置并放置在jboss的deploy文件夹中的各种示例。所以在使用Spring时我们是否需要编写这些配置?
请帮助我,我被困住了。
谢谢。
答案 0 :(得分:1)
当您使用通过JNDI访问的JMS代理时,您只需要确保Spring能够将表示javax.jms.Destination
的String解析为实际的目标。
Spring使用DestinationResolver
做到了这一点。由于您已将Spring配置为连接到JMS代理,因此必须在某处(通过使用jndi.properties
或其他形式)进行JNDI配置。如果情况并非如此,您可以轻松地创建JndiTemplate
一旦你有了这个,你需要定义一个bean,如下所示,假设JndiTemplate
bean可用,名称为jndiTemplate
:
@Bean
public JndiDestinationResolver destinationResolver() {
JndiDestinationResolver destinationResolver = new JndiDestinationResolver();
destinationResolver.setJndiTemplate(jndiTemplate());
return destinationResolver;
}
或
<bean id="destinationResolver"
class="org.springframework.jms.support.destination.JndiDestinationResolver">
<property name="jndiTemplate" ref="jndiTemplate"/>
</bean>
然后,您需要配置此destinationResolver而不是默认值。您可以在JmsTemplate
和消息侦听器容器上执行此操作(检查destinationResolver
或destination-resolver
属性)。
您的队列或主题的名称是jndi条目。 Chekc您在JBoss中使用的JNDI名称,用于从基于Spring的代码中查找它。
答案 1 :(得分:0)
当你使用某个JEE容器时,如果你依赖它的选项会更好:JDBC,JMS等。在你的情况下,你应该使用JBOSS配置配置Queue
和ConnectionFactory
。 / p>
从Spring应用程序中,您只需要从JNDI获取对这些对象的引用。对于@Resource
或任何@Configuration
服务,似乎@Component
似乎已足够。
以下是一些答案如何配置Spring以便在注释配置的情况下处理JNDI:Spring @Resource Handling