Верблюжий маршрут от пристани до абсолютного URL

У меня есть пакет OSGi, развернутый на Apache Karaf. У меня есть простой верблюжий маршрут:

    <camelContext trace="true" xmlns="http://camel.apache.org/schema/spring">
        <route>
            <from uri="jetty:http://0.0.0.0:8282/services?handlers=securityHandler&amp;matchOnUriPrefix=true"/>
            <setHeader headerName="CamelHttpQuery">
                <constant>wt=xml&amp;rows=1000000&amp;fl=nid,title&amp;fq=sm_vid_Third_parties_with_which_this_organisation_s_content_can_be_shared:%22Indeed%22</constant>
            </setHeader>
            <to uri="http://172.28.128.158:8983/solr/targetjobs.co.uk.gtimedia.test/select/?"/>

<!--        <split>
                <xpath>//int[@name='nid']</xpath>
            </split>-->
            <convertBodyTo type="java.lang.String" />
        </route>
    </camelContext>

Я не могу заставить его работать. Когда я вызываю http://localhost:8282/services, он должен перенаправляться к uri, указанному ниже setHeader. Вместо этого я получаю это исключение:

java.lang.IllegalArgumentException: неверный uri:/services. Если вы перенаправляете/соединяете конечные точки http, включите параметр bridgeEndpoint на конечной точке: Endpoint[http://172.28.128.158:8983/solr/targetjobs.co.uk.gtimedia.test/select/]

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

Я попытался настроить Spring, как показано здесь, но это тоже не сработало. Я также пытался изменить это:

<to uri="http://172.28.128.158:8983/solr/targetjobs.co.uk.gtimedia.test/select/?"/>

к этому:

<to uri="jetty//http://172.28.128.158:8983/solr/targetjobs.co.uk.gtimedia.test/select/?"/>

Тоже никаких успехов. Может быть, кто-то знает, как маршрутизировать от jetty uri до абсолютного url?


person Paulius Matulionis    schedule 21.08.2012    source источник
comment
Можешь написать как ты решил свою проблему   -  person vashishth    schedule 25.04.2014


Ответы (2)


Вы пробовали bridgeEndpoint? Как описано ниже:

http://camel.apache.org/how-to-use-camel-as-a-http-proxy-between-a-client-and-server.html

Ваш целевой URL будет выглядеть так:

<to uri="jetty//http://172.28.128.158:8983/solr/targetjobs.co.uk.gtimedia.test/select?bridgeEndpoint=true&amp;throwExceptionOnFailure=false"/>
person udalmik    schedule 22.08.2012
comment
Я решил проблему наоборот, но в любом случае, спасибо, думаю, мне это понадобится в будущем, так что я попробую :) - person Paulius Matulionis; 22.08.2012

Работал для меня:

@Override
public void configure() throws Exception {

  restConfiguration()
    .host("localhost")
    .component("jetty")
    .port("8085");

  rest("/api")

    //NEW ROUTE
    .get("/getResidences")
    .produces("application/json")

    //OLD ROUTE
    .to("http://localhost:3000/api/residences?bridgeEndpoint=true&throwExceptionOnFailure=false");

}

Обратите внимание на .componet("jetty") в остальной конфигурации.

person Thialyson Martins    schedule 12.04.2019