我正在尝试使用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文件”......但我不知道这意味着什么。
有人可以提供有关我需要做什么才能使其正常工作的分步说明吗?
答案 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作为服务器。