Вызов службы отдыха, передающей параметры динамического значения ключа с использованием компонентов cxf-rs

Мне нужно создать службу Fuse, которая, в свою очередь, будет вызывать службу REST, предоставляемую внешним поставщиком услуг. Служба Fuse будет получать запрос в формате XML и преобразовывать его в строку запроса перед вызовом службы REST.

Пример XML-запроса для службы Fuse —

<CustomerDetails>
<CustomerName>ABC</CustomerName>
<CustomerAge>28</CustomerAge>
<CustomerName>DEF</CustomerName>
<CustomerAge>54</CustomerAge>
<CustomerDetails>

Служба REST принимает запрос в параметрах ключ-значение и отвечает в формате XML.

пример URL:

https://www.customer.com/cust/api/v1/store/abc.xml?Customername=ABC&Customerage=28&Customername=DEF&customerage=54)

Я пытался много искать, но не смог найти ни одного учебника в сети.

Может ли кто-нибудь дать предложения о том, как реализовать службу предохранителей с использованием компонентов cxf-rs (предпочтительно конфигурация верблюда Spring DSL)

Заранее спасибо..


person Shockwave    schedule 07.06.2014    source источник


Ответы (1)


Если вы просто хотите превратить XML-запрос в параметр URL, вы можете просто использовать формат данных jaxb для демаршалирования запрос и использовать объект компонента для настройки параметров запроса URI. Вам не нужно использовать компонент camel-cxf.

from("direct:start").unmarshal(jaxb).process(new Processor() {
      public void process(Exchange exchange) throws Exception {
          // get the request object
          CustomerDetail request = exchange.getIn().getBody();
          // Just mapping the request object into a query parameters.
          String query = requestToParameter(request);
          exchange.getIn().setHeader(Exchange.HTTP_QUERY, query);
          // to remove the body, so http endpoint can send the request with Get Method 
          exchange.getIn().setBody(null);
     }).to("https://www.customer.com/cust/api/v1/store/abc.xml");
person Willem Jiang    schedule 16.06.2014