user1071076
user1071076

Reputation: 167

MuleXmlBuilderContextListener

I have a small problem but cannot find an answer anywhere - when deploying mule app (war) into tomcat with mule jars I see this message:

SEVERE: Exception sending context initialized event to listener instance of class org.mule.config.builders.MuleXmlBuilderContextListener
java.lang.ClassCastException: Notification class must be of type: org.mule.api.context.notification.ServerNotification. Offending class is: org.mule.context.notification.MuleContextNotification
    at org.mule.lifecycle.NotificationLifecycleObject.(NotificationLifecycleObject.java:49)
    at org.mule.lifecycle.phases.MuleContextStopPhase.(MuleContextStopPhase.java:66)
    at org.mule.lifecycle.phases.MuleContextStopPhase.(MuleContextStopPhase.java:56)
    at org.mule.lifecycle.RegistryBrokerLifecycleManager.registerPhases(RegistryBrokerLifecycleManager.java:43)
    at org.mule.lifecycle.RegistryLifecycleManager.(RegistryLifecycleManager.java:57)
    at org.mule.lifecycle.RegistryBrokerLifecycleManager.(RegistryBrokerLifecycleManager.java:33)
    at org.mule.registry.AbstractRegistryBroker.(AbstractRegistryBroker.java:37)
    at org.mule.registry.DefaultRegistryBroker.(DefaultRegistryBroker.java:27)
    at org.mule.DefaultMuleContext.createRegistryBroker(DefaultMuleContext.java:176)
    at org.mule.DefaultMuleContext.(DefaultMuleContext.java:167)
    at org.mule.context.DefaultMuleContextBuilder.buildMuleContext(DefaultMuleContextBuilder.java:97)
    at org.mule.context.DefaultMuleContextFactory.buildMuleContext(DefaultMuleContextFactory.java:215)
    at org.mule.context.DefaultMuleContextFactory.doCreateMuleContext(DefaultMuleContextFactory.java:201)
    at org.mule.context.DefaultMuleContextFactory.createMuleContext(DefaultMuleContextFactory.java:100)
    at org.mule.config.builders.MuleXmlBuilderContextListener.createMuleContext(MuleXmlBuilderContextListener.java:169)
    at org.mule.config.builders.MuleXmlBuilderContextListener.initialize(MuleXmlBuilderContextListener.java:98)
    at org.mule.config.builders.MuleXmlBuilderContextListener.contextInitialized(MuleXmlBuilderContextListener.java:74)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4779)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5273)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:895)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:871)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:615)
    at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:962)
    at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1603)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:662)
2013-08-11 23:11:43 org.apache.catalina.core.ApplicationContext log

This sucks because org.mule.context.notification.MuleContextNotification is extending the org.mule.api.context.notification.ServerNotification. What am I missing here?

my web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    version="2.5">

    <context-param>
        <param-name>org.mule.config</param-name>
        <param-value>mule-config.xml</param-value>
    </context-param>

    <listener>
        <listener-class>org.mule.config.builders.MuleXmlBuilderContextListener</listener-class>
    </listener>

    <servlet>
        <servlet-name>muleServlet</servlet-name>
        <servlet-class>org.mule.transport.servlet.MuleReceiverServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>muleServlet</servlet-name>
        <url-pattern>/services/*</url-pattern>
    </servlet-mapping>

</web-app>     

Upvotes: 1

Views: 2028

Answers (1)

user1071076
user1071076

Reputation: 167

OK I found the solution:

1 - First of all it is good to have in the WEB-INF\classes logging.properties file:

org.apache.catalina.core.ContainerBase.[Catalina].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].handlers = java.util.logging.ConsoleHandler

This way all proper errors will be displayed on console, most likely there will be and ClassNotFoundException.

2 - Import needed lib into your app via maven dependency (for me I had to use the provided scope because jar was already in tomcat lib directory) - in my case it was mule-module-tomcat-3.4.0.jar

In the end my pom.xml for the project looked like that:

...
<properties>
  <spring.version>3.2.3.RELEASE</spring.version>
  <mule.version>3.4.0</mule.version>
</properties>

<dependencies>
  <dependency>
      <groupId>org.mule</groupId>
      <artifactId>mule-core</artifactId>
      <version>${mule.version}</version>
      <scope>provided</scope>
  </dependency>

  <dependency> 
      <groupId>org.mule.modules</groupId> 
      <artifactId>mule-module-spring-config</artifactId>
      <version>${mule.version}</version> 
      <scope>provided</scope>
  </dependency>

  <dependency>
      <groupId>org.mule.modules</groupId>
      <artifactId>mule-module-tomcat</artifactId>
      <version>${mule.version}</version>
      <scope>provided</scope>
  </dependency>

  <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>${spring.version}</version>
      <scope>provided</scope>
  </dependency> 
</dependencies>

Problem solved :D

Upvotes: 1

Related Questions