Java 将消息从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

我试图将消息从Junit测试用例推送到JMS队列,但我不断收到错误:

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;