Hello,
I am trying to determine what the value of (wsdl)soap:address attribute should
be, and to what extent that value is supposed to reflect the real URL at which
the corresponding service is avaliable.
In a WSDL, the following sample section describes a service itself:
<wsdl:service name="SomeService">
<wsdl:port name="SomePort" binding="impl:SomeBinding">
<wsdlsoap:address
location="http://companyname.com/services/SomeService"/>
</wsdl:port>
</wsdl:service>
Until today, the value I've been putting in the wsdlsoap:address attribute
looked like http://companyname.com/services/SomeService , and in fact the
service was available at a different address (for instance,
https://projectname.companyname.com/services/SomeService) Notice that both
domain name and protocol are different.
This served fine for me, since I have dev/staging/production enviroments
deployed at different domains, and some of them do not require SSL. Having a
single fake URL in wsdlsoap:location allowed me to have a single WSDL for all
different environments.
In addition, neither of SOAP request or response in fact contain the
wsdlsoap:address URL.
One of the users, however, has recently complained that the WSDL is incorrect
because the endpoint value is fake, and that only by having wsdlsoap:address
attribute pointing at a real physical service endpoint that user could connect
to it.
The only description for the this element I could find in the WSDl spec was
this:
"The SOAP address binding is used to give a port an address (a URI). A port
using the SOAP binding MUST specify exactly one address. The URI scheme
specified for the address must correspond to the transport specified by the
soap:binding."
My question is, shall the value of that attribute reflect the actual endpoint
URL? What about the protocol (http/https)? It kind of makes sence that it would
on one hand; on the other, I think that aside from the inconviniences described
above it might create a conflict of responsibilities: WSDL, that is supposed to
be designed by a developer and describe in what way what services can be
accessed, would contain a concrete deployment endpoint that is up to the IS to
define and maintain?
With Axis 1.2, I dont see any effect the value of wsdlsoap:address has on
service accessibility or speficics of accessing it. What am I missing?
Should a real endpoint be placed into WSDL? Some of the client SOAP tools seem
to attempt to use the soap:address tag value as the endpoint URL; is that a
valid point?
Thanks
Bogdan