Итак, я просмотрел доски объявлений и увидел некоторых людей, которые столкнулись с этой проблемой, но обычно это было связано с отсутствием зависимости в файле POM.
Мое дело:
- Запуск JBoss Fuse jboss-fuse-6.1.0.redhat-379
- Апач Верблюд 2.14.1
- Весна 3.2.8_RELEASE_1
- Имейте зависимость верблюжьей пристани в моем файле POM
- Установил функцию в Karaf. Проверено, что эта функция есть в списке OSGI и списке функций.
- причал / 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¤cy=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;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, но очень хотел бы понять, почему при использовании производителя возникает проблема с путем к классам.
Спасибо.