Comment consommer un web service SOAP dans un Mulet de Flux?

Je commence avec Mule flux et vous avez vu la j'ai vu cette page http://www.mulesoft.org/documentation/display/MULE3CONCEPTS/Using+Mule+avec+Web+Services et http://www.mulesoft.org/documentation/display/MULEWS/Consuming+SAVON+Web+Services+en+de Mule cette oe trop. Ils n'ont pas été d'une grande aide. Actuellement, j'ai une simple mule flux comme indiqué ci-dessous.

Définition de flux

<?xml version="1.0" encoding="UTF-8"?>

<mule xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:http="http://www.mulesoft.org/schema/mule/http"
    xmlns:cxf="http://www.mulesoft.org/schema/mule/cxf" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
    xmlns:spring="http://www.springframework.org/schema/beans" xmlns:core="http://www.mulesoft.org/schema/mule/core"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="CE-3.2.1"
    xsi:schemaLocation="
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd 
http://www.mulesoft.org/schema/mule/cxf http://www.mulesoft.org/schema/mule/cxf/current/mule-cxf.xsd 
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd ">
    <flow name="EchoFlow" doc:name="EchoFlow">
        <http:inbound-endpoint exchange-pattern="request-response"
            host="localhost" port="8081" path="service/echoflow" doc:name="HTTP" />
        <cxf:jaxws-client operation="" serviceClass="com.myapp.demo.ServiceAImplService" 
            doc:name="SOAP"/>
        <outbound-endpoint address="http://localhost:8080/ServiceA/services/" doc:name="Generic"/>
    </flow>
</mule>

Je suis à l'aide de Mule studio. Il y a un HTTP entrante point de terminaison qui attend une réponse. J'ai essayé de configurer un jax-ws client qui va appeler le service web réelle. Le WSDL du service est:

fichier wsdl

<?xml version='1.0' encoding='UTF-8'?><wsdl:definitions name="ServiceAImplService" targetNamespace="http://service.demo.myapp.com/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://service.demo.myapp.com/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<wsdl:types>
<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://service.demo.myapp.com/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<import namespace="http://service.demo.myapp.com/" schemaLocation="http://localhost:8080/ServiceA/services/ServiceAImplPort?xsd=serviceaimpl_schema1.xsd"/>
</schema>
</wsdl:types>
<wsdl:message name="helloResponse">
<wsdl:part element="tns:helloResponse" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="hello">
<wsdl:part element="tns:hello" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:portType name="IServiceA">
<wsdl:operation name="hello">
<wsdl:input message="tns:hello" name="hello">
</wsdl:input>
<wsdl:output message="tns:helloResponse" name="helloResponse">
</wsdl:output>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="ServiceAImplServiceSoapBinding" type="tns:IServiceA">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="hello">
<soap:operation soapAction="urn:Hello" style="document"/>
<wsdl:input name="hello">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="helloResponse">
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="ServiceAImplService">
<wsdl:port binding="tns:ServiceAImplServiceSoapBinding" name="ServiceAImplPort">
<soap:address location="http://localhost:8080/ServiceA/services/ServiceAImplPort"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>

Je ne suis pas trop sûr au sujet de la configuration d'un jax-ws client comme vous pouvez le voir. Alors, comment exactement ce que je consommer un web service SOAP dans ce flux.


Ma deuxième question: Comment puis-je transformer la charge utile de faire un appel à partir d'un web-service à un autre, web services (SOAP). Quel sera le débit?


Et enfin, comment puis-je fusionner les charges? Dites, j'ai trois services web appelé en parallèle et leurs réponses reviennent tous ensemble. Comment puis-je fusionner les charges utiles afin que je puisse le lire dans un autre service (après combinaison des réponses de plusieurs services en parallèle)?



Quel est l'équivalent de la mise en œuvre de

       <pattern:web-service-proxy name="ex-proxy"
inboundAddress="http://localhost:8081/xxx"
outboundAddress="http://xx.xx.com/XXX_WS/xxxWService.asmx" /> 

à l'aide de CXF de proxy de service/client? Et cela m'amène à une autre question, quand utiliser CXF-service et lors de l'utilisation de CXF-client? Et enfin, est-il une documentation détaillée ou d'exemple/un tutoriel pour la Mule de Flux de l'Orchestration?

réponse vous donne de bons indices. Une chose qui n'est pas clair dans votre question est: voulez-vous exposer l'ensemble du service lui-même? Comme un autre service web ou tout simplement comme une simple ressource HTTP (comme actuellement indiqué dans votre exemple)?
Je suis conscient des composants. Cependant, je ne suis pas en mesure de tom configurer correctement car il n'y a pas de documentation/exemple! Un simple CXF proxy exemple ira un long chemin en aidant à moi. Je ne vais jamais demander autour pour le code, mais je suis coincé avec ce pour une semaine, sans aucun progrès!
Je vois que le fonctionnement de l'attribut de jaxws-client "", ce qui peut ne pas être juste. Avez-vous essayé avec l'aide de "bonjour" à la place? Quelle est l'erreur que vous obtenez?
Eh bien, j'ai déménagé à plus judicieux exemple depuis (non pas un de ces ServiceA ServiceB spaghetti). Aussi, j'ai pris @petter conseils et vais pour proxy à l'aide de CXF. Mais un coup d'oeil à cette page mulesoft.org/documentation/display/MULE3USER/... et je suis encore perdu! Je suis la mise à jour de la question.
cxf:jaxws-service pour exposer des services web de Mule de JAX-WS/JAXB annoté classes. cxf:jaxws-client est de la consommation à distance de services web qui les lient à JAX-WS/JAXB annoté classes.

OriginalL'auteur r3st0r3 | 2012-04-07