2015-05-27 8 views
1
<flow..> 
    ... 
    <jersey:resources doc:name="REST"> 
      <component class="com.rest.SyncAccountService"/> 
    </jersey:resources> 
    <set-payload value="#[message.payload]" doc:name="Set Payload"/> 
    <set-property propertyName="mimeType" value="application/octet-stream" doc:name="Property"/> 
    <set-property propertyName="Content-Disposition" value="attachment;filename=${file_name}" doc:name="Property"/> 
    <set-variable variableName="status" value="Success" doc:name="Status"/> 
    <flow-ref name="audit" doc:name="audit"/> 
</flow> 

<flow name="audit" doc:name="audit"> 
    <http:inbound-endpoint exchange-pattern="request-response" host="${hostname}" port="${glport}" path="audit" doc:name="HTTP"/> 
    <db:insert config-ref="QB_Oracle_Configuration" doc:name="Audit" transactionalAction="NOT_SUPPORTED"> 
     <db:parameterized-query><![CDATA[INSERT INTO SIAS_AUDIT(ACCESS_ID,EMPLID) VALUES('1','value1')]]></db:parameterized-query> 
    </db:insert> 
    <set-payload value="===Audit Log ===" name="AuditStatus" doc:name="Status"/> 
</flow> 

Над кодом работает отлично, но он возвращает === Журнал аудита === в загруженном файле. Вместо этого мне нужно отобразить полезную нагрузку, определенную на уровне приложения, которая создается в компоненте покоя.Возвращаемые значения крепления мула

Целью аудита является запись состояния успеха/отказа в db, который не должен возвращать что-либо. Если удалить <set-payload value="===Audit Log ===" name="AuditStatus" doc:name="Status"/>

он начинает возвращение java.lang.Number

EDIT

Получение следующее сообщение об ошибке, после того, как сделать это как асинхронном:

ERROR 2015-05-27 13:43:51,846 [[qbiif].connector.http.mule.default.receiver.02] org.mule.exception.CatchMessagingExceptionStrategy: 
******************************************************************************** 
Message    : Unable to process a synchronous event asynchronously. Message payload is of type: MuleResponseWriter$1 
Code     : MULE_ERROR--2 
-------------------------------------------------------------------------------- 
Exception stack is: 

    1. Unable to process a synchronous event asynchronously. Message payload is of type: MuleResponseWriter$1 (org.mule.api.MessagingException) 
     org.mule.processor.AsyncInterceptingMessageProcessor:132 (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/MessagingException.html) 
    -------------------------------------------------------------------------------- 
    Root Exception stack trace: 
    org.mule.api.MessagingException: Unable to process a synchronous event asynchronously. Message payload is of type: MuleResponseWriter$1 

изменения потока:

<flow name="audit" doc:name="audit" processingStrategy="asynchronous"> 
    <db:insert config-ref="QB_Oracle_Configuration" doc:name="Audit" transactionalAction="NOT_SUPPORTED"> 
     <db:parameterized-query><![CDATA[INSERT INTO SIAS_AUDIT(ACCESS_ID,EMPLID) VALUES('1','value1')]]></db:parameterized-query> 
    </db:insert> 
    <set-payload value="===Audit Log ===" name="AuditStatus" doc:name="Status"/> 
</flow> 

EDIT-2

Окончательные изменения для рабочего кода после выполнения link

<flow name="audit" doc:name="audit"> 
    <async> 
     <db:insert config-ref="QB_Oracle_Configuration" doc:name="Audit" transactionalAction="NOT_SUPPORTED"> 
      <db:parameterized-query><![CDATA[INSERT INTO SIAS_AUDIT(ACCESS_ID,EMPLID) VALUES('1','value1')]]></db:parameterized-query> 
     </db:insert> 
     <set-payload value="===Audit Log ===" name="AuditStatus" doc:name="Status"/> 
    </async> 
</flow> 
+0

Какова цель 'http: inbound-endpoint' в потоке' audit'? Вы собираетесь называть этот поток напрямую через HTTP? –

+0

@DavidDossot, удален. Не требуется. – bekur

ответ

1
  • Удалить <set-payload value="#[message.payload]" doc:name="Set Payload"/>: он устанавливает полезную нагрузку сообщения, как самого себя, что это бесполезно.
  • Обтекатель <flow-ref name="audit" doc:name="audit"/> в области async, поэтому его ответ не вступает в реакцию с компонентом JAX-RS.
  • Если вам действительно не нужно выставлять поток по HTTP, удалите http:inbound-endpoint.
+0

Удалена конечная точка http и полезная нагрузка. После внесения изменений для Async error as, получение Невозможно обработать синхронное событие асинхронно. Обновленный вопрос выше – bekur

+0

получил его, завернутый в bekur

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