Чтобы реализовать SOA с наименьшим наименованием, я создал WSDL с двумя операциями и сгенерированными классами Java и интерфейсом. Я создал один поток мула для обработки нескольких операций следующим образом. Это правильный подход или лучший способ его достижения?Поддержка нескольких операций в службе SOAP Mule
<choice doc:name="Choice">
<when expression="header:INVOCATION:cxf_operation={http://integration.sbs.com/Services/SMT/v1}getSupplierRequestDetail">
<vm:outbound-endpoint exchange-pattern="request-response" path="GetFlow" doc:name="Get"/>
</when>
<when expression="header:INVOCATION:cxf_operation={http://integration.sbs.com/Services/SMT/v1}updateSupplierRequestDetail">
<vm:outbound-endpoint exchange-pattern="request-response" path="UpdateFlow" doc:name="Update"/>
</when>
<otherwise>
<logger message="Operation Not Supported" level="INFO" doc:name="Logger"/>
</otherwise>
Вам не нужно использовать маршрутизатор выбора для разной работы. Вместо этого mule автоматически вызовет операцию, основанную на действии SOAP. –
Реализации службы нет. Если вы видите код, я направляюсь к различным подпотокам, которые запускают разные запросы к базе данных. Затем ответ базы данных преобразуется в объект ответа перед передачей его компоненту SOAP. Если я не идентифицирую операцию в потоке, как я могу перейти к другому потоку? –
Зачем вам передавать ответ базы данных на запрос SOAP? Вместо этого вы можете называть вас слоем DAO с вашего уровня, реализованного сервисом, который будет выполнять различные операции с БД ... Вы можете реализовать свою услугу и в сервисе, вы можете позвонить в свою БД, вызвав ваш уровень DAO .. И делая это может вызывать различные операции службы на основе действия SOAP. –