Не найден компонент со схемой: пристань

Итак, я просмотрел доски объявлений и увидел некоторых людей, которые столкнулись с этой проблемой, но обычно это было связано с отсутствием зависимости в файле POM.

Мое дело:

  1. Запуск JBoss Fuse jboss-fuse-6.1.0.redhat-379
  2. Апач Верблюд 2.14.1
  3. Весна 3.2.8_RELEASE_1
  4. Имейте зависимость верблюжьей пристани в моем файле POM
  5. Установил функцию в Karaf. Проверено, что эта функция есть в списке OSGI и списке функций.
  6. причал / 8.1.14.v20131031

Работает нормально в eclipse.

Итак, у меня есть контекст со следующей конфигурацией отдыха:

<camelContext id="FIRST-CAMEL-CONTEXT" xmlns="http://camel.apache.org/schema/spring" streamCache="true">
     <restConfiguration component="jetty" bindingMode="json" port="8881" host="0.0.0.0">
          <dataFormatProperty key="prettyPrint" value="true"/>
     </restConfiguration>

    <rest path="/search" consumes="application/json" produces="application/json">
      <description>Get Search Results</description>
       <!-- this is a rest GET to find all users -->
      <post uri="/SearchHotels" outType="HotelsEnvelope.Response" type="HotelsEnvelope.Request">
        <description>Hotels</description>
        <to uri="bean:searchRequest?method=ReturnHotels(Exchange,${body},${headers})"/>
      </post>
    </rest>
  .....
  </camelContext>

бобы, определенные выше как таковые:

<bean id="searchRequest" class="ICEPricelineSVC.SearchRequest" />

В Bean я в основном создаю контекст, а затем отправляю запрос в стороннюю службу следующим образом:

CamelContext context = new DefaultCamelContext();
ProducerTemplate template = context.createProducerTemplate();

.....

String url = String.format("jetty:http://api.rezserver.com/api/hotel/getResultsWithCacheV2?function_type=get&format=xml&refid=%s&api_key=%s&currency=USD&latitude=%s&longitude=%s&radius=%s&check_in=%s&check_out=%s&adults=2&children=0&rooms=1&nearby=0&recent=0&promo=1&sort_by=most_popular&sort_order=ASC&limit=5000&offset=0&format=xml&function_type=get&poi_name=search&bridgeEndpoint=true&amp;amp;throwExceptionOnFailure=false",supplier.getCredentials().getRefid(),supplier.getCredentials().getKey(), request.getQryLocation().getLat().toString(), request.getQryLocation().getLng().toString(), request.getQryLocation().getRadius().toString(),formatter1.format(dateCheckIn), formatter1.format(dateCheckOut));


Exchange exchange = template.send(url, new Processor() {
                                  public void process(Exchange exchange) throws Exception {
  exchange.setPattern(ExchangePattern.InOut);
  Message inMessage = exchange.getIn();
  Inits.setupDestinationURL(inMessage);

  // set the operation name 

  inMessage.setHeader(Exchange.HTTP_METHOD, org.apache.camel.component.http4.HttpMethods.GET);
}
});

.....

Когда шаблон производителя отправляет, я получаю ошибку причала.

Я пробовал разные вещи. Одним из них является внедрение ApplicationContext в bean-компонент и получение bean-компонента FIRST_CAMEL_CONTEXT для извлечения контекста. В этом случае кажется, что запрос отправлен, но обмен, возвращенный процессором, является нулевым.

Опять же, все это работает в eclipse. Я также заметил, что когда я развертываю пакет, я вижу, что он добавляет зависимости в контейнер. Есть ли хороший способ преследовать это? На данный момент я прибегнул к использованию HTPClient, но очень хотел бы понять, почему при использовании производителя возникает проблема с путем к классам.

Спасибо.


person user3341823    schedule 15.01.2015    source источник


Ответы (1)


JBoss Fuse 6.1 поставляется с Apache Camel 2.12.x из коробки. Вы должны использовать эту версию, так как она сертифицирована и протестирована.

JBoss Fuse 6.2, который является следующим выпуском, поставляется с Apache Camel 2.14.x, и этот выпуск имеет новый rest-dsl.

person Claus Ibsen    schedule 15.01.2015
comment
Хорошо, когда выйдет этот релиз? - person user3341823; 15.01.2015
comment
К вашему сведению, откат к 2.12.x не решает эту проблему. Похоже, это просто ошибка при работе в рамках. Не уверен, почему пристань не найдена, поскольку это установленная функция и путь к классам. - person user3341823; 27.01.2015