Конфигурация Apache CXFRS и CAMEL - PullRequest
2 голосов
/ 15 октября 2011

Я хочу получить результат REST, нажав веб-службу REST, доступную на сайте http://someotherhost. я написал прокси-клиент для него

Я хочу запустить вышеупомянутую службу REST с помощью клиента apache CXFRS и записать результат в файл. для чего я делаю следующее, может ли кто-нибудь пересмотреть ниже и прокомментировать то, что я сделал неправильно.

a) Моя конфигурация контекста верблюда с apache cxf такая, как показано ниже

    <jaxrs:client address="http://someotherhost/test/" id="cityServiceClient" username="test"         
            password="pwd" 
            serviceClass="com.santosh.proxy.service.city.CityService">
            <jaxrs:features>
                    <ref bean="loggingFeature" />
            </jaxrs:features>
    </jaxrs:client>  

    <camelContext xmlns="http://camel.apache.org/schema/spring">
            <package>com.santosh.routes</package>
            <routeBuilder ref="cityserviceroutebuilder" />
    </camelContext>

b) Мой сервисный прокси-интерфейс

    @Path(value="/getCities") 
    public interface CityService   { 

       @POST 
       @Produces(value="text/xml") 
       public String getCities(@QueryParam("countrycode") String countryCode); 
    } 

в) Позвонить в сервис

   CityService cityService = (CityService) context.getBean("cityServiceClient"); 
   cityService.getCities("ae"); 

г) Верблюжий путь

  public class CityRoutes extends RouteBuilder { 

    public void configure() throws Exception { 

   //ROUTES 
    from("cxfbean:cityServiceClient") 
      .to("file://data/xmls/cities?fileName=test.xml"); 
    } 
} 

1 Ответ

3 голосов
/ 18 октября 2011

Я получил решение, в основном моя конфигурация верблюжьего контекста была не до этой отметки,

Следующая конфигурация решила мою проблему.

    <! -- 4 THE ACTUAL SERVER WHICH WILL GET HIT -->
    <jaxrs:server id="restService" depends-on="camelContext" 
            address="http://REALSERVER.COM/REST/" createdFromAPI="true" 
            staticSubresourceResolution="true">
            <jaxrs:serviceBeans>
                    <ref bean="servicecity" />
            </jaxrs:serviceBeans>
    </jaxrs:server>

    <bean name="servicecity" id="servicecity" class="com.santosh.CityServiceImpl" />


    <! -- 3  YOUR PROXY CLIENT -->
    <cxf:rsClient id="rsClient" address="http://REALSERVER.COM/REST/"  
                              serviceClass="com.santosh.CityServiceImpl" 
                      username="santosh" password="pwd" />

    <! -- 1 JAXRS PROXY CLIENT  -->  
    <jaxrs:client id="cityServiceClient" address="http://localhost:8123/REST/"
            serviceClass="com.santosh.CityService" username="santosh" password="pwd">
    </jaxrs:client>

   <! -- 2  YOUR LOCAL SERVER THAT YOU NEED TO HIT, YOUR LOCAL SERVER -->
    <cxf:rsServer id="rsServer" address="http://localhost:8123/REST/" serviceClass="com.santosh.CityServiceImpl" />

ШАГИ

1) создайте JAXRS PROXY CLIENT и получите его в своем собственном коде CityService cityService = (CityService) context.getBean ("cityServiceClient");cityService.getCities ( "INDIA");

2) указанный выше код вызовет СЕРВЕР (ЛОКАЛЬНЫЙ)

3) вышеуказанный шаг вызовет ВАШЕГО ПРОКСИ-КЛИЕНТА

4) ПРОКСИ-КЛИЕНТ вызовет АКТУАЛЬНУЮ РЕАЛЬНУЮСЕРВЕР

...