2016-06-09 18 views
0

Während der Forschung für meine MSC habe ich ein Problem, das ich nicht verstehe. Das Szenario: Starten eines einfachen Flusses durch Aufruf einer REST API. Der Flow setzt eine statische Payload und ruft eine andere REST API auf.Mule Ausnahme nach Jersey Komponente

Wenn ich rufe Sie den folgenden Ablauf ich eine Ausnahme bekam:

<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> 

Berufung wird folgende Exception:

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) 

Wenn ich den Trikot-Teil des Flusses oder den http-requeswt entfernen - der resultierende Teil der Strömung funktioniert gut. Nur beides in Kombination ist das Problem.

Der Dienst "CAM" benötigt json als MIME-Typ.

Gibt es einen einfachen Grundfehler, den ich gemacht habe?

Ich hoffe, dass mir jemand helfen konnte. Vielen Dank!

Antwort

1

Basierend auf den 415, könnten Sie versuchen, die mimen auf der Set-Nutzlast Einstellung:

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

oder die Content-Type-Header explizit festgelegt:

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

Dank für Ihre Antwort danken. Leider hat das nicht geholfen. Ich habe beide Optionen und Kombinationen ausprobiert. Aber jedes Mal, wenn ich die Jersey-Komponente verwende, tritt diese Ausnahme auf. Ich kann nicht klar sehen, ob es Maultier ist, das sich über 415 oder Camunda beschwert. Aber wenn ich JSON nicht setze, beschwert sich Camunda. Also ich denke es ist Mule. Ich habe keine Ahnung, wie ich weitermachen soll. Ich hoffe, du könntest eine andere Idee mit mir teilen. – blaine

+0

Wenn Sie die Mule-API aufrufen, können Sie versuchen, den folgenden Header hinzuzufügen: Accept: application/json? –