我遇到了“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>
答案 0 :(得分:0)
编辑:好的,id / name都可以用于Mule调用。我使用多个bean定义的调用没有问题。这听起来更像是你的bean没有共享的问题,和/或Spring比Mule调用。