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 ?