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
Es sollte in Flow-Level sein. Definiere es vor Ende des '' gerne.< ..... catch-exception-strategie> . Wenn Sie Intellji verwenden, wird die GUI fehlen. –
star