2015-08-26 19 views
0

我試圖根據存在於地圖,這是使用騾子變壓器XMLMapper和XML地圖..流程看起來像在選擇點後形成的數據來劃分我的流程是:選擇配置在騾子流在Tomcat中

當我在騾子工作室在Windows機上運行
<choice doc:name="Choice"> 
     <when expression="#[message.payload['interfaceId'] == 'BK131108.1655.000698']" > 
      <processor-chain doc:name="AUB Encryption" /> 
      ... 
     </when> 
     ...... 
    </choice> 

相同的流量正常工作。但是,當我部署一個Linux機器我得到的錯誤在Tomcat上的流量(與整個項目)...

DEBUG 2015-08-25 11:46:43,908 [[eig-1.0].BankServiceJMS.stage1.02] com.comviva.mfs.eig.transformers.XmlToMap: The transformed object is of expected type. Type is: HashMap 
ERROR 2015-08-25 11:46:43,914 [[eig-1.0].BankServiceJMS.stage1.02] org.mule.exception.DefaultMessagingExceptionStrategy: Caught exception in Exception Strategy: null 
java.lang.NullPointerException 
    at org.mule.routing.filters.ExpressionFilter.getFullExpression(ExpressionFilter.java:140) 
    at org.mule.routing.filters.ExpressionFilter.accept(ExpressionFilter.java:104) 
    at org.mule.routing.ChoiceRouter.selectProcessors(ChoiceRouter.java:35) 
    at org.mule.routing.AbstractSelectiveRouter.process(AbstractSelectiveRouter.java:194) 
    at org.mule.processor.chain.DefaultMessageProcessorChain.doProcess(DefaultMessageProcessorChain.java:99) 
    at org.mule.processor.chain.AbstractMessageProcessorChain.process(AbstractMessageProcessorChain.java:66) 
    at org.mule.processor.AbstractInterceptingMessageProcessorBase.processNext(AbstractInterceptingMessageProcessorBase.java:105) 
    at org.mule.interceptor.AbstractEnvelopeInterceptor.process(AbstractEnvelopeInterceptor.java:55) 
    at org.mule.processor.AsyncInterceptingMessageProcessor.processNextTimed(AsyncInterceptingMessageProcessor.java:111) 
    at org.mule.processor.AsyncInterceptingMessageProcessor$AsyncMessageProcessorWorker.doRun(AsyncInterceptingMessageProcessor.java:158) 
    at org.mule.work.AbstractMuleEventWork.run(AbstractMuleEventWork.java:43) 
    at org.mule.work.WorkerContext.run(WorkerContext.java:310) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) 
    at java.lang.Thread.run(Thread.java:662) 

任何建議....

+0

@大衛:請檢查.. – Atmaram

+0

看起來像你的負載沒有那個'interfaceId'。你可以嘗試在這個選擇之前使用記錄器,並打印#[message.payload ['interfaceId']]是否工作。 – tortoise

+0

看看是否改變表達式爲「#[message.payload.interfaceId =='BK131108.1655.000698']」修復它。 –

回答

0

Mule的源代碼3.4.1。在第140行,引發異常的是:{(請參閱:https://github.com/mulesoft/mule/blob/mule-3.4.1/core/src/main/java/org/mule/routing/filters/ExpressionFilter.java#L140

因此,我懷疑您沒有正確打包WAR文件,即使用預期版本的Mule。請手動檢查WEB-INF/lib以查看已打包的mule-*.jar,並確保所有版本都一致。

+0

我檢查了一下,我的lib文件夾裏有mule-3.2.1-embedded.jar ..我把它改成了mule-core-3.4.1.jar ..但是接下來我的應用程序根本沒有啓動..然後用mule -common-3.4.1.jar ...同樣的問題...任何其他建議... – Atmaram

+0

兩個建議:1)使用Maven:用手來管理Mule依賴是不可能的。 2)聯繫MuleSoft:他們會讓你訪問他們的Enterprise Maven倉庫,你需要獲得EE版本Mule 3.4.1的JAR。 –