2016-06-22 5 views
0

Ich entwickle einen Mule Work-Flow, um einen Datensatz in die Datenbank einzufügen und versuche die Ausnahme zu fangen, falls der Datensatz ist schon vorhanden und sende den HTTP-Status (409-Conflict) und den Back an den Client.Mule Exception Strategie Definition: Ungültiger Inhalt wurde gefunden beginnend mit Element 'Choice-Exception-Strategie'

<when expression="#[message.inboundProperties['http.method'] == 'POST']"> 
         <json:json-to-object-transformer returnClass="java.lang.Object" doc:name="JSON to Object" /> 
         <set-variable variableName="id" value="#[message.payload.id]" doc:name="Save brandId"/> 
         <json:object-to-json-transformer doc:name="Object to JSON"/> 
         <db:insert config-ref="Postgres" doc:name="Configstore"> 
          <db:parameterized-query><![CDATA[INSERT INTO messages("id", "data") VALUES (#[flowVars['id']], CAST(#[message.payload] as json))]]> </db:parameterized-query> 
         </db:insert> 
         <logger message="REST Response = #[message.payload]" level="INFO" doc:name="LOG Rest Response"></logger> 

         <choice-exception-strategy name="Global_Choice_Exception_Strategy" doc:name="Global Choice Exception Strategy"> 
          <catch-exception-strategy doc:name="Catch_Exception_Strategy" when="#[exception.causedBy(org.postgresql.util.PSQLException)]"> 
          <set-payload value="The request cannot be processed, the error is #[exception.getExceptionPayload()]"/> 
           <set-property propertyName="http.status" value="404"/> 
           <http:outbound-endpoint exchange-pattern="request-response" host="localhost" port="8081" method="POST" doc:name="HTTP"/> 
          </catch-exception-strategy> 
         </choice-exception-strategy> 

        </when> 

Der Startvorgang wiederholt wiederholt und der folgende Fehler wird in den Protokollen gemeldet.

cvc-complex-type.2.4.a: Ungültiger Inhalt wurde gefunden, beginnend mit Element 'Choice-Exception-Strategie'. Einer von '{"": abstract-message-processor, "http://www.mulesoft.org/schema/mule/core": abstract-outbound-endpoint, "http://www.mulesoft.org/schema/mule/core": Abstrakt-Mixed-Content-Message-Prozessor} wird erwartet. bei org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException (Unknown Source) ~ [:?]

Dieser Fehler alternativ für beide Wahl-Ausnahme-Strategie berichtet und Catch-Ausnahme-Strategie. Nicht sicher, was hier ungültig ist oder einen benutzerdefinierten Nachrichtenprozessor oder Outbound-Endpunkt definieren muss. Ich benutze mule EE-3.8.0

+0

Es sollte in Flow-Level sein. Definiere es vor Ende des '' gerne. < ..... . Wenn Sie Intellji verwenden, wird die GUI fehlen. – star

Antwort

1

Das Problem ist, dass Sie eine Ausnahmestrategie in einem Choice-Element verwenden. Die Ausnahmestrategie muss für Ihren gesamten Fluss definiert sein, nicht einzelne Elemente (einige erlauben dies, sind aber selten). Sie können mehr über diese here und ein Beispiel here finden.

HTH

+0

Danke für die Antwort. Problem gelöst. – Kris

Verwandte Themen