Mule调用消息处理器

时间:2014-04-08 09:08:33

标签: spring mule

我遇到了“invoke”元素(link),可用于从流内部调用java方法。对我来说这似乎是一个完美的解决方案,因为我不想使用Callable和入口点解析器,我想将额外的参数传递给方法。

<invoke object-ref="yourBean"
        method="yourMethod"
        methodArguments="#[message.inboundProperties['inboundPropertyName']]" />

<set-property propertyName="outboundPropertyName"
              value="#[payload]" />

我做了类似上面代码的事情。我的问题是:我该如何创建“yourBean”? 我试图创建:

<spring:bean name="yourBean" class="class"/>

但得到了:

 org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'yourBean' is defined

我的标签中还定义了其他bean,但其他bean似乎也有效。有没有人有类似的问题?

编辑: 当我删除除“yourBean”之外的其他bean定义时,一切都开始起作用,但当我添加更多bean定义时,当我尝试使用“yourBean”时出现以下错误:

Exception stack is:
1. null (java.lang.NullPointerException)
  org.mule.processor.InvokerMessageProcessor:280 (null)
2. null (java.lang.NullPointerException). Message payload is of type: String (org.mule.api.MessagingException)
  org.mule.execution.ExceptionToMessagingExceptionExecutionInterceptor:35 (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/MessagingException.ht
ml)
--------------------------------------------------------------------------------
Root Exception stack trace:
java.lang.NullPointerException
        at org.mule.processor.InvokerMessageProcessor.transformArgument(InvokerMessageProcessor.java:280)
        at org.mule.processor.InvokerMessageProcessor.evaluateArguments(InvokerMessageProcessor.java:200)
        at org.mule.processor.InvokerMessageProcessor.process(InvokerMessageProcessor.java:164)
    + 3 more (set debug level logging or '-Dmule.verbose.exceptions=true' for everything)
********************************************************************************

对我来说,似乎“yourBean”没有实例化。但为什么呢?

我的bean定义:

<bean id="yourBean" class="com.example.BpmService"/>

    <bean id="StatusUpdateContext" class="javax.xml.bind.JAXBContext" factory-method="newInstance">
        <constructor-arg>
            <array>
                <value type="java.lang.Class">
                    com.example.OrderStatusUpdate
                </value>
            </array>
        </constructor-arg>
</bean>

1 个答案:

答案 0 :(得分:0)

编辑:好的,id / name都可以用于Mule调用。我使用多个bean定义的调用没有问题。这听起来更像是你的bean没有共享的问题,和/或Spring比Mule调用。