Ошибка Invalid Session ID
происходит на Mule и приложение, использующее SOAP с SugarCRM Connector (http://mulesoft.github.io/sugarcrm-connector/).Mule: Invalid Session ID
Но эта ошибка происходит в этом случае:
- App начинается и процесс весь Опрос (запрос к базе данных)
- SOAP работает отлично
- Приложение остается в ожидании нового обновления/вставить
- После времени (24 часа, pe) происходит новое обновление/вставка
- Поток обрабатывается в приложении
- Но возникает следующая ошибка (repreat навсегда):
РЕДАКТИРОВАТЬ:
2016-03-24 12: 31: 30470 [бассейн-106-нить-1] ОШИБКА org.mule.retry. notifiers.ConnectNotifier - Ошибка connect/reconnect: дескриптор работы. Исключение корня: Недопустимый Идентификатор сеанса. Тип: класс org.apache.cxf.binding.soap.SoapFault 2016-03-24 12: 31: 30,471 [pool-106-thread-1] ОШИБКА org.mule.exception.DefaultMessagingExceptionStrategy - ***** ************************************************** Сообщение *************************: Не удалось вызвать getEntryList. Полезная информация сообщения имеет тип: GetEntryListRequest Код: MULE_ERROR-29999 ----------------------------------- --------------------------------------------- Исключительный стек: 1. Недействительный идентификатор сеанса (org.apache.cxf.binding.soap.SoapFault) org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor: 84 (null) 2. Недопустимый идентификатор сеанса (javax.xml.ws. soap.SOAPFaultException) org.apache.cxf.jaxws.JaxWsClientProxy: 158 (http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/xml/ws/soap/SOAPFaultException.html) 3. Не удалось вызвать getEntryList. Полезная нагрузка сообщение имеет тип: GetEntryListRequest (org.mule.api.MessagingException)
org.mule.devkit.processor.DevkitBasedMessageProcessor: 133 (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/MessagingException.html) ---------------- -------------------------------------------------- -------------- Трассировка стека прерываний корня: org.apache.cxf.binding.soap.SoapFault: Недопустимый идентификатор сеанса: org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor .unmarshalFault (Soap11FaultInInterceptor.java:84) на org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMessage (Soap11FaultInInterceptor.java:51) на org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor .handleMessage (Soap11FaultInInterceptor.jav а: 40) + 3 больше (набор каротажа уровень отладки или '-Dmule.verbose.exceptions = TRUE' для всего)
2016-03-24 12: 31: 40471 [бассейн-106-нить -1] ОШИБКА org.mule.retry.notifiers.ConnectNotifier - Ошибка connect/reconnect: дескриптор работы. Исключение корня: Недопустимый Идентификатор сеанса. Тип: class org.apache.cxf.binding.soap.SoapFault 2016-03-24 12: 31: 40,472 [pool-106-thread-1] ОШИБКА org.mule.exception.DefaultMessagingExceptionStrategy - *********************************************** Сообщение *********************************: Не удалось вызвать getEntryList. Полезная информация сообщения имеет тип: GetEntryListRequest Код: MULE_ERROR-29999 ----------------------------------- --------------------------------------------- Исключительный стек: 1. Недействительный идентификатор сеанса (org.apache.cxf.binding.soap.SoapFault) org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor: 84 (null) 2. Недопустимый идентификатор сеанса (javax.xml.ws. soap.SOAPFaultException) org.apache.cxf.jaxws.JaxWsClientProxy: 158 (http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/xml/ws/soap/SOAPFaultException.html) 3. Не удалось вызвать getEntryList. Полезная нагрузка сообщение имеет тип: GetEntryListRequest (org.mule.api.MessagingException)
org.mule.devkit.processor.DevkitBasedMessageProcessor: 133 (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/MessagingException.html) ---------------- -------------------------------------------------- -------------- Трассировка стека прерываний корня: org.apache.cxf.binding.soap.SoapFault: Недопустимый идентификатор сеанса: org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor .unmarshalFault (Soap11FaultInInterceptor.java:84) на org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMessage (Soap11FaultInInterceptor.java:51) на org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor .handleMessage (Soap11FaultInInterceptor.jav а: 40) + 3 больше (набор отладки регистрации уровня или '-Dmule.verbose.exceptions = True' для всего)
Я настроил переподключение согласие изображение ниже, но не ошибка продолжается.
EDIT:
XML конфигурации (упрощенный)
<db:oracle-config name="Oracle_Configuration" host="${db.host}" port="${db.port}" instance="${db.instance}" user="${db.user}" password="${db.password}" doc:name="Oracle Configuration">
<db:pooling-profile/>
</db:oracle-config>
<sugar:config name="Sugar__Configuration" username="${crm.ws.user}" password="${crm.ws.password}" endpoint="${crm.ws.endpoint}" doc:name="Sugar: Configuration">
<sugar:connection-pooling-profile initialisationPolicy="INITIALISE_ONE" exhaustedAction="WHEN_EXHAUSTED_GROW"/>
<reconnect-forever frequency="60000"/>
</sugar:config>
<flow name="produto-precoFlow" processingStrategy="synchronous">
<poll doc:name="Poll" doc:description="Produto">
<fixed-frequency-scheduler frequency="10000"/>
<watermark variable="carimboTempo" default-expression="2016-02-24 00:00:00" selector="MAX" selector-expression="#[message.payload.datalt]"/>
<db:select config-ref="Oracle_Configuration" doc:name="Database">
<db:parameterized-query><![CDATA[SELECT * FROM PRODUTO WHERE TO_CHAR(DATALT, 'yyyy-mm-dd hh24:mi:ss') > #[flowVars.carimboTempo]]]></db:parameterized-query>
</db:select>
</poll>
<foreach doc:name="For Each">
<enricher target="#[payload.produtoPrecoSugar]" doc:name="Message Enricher Produto">
<flow-ref name="produto-precoSub_FlowProduto" doc:name="produto-precoSub_FlowProduto"/>
</enricher>
// [...] mode code here (original)
<scripting:component doc:name="Groovy Inserir/Alterar">
<scripting:script engine="Groovy"><![CDATA[import org.mule.modules.sugarcrm.request.SetEntryRequest;
import com.sugarcrm.sugarcrm.NameValue;
req = new SetEntryRequest();
req.setModuleName("AOS_Products");
nameValues = [];
for (e in message.payload) {
nameValue = new NameValue();
nameValue.setName(e.key);
nameValue.setValue(e.value.toString());
nameValues.add(nameValue);
}
req.setNameValueList(nameValues);
return req;]]></scripting:script>
</scripting:component>
<sugar:set-entry config-ref="Sugar__Configuration" doc:name="Sugar Inserir/Alterar"/>
</foreach>
</flow>
<sub-flow name="produto-precoSub_FlowProduto">
<scripting:component doc:name="Groovy Id Produto">
<scripting:script engine="Groovy"><![CDATA[import org.mule.modules.sugarcrm.request.GetEntryListRequest;
req = new GetEntryListRequest();
req.setModuleName("AOS_Products");
whereQuery = "aos_products.deleted = 0";
for (e in message.payload) {
if (e.key == "sapiens_codtpr_c" || e.key == "sapiens_datini_c" || e.key == "sapiens_codser_c") {
whereQuery = whereQuery + " and " + e.key + " = '" + e.value.toString() + "'";
} else if (e.key == "sapiens_codemp_c" || e.key == "sapiens_qtdmax_c") {
whereQuery = whereQuery + " and " + e.key + " = " + e.value.toString();
}
}
req.setQuery(whereQuery);
req.setSelectFields(["id"]);
req.setDeleted(0);
return req;
]]></scripting:script>
</scripting:component>
<sugar:get-entry-list config-ref="Sugar__Configuration" doc:name="Sugar Id Produto e Preço"/>
</sub-flow>
Что может быть ocurring? Есть ли форма для решения этой проблемы?
Возможно ли, что идентификатор сеанса истек? Как вы его получили? –
Возможно, сеанс на сервере истек (по таймауту), да. Но в этом случае Мул должен снова подключиться, правильно (стратегия пересоединения)? В первый раз соединение было выполнено сервером Mule при запуске/первом запросе через параметры Sugar Connection. Отредактировано выше, чтобы включить конфигурацию XML. – Muka