У меня есть поток в Муле.Он содержит HTTP-входящие прослушивания номера порта и адреса.Теперь, в соответствии с адресом HTTP Inbound, я должен перенаправить его на другую виртуальную машину.
Эту часть я сделал, как показано ниже:
<flow name="MetaService">
<http:inbound-endpoint address="http://localhost:8000/jcore/meta"
transformer-refs="HttpParams" responseTransformer-refs="JavaObjectToJson">
</http:inbound-endpoint>
<component>
<spring-object bean="MetaServiceBean"/>
</component>
<choice>
<when evaluator="header" expression="INBOUND:http.request.path=/jcore/meta">
<vm:outbound-endpoint path="ToJSON" exchange-pattern="request-response"/>
</when>
<when evaluator="header" expression="INBOUND:http.request.path=/jcore/meta.json">
<vm:outbound-endpoint path="ToJSON" exchange-pattern="request-response"/>
</when>
<when evaluator="header" expression="INBOUND:http.request.path=/jcore/meta.xml">
<vm:outbound-endpoint path="ToXML" exchange-pattern="request-response"/>
</when>
<otherwise>
<message-properties-transformer>
<add-message-property key="http.status" value="404"/>
</message-properties-transformer>
<expression-transformer>
<return-argument evaluator="string"
expression="{"Exception": "Could not Render the Request. URL may be wrong"}"/>
</expression-transformer>
</otherwise>
</choice>
</flow>
Что происходит, если есть " .json "ИЛИ" .xml "в конце адреса, затем я маршрутизирую его на виртуальную машину и в случаеНеверные URL-адреса Я поднимаю ошибку HTTP 404. ..
Но вопрос в том, что я должен проверять действительные / недействительные URL-адреса в начале потока, а не в конце .. А такжеЯ должен направить их в конце (в соответствии с URL, как показано) .. !!
Я могу также использовать компонент choice в начале, но тогда он будет избыточным ..!!
Есть ли хороший вариант .. ??