我很努力地滿足我對Mule REST模塊的使用案例。我想根據templateUri和HTTP方法進行不同的轉換。Mule:根據HTTP方法和REST路由器應用過濾器和變換器(和錯誤處理)
這裏是我的配置:
<flow name="http-interface">
<http:inbound-endpoint address="http://localhost:8555" exchange-pattern="request-response"/>
<rest:router templateUri="/schedule">
<rest:post>
<mxml:schema-validation-filter schemaLocations="xsd/scheduler.xsd" returnResult="true"/>
<mxml:jaxb-xml-to-object-transformer jaxbContext-ref="jaxb-context"/>
<vm:outbound-endpoint path="addjob"/>
</rest:post>
</rest:router>
<choice-exception-strategy>
<catch-exception-strategy when="exception.causedBy(org.mule.api.routing.filter.FilterUnacceptedException)">
<logger level="ERROR" message="FilterUnacceptedException #[message]"/>
<set-payload value="An error occurred while validating request. Please check the XML payload"/>
<set-property propertyName="http.status" value="400"/>
</catch-exception-strategy>
<catch-exception-strategy when="exception.causedBy(java.lang.NullPointerException)">
<logger level="ERROR" message="NullPointerException #[message]"/>
<set-payload value="An error occurred while validating request. Please check the XML payload"/>
<set-property propertyName="http.status" value="400"/>
</catch-exception-strategy>
</choice-exception-strategy>
</flow>
當無效XML被張貼到終點,我得到的NestedProcessorChain.processWithExtraProperties一個NullPointerException。因此,這個例外(不理想)的討厭趕上。
我的IDE爲靜態提供了模式驗證錯誤:流程中的路由器和其餘部分中的mxml過濾器/變換器:post元素。我可以通過將rest:路由器放入入站端點來刪除第一個路由器。結果是一樣的,大多數例子沒有這個
我試着將過濾器/轉換移動到VM端點上的一個單獨的流。驗證是乾淨的,但是我不知道如何獲取HTTP錯誤代碼和響應回到客戶端。
任何幫助非常感謝, 阿爾菲。