]
R Searls commented on JBWS-3792:
--------------------------------
Commit patch to SOAPAddressWSDLParser
JBossWS: wsdl:import always handled as relative location
--------------------------------------------------------
Key: JBWS-3792
URL:
https://issues.jboss.org/browse/JBWS-3792
Project: JBoss Web Services
Issue Type: Bug
Components: jbossws-cxf
Affects Versions: jbossws-cxf-4.3
Reporter: Marc H.
Assignee: R Searls
Attachments: JBWS-3792_java.net.URL_proposal.patch, jbws3792-external-wsdl.war,
jbws3792-ws-impl.war, jbws3792_example_src.tar.gz
As described in this thread:
https://community.jboss.org/thread/240821
wsdl:import directive seems to be always resolved as a relative location.
For example, this statement:
<wsdl:import
namespace="http://foo.bar.com/foo.bar.Service"
location="http://foo.bar.com/Service.svc?wsdl=wsdl0"/>
May result in this URL being resolved:
http://foo.bar.com/http://foo.bar.com/Service.svc?wsdl=wsdl0
This prevents the WSDL file from being parsed.
This behavior seems to originate from:
org.jboss.ws.common.deployment.SOAPAddressWSDLParser, line 211 in v2.3.0.Final and current
trunk:
} else if (match(reader, WSDL_NS, IMPORT)) {
final String location = reader.getAttributeValue(null, LOCATION);
final String url = wsdlUrl.toString();
final String newUrl = url.substring(0, url.lastIndexOf("/") +
(location.startsWith("/") ? 0 : 1)) + location;
if (!metadata.getImports().containsKey(newUrl)) {
metadata.getImports().put(newUrl, false);
}
}