JMSAppender与MuleStudio

时间:2014-06-05 13:54:20

标签: log4j activemq mule-studio

我正在尝试使用ActiveMQ在MuleStudio 3.5.0中进行概念验证,该版本需要使用JMSAppender for Log4j。

我已将以下内容添加到我的log4j.xml文件中:

<appender name="jms" class="org.apache.log4j.net.JMSAppender">
  <param name="InitialContextFactoryName" value="org.apache.activemq.jndi.ActiveMQInitialContextFactory" />
  <param name="ProviderURL" value="tcp://localhost:61616" />
  <param name="TopicBindingName" value="logTopic" />
  <param name="TopicConnectionFactoryBindingName" value="ConnectionFactory" />
</appender>

<root>
  <appender-ref ref="jms"/>
</root>

我已将以下内容添加到我的pom中:

<dependency>
  <groupId>org.apache.activemq</groupId>
  <artifactId>activemq-core</artifactId>
  <version>5.7.0</version>
</dependency>

但是,当我构建并运行它时,我在启动时遇到以下ClassNotFound异常:

log4j: Class name: [org.apache.log4j.net.JMSAppender]
log4j: Setting property [initialContextFactoryName] to [org.apache.activemq.jndi.ActiveMQInitialContextFactory].
log4j: Setting property [providerURL] to [tcp://localhost:61616].
log4j: Setting property [topicBindingName] to [logTopic].
log4j: Setting property [topicConnectionFactoryBindingName] to [ConnectionFactory].
log4j: Getting initial context.
log4j:ERROR Error while activating options for appender named [jms].
  javax.naming.NoInitialContextException: Cannot instantiate class:  org.apache.activemq.jndi.ActiveMQInitialContextFactory [Root exception is java.lang.ClassNotFoundException: org.apache.activemq.jndi.ActiveMQInitialContextFactory]
  at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:674)
  at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:307)

我不知道从哪里开始。一些搜索点击说“你需要一个jndi.properties文件”......但我不知道这意味着什么。

有人可以提供有关我需要做什么才能使其正常工作的分步说明吗?

1 个答案:

答案 0 :(得分:0)

解决方案是将activemq-core库添加到MuleStudio使用的Mule Server的mule / boot目录,例如:C:\ MuleStudio \ plugins \ org.mule.tooling.server.3.4.1.ee_3。 4.1.201312062152 \ mule \ boot

我的案例中的问题是,虽然关于框显示版本3.5.0的MuleStudio,但点击mule-project.xml显示工作室实际上使用3.4.1作为服务器。