Mule — поток выполнен успешно, только в первый раз, но не после этого. Почему/решение?

Я новичок в Муле.

Я написал java-код (CreateObject) для создания некоторого объекта на сервере. Я передаю Mule несколько параметров из HTML-формы на стороне клиента, таких как имя объекта, размер объекта, имя хоста объекта и т. д. Далее Mule вызывает код Java (CreateObject) и создает объект на стороне сервера и возвращает ответ, который объект успешно создал.

В Mule поток работает нормально в первый раз, но не выполняется успешно во второй раз.

Ниже приведен мой поток Mule:

<flow name="Object-Create" doc:name="Object-Create">
    <http:inbound-endpoint exchange-pattern="request-response" address="http://localhost:8146/Create" contentType="text/html" doc:name="Service-Request">
    <http:body-to-parameter-map-transformer doc:name="FormParam-To-Mule"/>
    <not-filter>
        <wildcard-filter pattern="/favicon.ico"/>
    </not-filter>
    </http:inbound-endpoint>
    <logger level="INFO" doc:name="Form-Display"  message="#[payload]" />
    <custom-transformer class="Objectclient.CreateObject" doc:name="Call-Server"/>
    <logger level="INFO" doc:name="Output-Display" message="#[payload]"/>
    <echo-component doc:name="Echo"/>
</flow>

Когда я перезапустил службу, поток успешно выполнился (объект создан на стороне сервера) в первый раз, но во второй/третий/четвертый раз это не так. Нет ошибки, выдаваемой во второй раз потоком.

Когда я запускаю java-код PSVM независимо дважды, объект успешно создается на стороне сервера, как раз, так и каждый раз.

Может ли кто-нибудь подсказать, в чем может быть причина в Mule, которая не позволяет мне выполнять другие запросы, кроме первого, и решение для того же?


person fatherazrael    schedule 23.01.2014    source источник
comment
фильтры действуют таким образом, что поток не выполняется дальше, если условие не выполняется. Пожалуйста, проверьте ввод. (Надеясь, что вы поняли ваш запрос, когда поток запускается во второй раз без ошибок, но без вывода.)   -  person Naveen Raj    schedule 23.01.2014
comment
'Form-Display' регистрируется только один раз?   -  person David Dossot    schedule 24.01.2014
comment
Да, Form-Display регистрируется только один раз для просмотра параметров форм, полученных на веб-странице. Фильтр, который я добавил намного позже после поиска, когда я вижу это предупреждение -> WARN 2014-01-24 09:39:45,228 [[prjvmwarej].http.request.dispatch.8146.01] org.mule.transport.http.HttpConnector: Не найден получатель со вторичным поиском на соединителе: connector.http.mule.default с ключом URI: localhost:8146/favicon. ико   -  person fatherazrael    schedule 24.01.2014


Ответы (1)


Хотя это, вероятно, не ваша проблема, я предлагаю вам:

  • переместите http:body-to-parameter-map-transformer после входящей конечной точки, так как нет необходимости запускать ее для запросов favicon, которые вы отфильтровываете,
  • отбросить бесполезное и устаревшее echo-component.
person David Dossot    schedule 23.01.2014
comment
Спасибо, я удалил и удалил вышеуказанные компоненты, даже удалил фильтры, но обнаружил ту же проблему (не выполняется в другое время) при выполнении потока. Когда я перезапускаю службу, я могу создать объект (виртуальный диск) на сервере, но не могу создать два один за другим. Только утром мне удалось дважды успешно выполнить поток, но в третий раз он не создает объект на сервере. Я надеюсь, что это может быть проблема на стороне сервера, но администратор сказал, что у меня есть все права доступа, и я администратор, поэтому это должно быть проблемой в моем приложении Mule. Не могли бы вы предложить больше добавить или удалить, так как я застрял :( - person fatherazrael; 24.01.2014
comment
В дополнение к вышесказанному, я обнаружил ошибку на стороне сервера: разрешение на выполнение этой операции было отклонено. У вас нет прав доступа к хранилищу данных. Но поскольку я могу создавать после каждого перезапуска Mule и независимого запуска PSVM, я не мог гарантировать, что это проблема только на стороне сервера, и администратор также сказал то же самое. В коде Java создан клиент веб-службы SOAP, который вызывает операции службы https. Код Java запускается каждый раз, когда он запускается в первую очередь. Регистрация в java-коде работает нормально от начала до конца. - person fatherazrael; 24.01.2014
comment
Я не совсем понимаю, что происходит: когда что-то не работает, полностью ли выполняется полный или нет? Регистратор Output-Display вызывается все время или выполнение блокируется в Objectclient.CreateObject? Если выполнение блокируется в Objectclient.CreateObject, то проблема в этом коде, и нам нужно увидеть его, чтобы попытаться исправить. - person David Dossot; 24.01.2014
comment
Это System.out.print() между кодом, который показывает, что код выполняется до конца. Код такой: -› public String CVM() { try { connect(); createVMObject();} catch (SOAPFaultException sfe) . Проверьте следующий комментарий, чтобы узнать о следующем - person fatherazrael; 27.01.2014
comment
В методе Connect trustAllHttpsCertificates(); HttpsURLConnection.setDefaultHostnameVerifier(hv); vmService = новый VmService(); vmPort = vmService.getVmPort(); httpConduit = (HTTPConduit) ClientProxy.getClient(vmPort).getConduit(); TLSClientParameters tlsCP = новые параметры TLSClient(); tlsCP.setDisableCNCCheck (истина); httpConduit.setTlsClientParameters(tlsCP); vmPort.login(serviceContent.getSessionManager(), userName, password, null); - person fatherazrael; 27.01.2014
comment
Выше у вас есть общее представление о том, какой процесс происходит в коде Java, который включает в себя доверие ко всем сертификатам, создание клиента службы и вызов операции на порту. Он подключается к серверу каждый раз, но не может создать объект во второй раз. Что может быть причиной? любой сеанс необходимо уничтожить, но я также обнуляю все объекты. - person fatherazrael; 27.01.2014