Hello,

First of all, thanx for the previous help Guillaume.
Now I've got some more questions. Our setup is as follows (see attachment) :
There are (currently) 4 WebServices available. A BPEL process that is running on the PXE needs to communicate with all four of the services. Before any message from the BPEL process is passed to the appropriate WS, it must pass first through a single logging-component and then via a SAAJ-binding-component to the correct endpoint.

Currently, we could realize this setup as follows :
- The PXE-system.xml of the BPEL process exports 4 ports, each for one external WebService.
- We had to create 4 logging components (as service assemblies in a lightweight container), where the servicename and endpoint corresponds to the exported ports of the pxe-system.xml
- Then each logging component forwards the message through a SAAJ component to each WebService (resulting in 4 SAAJ components)
- The logging component removes the SOAP-header from the SOAP-messages that are returned from the WebServices.
- All communication is synchronous : the client gets the resulting answer in a synchronous way

Problems :
- We want to have only one logging component and one SAAJ-component instead of 4 each
- We would like to replace the SAAJ-component with a SOAP-component because the WebServices return SOAP answers.
- We would like to have a loose coupling to the WSDLs of the WebServices (so we won't have to hard code the locations of the WSDLs)

Questions :
- What are the possibilities in ServiceMix to realize the scenario as dynamically as possible? In the examples in ServiceMix, the links between endpoints are always hard-coded. Is it possible to route more dynamically? Are there code examples available of this?
- Should the PXE-system.xml export only one port (the one of the logger component)? And must the messages then be content-based-routed after they pass through
   the logger? Or are there other possibilities?
- Which HTTP SOAP-component from the 3.0 snapshot could replace the SAAJ-binding to remove and add the SOAP-headers and allow the synchronous communication?
- Is it possible to realize this setup by registering the WSDLs of the WebServices as endpoints in one SOAP-binding? In the previous answer, you  suggested to bundle two service units into a single service assembly. Does this mean that it is possible to create a service unit for every WSDL from the external WebServices and bundle them into a SA? So in our case, we make 4 service units (for each of the WebServices) and combine them into a service assembly together with the HTTP SOAP-components to make 4 JBI-endpoints available for the logging component?
- Can endpoints be created on-the-fly? If for example a UDDI registry is available (and polled once in a while), can endpoints be created and removed as more or less WebServices are registered in the UDDI? Or are there any alternatives available in ServiceMix? And in this way, can new service units be created and on-the-fly bundled into an existing service assembly?

Thanks in advance,
Tom


Guillaume Nodet schreef:
Hi Tom,

A BPEL engine integrated in a JBI container should not directly invoke
external web services over http.  It should go through an http binding
component.
In the pxe-system.xml, you can specify services to export (with the <exports
/> tag).  It means that PXE will send a JBI MessageExchange to the specified
JBI endpoint to handle the invocation.  The binding informations on the wsdl
are not used by PXE.  To route your request to the url you want, you have to
use a lightweight http or soap binding (see http://servicemix.org/HTTP),
specifying the informations you need (service and endpoint name, url).
You can also use the servicemix-http component to deploy a service unit
(using a wsdl), which would use the binding informations to retrieve the url
of the service and bundle the two service units in a single service
assembly.

Cheers,
Guillaume Nodet


On 2/27/06, Tom <[EMAIL PROTECTED]> wrote:
  
Hello all,

I'm relatively new to ServiceMix. I am trying to get the following
working :
1. A BPEL process (that is deployed on the PXE-engine in ServiceMix)
generates result messages and these should be routed to an external Java
WebService (later multiple webservices depending on the resulting
message). Normally, based on the binding in the WSDL from the extrenal
webservice, the message would be routed from the JBI-endpoint (of the
BPELprocess deployed in ServiceMix) to the URL specified in this
binding. How is it possible to let the routing first go to the
http-binding component and then to the URL? Is there a dynamic solution
or does it have to be hard-coded?
2. Additional, when multiple external webservices must be invoked : When
the messages pass from the BPEL process through the http-binding
component, how can this http-binding component determine which external
webservice to invoke? Should the binding component act as a
content-based router or are there alternatives?

Thanks in advance.
Greetz,

Tom

    

  

Reply via email to