If you have a Spring 2 application using MuleESB in 2.x version, and you initialize the mule using SpringXmlConfigurationBuilder
, you may notice that this simply doesn’t work in Spring 3 ;)
I mean something like this:
public void startMule() throws MuleException {
SpringXmlConfigurationBuilder builder =
new SpringXmlConfigurationBuilder(muleConfigResources,applicationContext);
MuleContextFactory muleContextFactory = new DefaultMuleContextFactory();
muleContext = muleContextFactory.createMuleContext(builder);
runtimeConfig(muleContext);
muleContext.start();
}
After a lot of struggling I’ve discovered that this is because the DefaultBeanDefinitionDocumentReader interface in spring has been changed from:
protected BeanDefinitionParserDelegate createHelper(XmlReaderContext readerContext,
Element root) {}
to:
protected BeanDefinitionParserDelegate createHelper(XmlReaderContext readerContext,
Element root, BeanDefinitionParserDelegate parentDelegate) {}
I don’t want to migrate my whole application MuleESB 3.x, what seems to have Spring 3 compatible classes, so some fixes to existing mule initialization were required here. For those interested in the same, here is the solution:
public void startMule() throws MuleException {
Spring3XmlConfigurationBuilder builder =
new Spring3XmlConfigurationBuilder(muleConfigResources,applicationContext);
MuleContextFactory muleContextFactory = new DefaultMuleContextFactory();
muleContext = muleContextFactory.createMuleContext(builder);
runtimeConfig(muleContext);
muleContext.start();
}
For this you actually need to use my classes fixing this issue - they are available to download here.
this is a copy from my old blogspot blog