2

URL リスナーを SOAP Web サービスにリダイレクトするために、キャメルで簡単なコードを作成したいと思います。シンプルな PHP helloWorld SOAP Web サービスを利用できます。http://localhost:8080/test入力して、外部 SOAP Web サービスにルーティングしたいと考えています。最終的な目標は、soap を REST/JSON に変換することです。

これが私の 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>

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

しかしhttp://127.0.0.1:8080/test、Web ブラウザーに入力すると、「ページを読み込めませんでした」という空白のページが表示されます。また、同じ問題で PHP SOAP クライアント スクリプトを試してみましたhttp://127.0.0.1:8080/test(外部エンティティ " http://127.0.0.1:8080/test" の読み込みに失敗しました)。

誰が私が間違ったことを説明できますか?

ありがとう !

4

1 に答える 1

0

いくつかのこと。トレースをオンにして、ログを確認します。あなたの問題はcxf側にあると確信しています。

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

この例のように、エンドポイントで詳細を指定する必要もあります

     <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" />
于 2013-08-19T03:27:32.637 に答える