2011-10-15 5 views
2

Je souhaite consommer le résultat REST en accédant à un service Web REST disponible sur le site http://someotherhost. J'ai écrit un client proxy pour celaConfiguration Apache CXFRS et CAMEL

Je veux frapper le service REST ci-dessus en utilisant le client Apache CXFRS et écrire le résultat dans un fichier. pour lequel je suis en train de faire ce qui suit, quelqu'un peut-il faire un commentaire sur ce qui suit et commenter les choses que j'ai mal fait.

a) Ma configuration de contexte de chameau avec Apache CXF est comme ci-dessous

<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) mon service proxy Interface

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

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

c) appel au service

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

d) Routes de chameau

public class CityRoutes extends RouteBuilder { 

    public void configure() throws Exception { 

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

Répondre

3

J'obtenu la solution, essentiellement ma configuration chameau contexte n'a pas été à cette marque,

La configuration ci-dessous a résolu mon problème.

<! -- 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" /> 

LES MESURES SONT

1) créer JAXRS PROCURATION CLIENT et obtenir dans votre avoir le code CityService cityService = (CityService) context.getBean ("cityServiceClient"); cityService.getCities ("INDE");

2) le code ci-dessus font appel au serveur (LOCAL)

3) l'étape précédente appellera PROCURATION CLIENT

4) le CLIENT PROXY appellera le SERVEUR RÉEL REAL

+0

obtenu le solution enfin –