Hi Guillaume, 

Thanks for the response. See inline 

On Tue, 2007-02-20 at 03:50 +0100, Guillaume Nodet wrote:

> This is not possible currently.  However, I don't think such an endpoint
> can be described using a single WSDL.  I think the only solution would
> be to define a single service with 3 different endpoints, each one
> bound to a different port type, but this is not supported yet.

Yes that was what I was thinking, ie, the three endpoints are the one
service.


> Why not implementing a router component which would be a bit
> more intelligent than the EIP xpath router, by looking through the
> WSDLs  of the JBI endpoints and selecting the endpoint that implements
> the needed operation ?  I think it would be better suited as a standalone
> component rather than embedding this logic in the http BC or container
> itself (though, I guess it may be argued).
> 

This is a great idea. Quite a clean solution i feel.
So .. the next question is, how do you see this working?

I have a few scenarios that I think this EIP could / needs to cover.

1. Technically, how should the EIP router decide what the operation of
the incoming message. (this is really a question of, where does the http
BC put the operation as supplied from the client)
        if the "operation" is not supplied .. are these valid ?
        (a) locate the operation via normal servicemix means
        (b) if not there, look at the "RootNode" of the request
        (c) some other means ?

2. The endpoints that it is "attached" to is statically defined. (or
would we want this to be a dynamic type of "thing")

> Not really sure about that.  I'm not sure that putting some routing strategy
> inside the http BC is a good idea.  As explained earlier, i'd rather try to
> create a custom (or generic) router based on the EIP abstract router ...
> What do you think ?

Totally agree.


> You could go as far as defining an interface for a single operation ; each
> JBI endpoint would implement one or more interface, and routing could
> happen transparently, just using interface routing.  In such a case, we
> may be able to find a way to say that servicemix-http would send the
> exchange to the interface that implement the operation invoked, thus
> allowing all the endpoints implementing this interface to receive the
> exchange.  I don't think this is really possible with WSDL 1.1
> unfortunately.

This was the thought I had, just could not pen it in words. Why is it
not possible with WSDL 1.1 ?

Correct me If im wrong, but the interface == the portType in WSDL 1.1 
and you can have multiple PortTypes.
        (.. and I have seen just an interfaceName attribute in 
         config ..  that confused me)
I guess (even after reading the JBI spec many times) the relationship
between wsdl 1.1/2 and JBI is very hazy and also how it is implemented
in servicemix is a bit unclear to me. Has anyone written some nice short
descriptions on this area ? 




Reply via email to