package de.codecentric.wundershop;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
import org.apache.log4j.Logger;
import org.mule.api.MuleContext;
import org.mule.api.MuleException;
import org.mule.config.spring.SpringXmlConfigurationBuilder;
import org.mule.context.DefaultMuleContextFactory;
@WebListener
public class MuleStarter implements ServletContextListener {
private Logger logger = Logger.getLogger(MuleStarter.class);
public static MuleContext muleContext;
@Override
public void contextInitialized(ServletContextEvent event) {
DefaultMuleContextFactory muleContextFactory = new DefaultMuleContextFactory();
try {
logger.info("Starting Mule...");
String[] flows = new String[] { "wundershop.xml", "fakeshopsystem.xml" };
SpringXmlConfigurationBuilder configBuilder = new SpringXmlConfigurationBuilder(flows);
muleContext = muleContextFactory.createMuleContext(configBuilder);
muleContext.start();
logger.info("Mule started");
} catch (MuleException e) {
throw new RuntimeException(e);
}
}
@Override
public void contextDestroyed(ServletContextEvent event) {
try {
logger.info("Stopping Mule...");
muleContext.stop();
muleContext.getWorkManager().dispose();
muleContext.dispose();
logger.info("Mule stopped");
} catch (MuleException e) {
throw new RuntimeException(e);
} finally {
muleContext = null;
}
}
}