2

I would like to do a simple code with camel, to redirect an URL listener to a soap web service. I have a simple PHP helloWorld SOAP web service available. I would like to type http://localhost:8080/test and to be routed to the external SOAP web service. The final goal is to convert soap to REST/JSON.

Here is my camel-context.xml :

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:cxf="http://camel.apache.org/schema/cxf"
    xmlns:camel="http://camel.apache.org/schema/spring" xmlns:http-conf="http://cxf.apache.org/transports/http/configuration"
    xsi:schemaLocation="
             http://www.springframework.org/schema/beans 
             http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
             http://camel.apache.org/schema/spring 
             http://camel.apache.org/schema/spring/camel-spring.xsd
             http://camel.apache.org/schema/cxf 
             http://camel.apache.org/schema/cxf/camel-cxf.xsd
             http://cxf.apache.org/transports/http/configuration 
             http://cxf.apache.org/schemas/configuration/http-conf.xsd">

    <import resource="classpath:META-INF/cxf/cxf.xml" />

<cxf:cxfEndpoint id="helloEp"                     
                   address="http://test.mydomain.com/soap/hello.php"
                   serviceClass="com.seb.helloEndPoint"
                   wsdlURL="http://test.mydomain.com/soap/hello.php?wsdl"/>

  <camelContext xmlns="http://camel.apache.org/schema/spring">
    <package>com.seb</package>
    <route>
        <from uri="jetty://http://0.0.0.0:8080/test"/>               
        <to uri="cxf:bean:helloEp"/>
    </route>
  </camelContext>
</beans>

And a part of the result when typing camel:run :

[pache.camel.spring.Main.main()] MainSupport                    INFO  Apache Camel 2.9.0 starting
[pache.camel.spring.Main.main()] CamelNamespaceHandler          INFO  OSGi environment not detected.
[pache.camel.spring.Main.main()] SpringCamelContext             INFO  Apache Camel 2.9.0 (CamelContext: camel-1) is starting
[pache.camel.spring.Main.main()] ManagementStrategyFactory      INFO  JMX enabled. Using ManagedManagementStrategy.
[pache.camel.spring.Main.main()] ultManagementLifecycleStrategy INFO  StatisticsLevel at All so enabling load performance statistics
[pache.camel.spring.Main.main()] AnnotationTypeConverterLoader  INFO  Found 3 packages with 15 @Converter classes to load
[pache.camel.spring.Main.main()] DefaultTypeConverter           INFO  Loaded 168 core type converters (total 168 type converters)
[pache.camel.spring.Main.main()] AnnotationTypeConverterLoader  INFO  Loaded 5 @Converter classes
[pache.camel.spring.Main.main()] DefaultTypeConverter           INFO  Loaded additional 23 type converters (total 191 type converters) in 0.023 seconds
[pache.camel.spring.Main.main()] ReflectionServiceFactoryBean   INFO  Creating Service {http://seb.com/}helloEndPointService from WSDL: http://test.mydomain.com/soap/hello.php?wsdl

But when I type http://127.0.0.1:8080/test in my web browser I have a "Could not load the page" blank page. I also tried with a PHP SOAP client script on http://127.0.0.1:8080/test and same issue (failed to load external entity "http://127.0.0.1:8080/test").

Anyone could explain me what I did wrong ?

Thanks !

SlumTheSlug
  • 115
  • 13
  • Can you try a simple telnet test like: telnet localhost 8080 and see if you have a listener on that port? Also 0.0.0.0 should listen on all interfaces. Sometimes I have found that I had to use the actual machine IP address rather than the loopback address. Can you try those as well? – Yogesh Chawla Jan 17 '13 at 00:04

1 Answers1

0

Couple of things. Turn on tracing and look at the logs. I'm pretty sure your issue is on the cxf side of things.

<camelContext trace="true" xmlns="http://activemq.apache.org/camel/schema/spring">

You also need to specify more details in your endpoint like this example

     <cxf:cxfEndpoint id="serviceEndpoint" address="http://localhost:9000/SoapContext/SoapPort"
        wsdlURL="testutils/hello_world.wsdl"
        serviceClass="org.apache.hello_world_soap_http.Greeter"
        endpointName="s:SoapPort"
        serviceName="s:SOAPService"
    xmlns:s="http://apache.org/hello_world_soap_http" />
Tracy Snell
  • 1,278
  • 10
  • 8