2013-07-11 4 views
1

Я новичок в верблюде, и в итоге я оказался на прокси-сервере. У меня есть такой маршрут я использую для хранения resulat от возвратного вызова HTTP в файл:Как установить прокси-сервер при использовании camel-http

from("quartz://collector/test?cron=0+0/2+*+?+*+*")      
    .setHeader(Exchange.HTTP_METHOD, constant("GET"))  
    .setHeader(Exchange.HTTP_QUERY, constant("Id=50") 
.to("http://www.anywebsite/question.php") 
    .setHeader(Exchange.FILE_NAME,constant("${date:now:yyyyMMddHHmmssSSS}.xml")) 
.inOnly(someFolder); 

Моя проблема заключается в том, что мне нужно указать прокси-сервер (хост + порт), чтобы пройти, или я буду застрял, пытаясь получить информацию. Я пробовал различные способы, включая настройку «http.proxyHost» и «http.proxyPort» из routeBuilder (через getContext(). SetProperties) и из bundle-context.xml, завернутого в тег свойств/свойства. Я также попытался установить его в конечной точке (camel-http док говорят, что вы можете установить его в httpenpoint) путем добавления &proxyHost=myHost&proxyPort=myPort к нему.

нет работал ..

Il также пытался создать HTTP-канал из сообщений, которые я прочитал через Google, например (выбор одного или другого в соответствии с целью развертывания):

<http-conf:conduit name="*.http-conduit"> 
<!-- when behind proxy --> 
     <http-conf:client Connection="close" ConnectionTimeout="3000" ReceiveTimeout="10000" ProxyServer="p-goodwat" ProxyServerPort="3128"/> 
<!-- when no proxy --> 
    <http-conf:client Connection="close" ConnectionTimeout="3000" ReceiveTimeout="10000" /> 
</http-conf:conduit> 

Но это тоже не сработало ... а также, я хотел бы иметь возможность сделать это автоматически, без необходимости обновлять верблюжий контекст в зависимости от того, где он будет установлен.

Итак, вы видите способ установить его и установить его динамически?

ответ

1

После нескольких попыток мне удалось это сработать ... похоже, что проблема не исходила из моего решения, но из-за того, что я не увеличил версию пакета ... таким образом, мои решения были просто не такими принимая во внимание.

Итак, решение, которое сработало для меня, устанавливает конечную точку контекста из моего маршрута, как: getContext(). SetProperty («http.proxyHost», 10.100.100.1);
getContext(). SetProperty («http.proxyPort», 2111);

Теперь это действительно работает.

Спасибо всем, кто посмотрел!

0

Я не думаю, что на этот раз для вас работает настройка http-conduit, так как вы не используете клиент CXF для вызова службы.

+0

Я догадался: Я читал об этом во многих примерах, и всегда были клиентом CXF. Спасибо за подтверждение! – Marvin

0

Использование XML Config:

<camelContext id="context" xmlns="http://camel.apache.org/schema/spring"> 
    <properties> 
     <property key="http.proxyHost" value="127.0.0.1"/> 
     <property key="http.proxyPort" value="8888"/> 
    </properties> 
</camelContext>