If you have a Spring 2 application using MuleESB in 2.x version, and you initialize the mule using SpringXmlConfigurationBuilder, ie. 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(); }You may notice that this simply doesn't work in Spring 3;)
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.