2016-06-09 13 views
0

Во время исследования моего MSC я столкнулся с проблемой, которую я не понимаю. Сценарий: запуск простого потока путем вызова REST api. Поток устанавливает статическую полезную нагрузку и вызывает другой REST api.Исключение мула после компонента Джерси

Если я позвоню следующий поток я получил исключение:

<http:listener-config name="HTTP_Listener_Configuration_Inbound" 
    host="0.0.0.0" port="8081" doc:name="HTTP Listener Configuration_Inbound" /> 

<http:request-config name="cam" host="localhost" 
    port="8090" basePath="/engine-rest" doc:name="cam-connection" /> 

<flow name="receiveOrderFlowRest"> 
    <http:listener config-ref="HTTP_Listener_Configuration_Inbound" 
     path="/orderDomain/services/rest/*" doc:name="HTTP-Inbound" /> 

    <jersey:resources doc:name="REST"> 
     <component class="de.tj.msc.orderDomain.services.rest.ReceiveOrderRestImpl" /> 
    </jersey:resources> 

    <set-payload 
     value="{}" 
     doc:name="Set Payload" /> 


    <http:request config-ref="cam" 
     path="process-definition/key/orderDomain-main/submit-form" method="POST" 
     doc:name="cam-startNewProcess" 
     parseResponse="false"> 

     <http:request-builder> 
      <http:header headerName="Content-Type" value="application/json" /> 
     </http:request-builder> 
    </http:request> 
</flow> 

Calling приведет следующее исключение:

org.mule.module.http.internal.request.ResponseValidatorException: Response code 415 mapped as failure. Message payload is of type: BufferInputStream 
at org.mule.module.http.internal.request.SuccessStatusCodeValidator.validate(SuccessStatusCodeValidator.java:37) 
at org.mule.module.http.internal.request.DefaultHttpRequester.validateResponse(DefaultHttpRequester.java:311) 
at org.mule.module.http.internal.request.DefaultHttpRequester.innerProcess(DefaultHttpRequester.java:299) 
at org.mule.module.http.internal.request.DefaultHttpRequester.processBlocking(DefaultHttpRequester.java:186) 

Если удалить Джерси часть потока ИЛИ НТТР-requeswt -части результирующая часть потока работает нормально. Проблема только в сочетании.

Служба «CAM» нуждается в json в качестве типа MIME.

Есть ли простая основная ошибка, которую я сделал?

Надеюсь, кто-нибудь может мне помочь. Большое вам спасибо!

ответ

1

Основываясь на 415, вы можете попробовать установить MIMETYPE на множестве-полезной нагрузки:

<set-payload 
     value="{}" 
     doc:name="Set Payload" mimeType="application/json" /> 

Или установите заголовок Content-Type явно:

<set-property value="application/json" propertyName="Content-type" doc:name="Property" /> 
+0

Спасибо за ваш ответ. К сожалению, это не помогло. Я пробовал оба варианта и комбинации. Но каждый раз, когда я использую компонент трикотажа, это исключение происходит. Я не вижу ясно, если это мул, который жалуется на 415 или Камунду. Но если я не стану json, жалуется камунда. Поэтому я думаю, что это Мул. Я понятия не имею, как двигаться дальше. Надеюсь, вы могли бы поделиться со мной другой идеей. – blaine

+0

Когда вы вызываете Mule API, можете ли вы попробовать добавить следующий заголовок: Accept: application/json? –