I tend to agree with Polar that it is kind of weird. I thought the idea was
that a Conduit is supposed to be a Conduit to a particular endpoint, not
many.

BUT there is the practical issue of configuration. We may want to configure
our conduit based on:
1. The particular jax-ws client & the wsdl port it is talking to
2. The particular URL
3. Both 1 & 2.

The problem with #1 is that you have to put in the logic in conduits that we
already have. The problem with #2 is that we can't have different clients
talk to the same url with different settings.

I guess we could go down the route of:
- If a different EPR is specified create a new Conduit in the
MessageSenderInterceptor
- Apply the configuration to the new conduit like it would be applied to the
original conduit

But wouldn't that be pretty much equivalent (at least for the HTTP case)?

- Dan

On 3/12/07, Glynn, Eoghan <[EMAIL PROTECTED]> wrote:



> -----Original Message-----
> From: Polar Humenn [mailto:[EMAIL PROTECTED]
> Sent: 12 March 2007 20:28
> To: [email protected]
> Subject: http: URLs and setepURL
>
> In the HttpConduit I have noticed that the "url" for the
> conduit is set up in the constructors from the EndpointInfo,
> or the EndpointReferenceType.
>
> However, it maybe totally overridden in send(Message) by the
> Message.ENDPOINT_ADDRESS on the message. What purpose does this have?


I'd imagine the purpose is to support the standard JAX-WS mechanism
whereby the application can explicitly control the target address by
setting the BindingProvider.ENDPOINT_ADDRESS_PROPERTY on the request
context.


> Shouldn't this conduit ONLY be sending messages to the
> endpoint designated (configured) for it?


Not necessarily.

The purpose of the BindingProvider.ENDPOINT_ADDRESS_PROPERTY is to give
the client application the flexibility to override the target endpoint
address if necessary. For example the service may have migrated to a new
address, but the WSDL or annotated Java available to the client app may
be out-of-date.


> Furthermore, the code fragment in setupURL
>
>         String result = value != null ? value : url.toString();
>          if (null != pathInfo && !result.endWith(pathInfo)) {
>                 result = result + pathInfo;
>         }
>
> has a bit of a caveat in that you'd never be able to send a
> request to a location of  "http://somewhere.com/xx/xx";,
> specified by a URL of "http://somwhere.com/xx"; a
> Message.PATH_INFO property of "/xx".


If you think this is an important usage scenario, feel free to submit a
patch with a fix.


> Now some might say "why would you want to do that?" I know
> "xx" doesn't make sense to most, but what about,
>
>          "http://somewhere.com/path/to/parent/..";
>
> as a URL location built up from other things you might have
> dealt with, and you want to set a path from there to be "/.."
> Then you are in a completely different location than you want to be.
>
> Is there a specific "contract" are placed on
> Message.ENDPOINT_ADDRESS, Message.PATH_INFO for this
> situation, or its it a bug?
>
> Cheers,
> -Polar
>
>




--
Dan Diephouse
Envoi Solutions
http://envoisolutions.com | http://netzooid.com/blog

Reply via email to