Java 将消息从Junit推送到JMS队列
我试图将消息从Junit测试用例推送到JMS队列,但我不断收到错误:Java 将消息从Junit推送到JMS队列,java,jboss,jms,jndi,Java,Jboss,Jms,Jndi,我试图将消息从Junit测试用例推送到JMS队列,但我不断收到错误: javax.naming.NameNotFoundException: Name [ConnectionFactory] not bound 以下是测试用例代码: public void testPushMessagesIntoQueue() { JmsTemplate jmsTemplate = (JmsTemplate) getBean("batchMessageTemplate"); //ERROR HERE
javax.naming.NameNotFoundException: Name [ConnectionFactory] not bound
以下是测试用例代码:
public void testPushMessagesIntoQueue() {
JmsTemplate jmsTemplate = (JmsTemplate) getBean("batchMessageTemplate"); //ERROR HERE
assertNotNull(jmsTemplate);
try {
jmsTemplate.convertAndSend("batchQueue", messageList);
} catch(Exception ex ) {
ex.printStackTrace();
}
}
public ApplicationContext getContext() {
return new FileSystemXmlApplicationContext("/src/main/webapp/WEB-INF/service-context.xml");
}
public Object getBean(String beanName) {
return getContext().getBean(beanName);
}
以下是service-context.xml文件中的连接工厂bean:
<bean name="jmsConnectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiTemplate" ref="jndiTemplate"/>
<property name="jndiName" value="ConnectionFactory" />
</bean>
我的BatchMessageTemplatebean:
<bean name="batchMessageTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="jmsConnectionFactory" />
<property name="defaultDestination" ref="batchDestination" />
<property name="receiveTimeout" value="1" />
</bean>
这个问题只有在我运行Junit测试用例时才会发生。我们已经定义了一个在Jboss中运行的servlet来向队列中添加消息,它工作正常
我是JMS的新手,因此任何帮助都将不胜感激
public CustomJndiTemplate() throws JobException {
Properties environment = new Properties();
environment.setProperty("java.naming.factory.initial","org.jnp.interfaces.NamingContextFactory");
environment.setProperty("java.naming.provider.url", "jnp://localhost:1099");
environment.setProperty("java.naming.factory.url.pkgs", "org.jboss.naming:org.jnp.interfaces");
setEnvironment(environment);
}
<bean name="batchMessageTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="jmsConnectionFactory" />
<property name="defaultDestination" ref="batchDestination" />
<property name="receiveTimeout" value="1" />
</bean>
<mbean code="org.jboss.mq.server.jmx.Queue"
name="jboss.mq.destination:service=Queue,name=batchQueue">
<depends optional-attribute-name="DestinationManager">jboss.mq:service=DestinationManager</depends>
Error creating bean with name 'jmsConnectionFactory' defined in file [service-context.xml]: Invocation of init method failed; nested exception is javax.naming.NameNotFoundException: Name [ConnectionFactory] not bound;