this thread is about the URLs that we rewrite in the wsdl for wsdl imports and schema includes. Lets look at JIRA issue JBWS-153 for this discussion
The wsdl uses
<wsdl:types> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.dis-corp.com/xml/2005/ebiz"> <xsd:include schemaLocation="schemas/get/Get.xsd"/> </xsd:schema> </wsdl:types>
The wsdl is obtained through URL
and the include is rewritten as
<wsdl:types> <xsd:schema targetNamespace="http://www.dis-corp.com/xml/2005/ebiz" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:include schemaLocation="/ws4ee-jbws153/Order?wsdl&resource=schemas/get/Get.xsd"/> </xsd:schema> </wsdl:types>
which VB.net does not understand.
The issue is that the schemaLocation cannot be simply treated as relative URL because it results in
which is obviously invalid.
A solution recently suggested on the forums uses a predefined URL path to obtain the wsdl and its included artifacts, like this:
for the wsdl, and hence
for the included schema.
The problem with this is that the web.xml defines the servlet mapping as
<servlet-mapping> <servlet-name>Order</servlet-name> <url-pattern>/Order</url-pattern> </servlet-mapping>
and not as
<servlet-mapping> <servlet-name>Order</servlet-name> <url-pattern>/Order/*</url-pattern> </servlet-mapping>
which BTW is disallowed by the WS4EE spec.
is invalid and will not be redirected to the ServiceEndpointServlet for schema delivery to the client.
Ok, we rewrite the web.xml anyway and might want to append the missing /*. Changeing .../Order?wsdl to .../Order/wsdl would break all clients which should not be done lilght heartedly.
I seek your feedback on this "rewrite issue". Is there any possible way of avoiding complex parameter lists, which are not supported by .NET? How do other stacks do it?