Brent,
On Tuesday 01 April 2008, Brent Moore wrote:
I've created a JIRA [1] with an attached war for an echo service that
exhibits the behavior I'm talking about. If I understand you
correctly, the "bogushost" address should be replaced with the real
address of the service. But at least on my tomcat 5.5.23 it doesn't
happen.
I looked at the war and can duplicate the issue. I probably won't have
a chance to dig into the code and find out what is going on until Friday
though. (meetings) Couple quite thoughts:
1) As Glenn said, try using WEB-INF/wsdl/... for the wsdlLocation.
2) Put SOMETHING valid in the wsdls soap:address. Just put
in "http://localhost:8080/" or something. We MIGHT be trying to parse
whats there or something and your blank location might be confusing it.
Anyway, I can dig into it more on Friday to figure out really what it
going on.
Once it does happen, is there a way to influence which of the aliases
for the box it uses? Some of our boxes serve multiple virtual hosts.
It will use the URL from the incoming request. For example, if you hit
localhost:8080, that is what will appear in the returned wsdl. If you
hit "myhost.com", that is what will appear.
Dan
[1] http://jira.codehaus.org/browse/CXF-1497
Thanks for the help.
Brent
Daniel Kulp wrote:
If the client is grabbing the wsdl view the ?wsdl flag to the
endpoint, it SHOULD be getting a modified wsdl that has the proper
address in it. If that's not the case, that might be a bug, but it's
probably a configuration issue as I know we have several tests that
test this (and the TCK requires it to work). Thus, I'd probably like
to see a war that demonstrates this.
Also, the client can always be reconfigured post-creation to hit any
url you give it. It DOESN'T need to use the url in the wsdl. If
the container can provide a new URL, just set the
ENDPOINT_ADDRESS_PROPERY thing on the client's request context and it
will use that address instead.
Dan
On Tuesday 01 April 2008, bdm wrote:
Glen,
Thanks for the response but I may not have been clear on what I'm
trying to accomplish.
In our normal development life cycle, once code (a .war file in this
case) leaves development for test and production we do not change
anything in the code or the accompanying configuration files (spring
context, etc). All of the differences in the environments (database
connections, etc) are handled by the container - tomcat in this case.
We would like to implement the same type of configuration with our web
service deployments.
In [1] - the last sentence of note 4 reads - "Note the URL specified
in the wsdl:port section (under wsdl:service) is ignored by the
servlet container. It is used, however, by the web service client
which reads in this WSDL to determine where to route the requests."
This is exactly the problem. Yes the web service deploys correctly
and the servlet container ignores the address given in the provided
WSDL. But, the WSDL is delivered unmodified to any requesting client
with the address given in the WSDL and not the address of the service.
I tried this yesterday one last time before posting to the list using
2.0.4 of CXF.
I'm not sure if that is a bug or a feature, I'm just trying to figure
out how to implement our standard practice given the current behavior
of CXF.
Brent
Glen Mazza-2 wrote:
Note #4 of here[1] shows how the WSDL URL is created when you deploy
to an application server; as you can see, what you have in the wsdl
file is pretty much ignored web-service provider side.
For the client, it is just an issue of modifying the
ENDPOINT_ADDRESS_PROPERTY as shown in Step #7 here[2]. You can use
Spring Dependency Injection for that if helpful.
Glen
[1] http://www.jroller.com/gmazza/date/20071019#notes
[2] http://www.jroller.com/gmazza/entry/using_the_ebay_shopping_api1