2015-08-26 5 views
0

Я пытаюсь разделить поток по данным, представленным на Карте, который формируется после использования Mule Transformer XMLMapper и XML для Map .. Поток выглядит так, как в точке выбора:Конфигурация выбора в Mule Flow в tomcat

<choice doc:name="Choice"> 
     <when expression="#[message.payload['interfaceId'] == 'BK131108.1655.000698']" > 
      <processor-chain doc:name="AUB Encryption" /> 
      ... 
     </when> 
     ...... 
    </choice> 

же поток отлично работает, когда я запускаю его на Mule студии на Windows, машине .. Но когда я развернуть поток (с всем проектом) на кот на Linux машине я получаю сообщение об ошибке ...

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

@David: Пожалуйста, проверьте .. – 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, который вам нужен, чтобы получить JAR версии EE Mule 3.4.1. –

Смежные вопросы