2016-06-27 2 views
0

Я занимался некоторыми исследованиями интеграции Camel - CXf и смущен в приведенном ниже сценарии.Camel With Cxf и Routing

Так я реализовал Rest Endpoint

@Path("/authenticate") 
public interface Sample { 
@GET 
@Path("/handshake") 
@Produces(MediaType.TEXT_PLAIN) 
public Response handshake(); 

@POST 
@Path("/login") 
@Consumes({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML}) 
@Produces(MediaType.APPLICATION_JSON) 
public Response login(LoginRequest request) throws JsonGenerationException, JsonMappingException, IOException; 
} 

а реализация как ниже

public class SampleImpl implements Sample{ 

@Context 
private HttpHeaders headers; 

@Autowired 
CamelContext context; 

public Response handshake() 
{ 
    System.out.println("HandShake Executed Successfully"); 
    return Response.status(Status.OK).entity("This is a Message after Routing").build(); 
} 

public Response login(LoginRequest request) throws JsonGenerationException, JsonMappingException, IOException { 
    System.out.println("The Rquest objecr is Received "+request); 
    return Response.status(Status.OK).entity(mapper.writeValueAsString(request)).build(); 
} 

}

Маршрут

<camel:from uri="cxfrs:bean:SampleRestEndPoint?bindingStyle=SimpleConsumer"></camel:from> 

направляет его в implementati на. Но так как реализация возвращает объект ответа, я запутался, как строить маршруты вокруг этого.

  1. Когда вызов приходит в реализации, как я могу выполнить другие маршруты и послал ответ обратно? .В этом случае реализация возвращает пользовательский объект.
  2. Как другие маршруты прикреплены к маршруту CXF ?.
  3. Должно ли мое воплощение CXF всегда возвращать тип пустоты ?. Как я вижу , что, чтобы получить доступ к обмену объект верблюду нужно типу возвращения к аннулируются
  4. ли я полностью игнорировать реализацию и идти с «в» шаги и изменить его в обменном теле для требуемого ответа? ,

Любые указатели будут оценены.

ответ

0

@GauthamHonnavara - то есть реализация WebService JS с процессором, однако, ассоциированным оно не assosiate любого прямого пути к endpoint.Also моего вопросу конкретно к JAX-RS, где вы не можете создать класс обслуживания из wsdl.

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

Таким образом, чтобы избежать этого создать простой интерфейс с продюсерским потребителя и т.д., так же, как в моем вопросе, а затем сделать каждый метод недействительным, если вы хотите, чтобы ввести биржу (если это необходимо.) И использовать ниже конфигурации

<!-- Created the CXF End Point For the Calls to Come IN --> 
<cxf:rsServer id="RestEndPoint" address="/rest" 
    serviceClass="com.poc.camel.cxf.service.incoming.xxx" 
    loggingFeatureEnabled="true" loggingSizeLimit="20"> 
    <cxf:providers> 
     <bean class="org.codehaus.jackson.jaxrs.JacksonJsonProvider" > 
      <!-- <constructor-arg ref="customObjectMapper" type="org.codehaus.jackson.map.ObjectMapper"/> --> 
     </bean> 
    </cxf:providers> 
</cxf:rsServer> 

Trick должен использовать тег класса обслуживания. Если интерфейс предоставляется там, ему не нужна конкретная реализация от CXF.

Надеюсь, это поможет. Дайте мне знать

0

Чувак, посмотрите на это - http://bushorn.com/camel-cxf-geocoder-example/

Приведенный выше пример не ОТДОХНУТЬ, хотя, но использование CXF с маршрута верблюд такое же.

Я буду делать эти обязательные шаги:

  1. Избегайте бобы/пользовательские классы - попробуйте использовать рамочный верблюд возможность.

  2. Использование XML - Spring/Blueprint DSL

+0

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

0

Пожалуйста, обратитесь к следующей теме.

Apache Camel and web services

Я успешно реализован потребление веб-служб с помощью верблюда и Apache CXF. Если у вас есть сомнения, я могу вам помочь.

Спасибо, Gautham