2015-04-10 4 views
0

Мне нужно вызвать веб-службу JAX-WS, доступную на WildFly 8. Я начал с простого примера, чтобы начать. Вот мой веб-служба:Вызов веб-службы JAX-WS от Camel

import javax.jws.WebService; 
@WebService 
public class HelloWorld implements Hello{ 

    @Override 
    public String greet(String s) { 

     return "Hello "+s; 
    } 

} 

WSDL, доступен по адресу: http://localhost:8080/DemoWS/HelloWorld?wsdl

Взглянув на Tomcat-CXF Например, я закодирован следующий маршрут:

public class CamelRoute extends RouteBuilder { 


    private String uri = "cxf:http://localhost:8080/helloWorld?serviceClass=com.sample.HelloWorld"; 

    @Override 
    public void configure() throws Exception { 
     from(uri) 
      .to("log:input") 
      .recipientList(simple("direct:${header.operationName}")); 

     from("direct:greet") 
      .process(new Processor() { 
       public void process(Exchange exchange) throws Exception { 

        String id = exchange.getIn().getBody(String.class); 
        exchange.getOut().setBody(id); 
       } 
      }) 
      .to("log:output"); 


    } 
} 

Запустив приведенный выше код в контексте Camel, возвращается следующая ошибка:

Exception in thread "main" org.apache.camel.FailedToCreateRouteException: Failed to create route route1: Route[[From[cxf:http://localhost:8080/helloWorld?serviceClas... because of Failed to resolve endpoint: cxf://http://localhost:8080/helloWorld?serviceClass=com.sample.HelloWorld due to: No component found with scheme: cxf 
    at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:177) 
    at org.apache.camel.impl.DefaultCamelContext.startRoute(DefaultCamelContext.java:731) 
    at org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:1803) 
    at org.apache.camel.impl.DefaultCamelContext.doStartCamel(DefaultCamelContext.java:1589) 
    at org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:1453) 
    at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:60) 
    at org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:1421) 
    at com.sample.Main.main(Main.java:15) 
Caused by: org.apache.camel.ResolveEndpointFailedException: Failed to resolve endpoint: cxf://http://localhost:8080/helloWorld? 

serviceClass = com.sample.HelloWorld из-за: Компонент не найден со схемой: cxf

Кажется, я даже не могу его вызывать. Любая помощь ? Thannks

+2

Вам нужно добавить компонент camel-cxf в свой путь к классу. Если вы используете Maven, добавьте его как зависимость. –

+1

Если вам интересно, вот [Весна верблюда] (http://www.mastertheintegration.com/camel/camel-and-web-services/calling-a-jax-ws-web-service-from-camel .html), который выполняет именно то, что вы запрашиваете. –

+0

Если вы хотите вызвать веб-сервис с верблюжьего маршрута, вам нужно использовать вместо него («cxf: xxx») вместо («cxf: xxx»). –

ответ

0
<dependency> 
    <groupId>org.apache.camel</groupId> 
    <artifactId>camel-cxf</artifactId> 
</dependency> 
+0

, пожалуйста, объясните подробнее о своем ответе –