我發現originalPayload
與groovy表達式中的message.originalPayload
不同。也就是說,以下變壓器不這樣做同樣的事情:originalPayload不同於groovy腳本中的message.originalPayload
與originalPayload
:
<expression-transformer evaluator="groovy" expression="originalPayload" />
與message.originalPayload
:
<expression-transformer evaluator="groovy" expression="message.originalPayload" />
下騾子的配置和測試案例可以用來重現問題:
<mule ...>
<flow name="test">
<vm:inbound-endpoint name="test.Name" path="test.Path"
exchange-pattern="request-response" />
<expression-transformer evaluator="string" expression="bar" />
<expression-transformer evaluator="groovy" expression="originalPayload" />
<!-- or alternatively -->
<!-- <expression-transformer evaluator="groovy" expression="message.originalPayload" /> -->
</flow>
</mule>
測試情況c一個是:
@Test
public void transformers() throws MuleException {
final MuleClient client = muleContext.getClient();
final MuleMessage reply = client.send("vm://test.Path", 1, null, RECEIVE_TIMEOUT);
assertEquals(1, reply.getPayload());
}
與message.originalPayload
的替代方案按預期工作。與originalPayload
一來不與下面的異常顯示在日誌:
Exception stack is:
1. Expression Evaluator "groovy" with expression "originalPayload" returned null
but a value was required. (org.mule.api.expression.RequiredValue Exception)
什麼可能我是做錯了什麼?
謝謝。
我很難張貼的文件。我在一個受限制的環境中工作。這個項目可以很容易地創建,但是,我發佈了關於原始問題的信息。 – beluchin