You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by Alistair Young <Al...@uhi.ac.uk> on 2011/07/04 14:18:54 UTC

CamelSpringTestSupport::createApplicationContext hangs

hello camel list,

when testing a camel-config.xml the following never returns from ctx.refresh:

public class SampleTest extends CamelSpringTestSupport {
..
protected AbstractXmlApplicationContext createApplicationContext() {
    configFiles = new String[] {Paths.path("camel-context.xml")};
    servletContext = new MockServletContext(Paths.path("servlet.context.home"));
    FileSystemXmlApplicationContext ctx = new FileSystemXmlApplicationContext();
    ctx.setConfigLocations(configFiles);
    ctx.refresh();
}

the file paths are all correct but ctx.refresh() never returns. Am I doing something wrong?

thanks,

Alistair



------------------------------------
Alistair Young
Senior Software Engineer
UHI@Sabhal Mòr Ostaig





Re: CamelSpringTestSupport::createApplicationContext hangs

Posted by Alistair Young <al...@uhi.ac.uk>.
Hi Willem,

here's the camel-config.xml and a snippet from the test case.

this is where it hangs if a broker is already running using the same camel config:
ctx.refresh();

in other tests, if I start an ActiveMQ broker programmatically it throws an error if a broker is already running but camel just hangs if the broker is already running.

No doubt I'm doing something wrong as I'm fairly new to camel

public class GroupwiseTest extends CamelSpringTestSupport {
  private static FileSystemXmlApplicationContext ctx = null;

  protected AbstractXmlApplicationContext createApplicationContext() {
    configFiles = new String[] {Paths.path("camel-context.xml")};
    ctx = new FileSystemXmlApplicationContext();
    ctx.setConfigLocations(configFiles);
    ctx.refresh();
    return ctx;
  }
}



<beans xmlns="http://www.springframework.org/schema/beans"
			 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
			 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
													 http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd
													 http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
					
  <broker xmlns="http://activemq.apache.org/schema/core"
					id="matrixBrokerID"
					brokerName="matrixBroker"
					useJmx="true"
					persistent="true"
					dataDirectory="/tmp/data">

    <messageAuthorizationPolicy>
      <bean class="uk.ac.uhi.it.matrix.security.MessageGuard" xmlns="http://www.springframework.org/schema/beans"/>
    </messageAuthorizationPolicy>

    <transportConnectors>
      <transportConnector uri="tcp://localhost:61616" />
      <transportConnector name="stomp" uri="stomp://localhost:61613"/>
    </transportConnectors>
  </broker>

  <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
    <route>
      <from uri="file:/tmp/matrix?consumer.delay=1000"/>
      <convertBodyTo type="java.lang.String"/>
      <process ref="createDomainMessageProcessor" />
      <to uri="activemq:topic:matrix"/>
    </route>

    <route>
      <from uri="activemq:topic:matrix"/>
			<transacted />
			<to uri="activemq:topic:edirectory"/>
    </route>

    <route>
      <from uri="activemq:topic:edirectoryprocessed"/>
			<transacted />
      <process ref="groupwiseProcessor" />
			<to uri="activemq:topic:blackboard"/>
    </route>
  </camelContext>

	<bean id="jmsConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory" depends-on="matrixBrokerID">
		<property name="brokerURL" value="vm://matrixBroker?create=false"/>
	</bean>

	<bean id="jmsTransactionManager" class="org.springframework.jms.connection.JmsTransactionManager">
		<property name="connectionFactory" ref="jmsConnectionFactory"/>
	</bean>

	<bean id="activemq" class="org.apache.activemq.camel.component.ActiveMQComponent">
		<property name="connectionFactory" ref="jmsConnectionFactory"/>
		<property name="transacted" value="true"/>
		<property name="transactionManager" ref="jmsTransactionManager"/>
	</bean>

  <bean id="createDomainMessageProcessor" class="uk.ac.uhi.it.matrix.processing.domain.DomainGateway" scope="prototype">
    <property name="mode" value="create"/>
  </bean>

  <bean id="groupwiseProcessor" class="uk.ac.uhi.it.matrix.processing.GroupwiseProcessor" scope="prototype">
    <property name="csvDir" value="/tmp/test/out"/>
    <property name="holdingDir" value="/tmp/test/in"/>
  </bean>

</beans>




--------------
mov eax,1
mov ebx,0
int 80

On 5 Jul 2011, at 02:38, Willem Jiang wrote:

> On Mon Jul  4 20:38:48 2011, Alistair Young wrote:
>> found the prob - there was an activemq/camel instance already running. An error would have been nice...
> 
> Can I have a quick look at your spring configuration?
> It could be helpful to find a way to warn the user if you can show us a small test case.
> 
> -- 
> Willem
> ----------------------------------
> FuseSource
> Web: http://www.fusesource.com
> Blog:    http://willemjiang.blogspot.com (English)
>        http://jnn.javaeye.com (Chinese)
> Twitter: willemjiang Weibo: willemjiang 


Re: CamelSpringTestSupport::createApplicationContext hangs

Posted by Willem Jiang <wi...@gmail.com>.
On Mon Jul  4 20:38:48 2011, Alistair Young wrote:
> found the prob - there was an activemq/camel instance already running. An error would have been nice...

Can I have a quick look at your spring configuration?
It could be helpful to find a way to warn the user if you can show us a 
small test case.

-- 
Willem
----------------------------------
FuseSource
Web: http://www.fusesource.com
Blog:    http://willemjiang.blogspot.com (English)
         http://jnn.javaeye.com (Chinese)
Twitter: willemjiang 
Weibo: willemjiang 


Re: CamelSpringTestSupport::createApplicationContext hangs

Posted by Alistair Young <al...@uhi.ac.uk>.
found the prob - there was an activemq/camel instance already running. An error would have been nice...

-- 
mov eax,1
mov ebx,0
int 80h




On 4 Jul 2011, at 13:18, Alistair Young wrote:

> hello camel list,
> 
> when testing a camel-config.xml the following never returns from ctx.refresh:
> 
> public class SampleTest extends CamelSpringTestSupport {
> ..
> protected AbstractXmlApplicationContext createApplicationContext() {
>    configFiles = new String[] {Paths.path("camel-context.xml")};
>    servletContext = new MockServletContext(Paths.path("servlet.context.home"));
>    FileSystemXmlApplicationContext ctx = new FileSystemXmlApplicationContext();
>    ctx.setConfigLocations(configFiles);
>    ctx.refresh();
> }
> 
> the file paths are all correct but ctx.refresh() never returns. Am I doing something wrong?
> 
> thanks,
> 
> Alistair
> 
> 
> 
> ------------------------------------
> Alistair Young
> Senior Software Engineer
> UHI@Sabhal Mòr Ostaig
> 
> 
> 
>