[
https://issues.jboss.org/browse/JBWS-3792?page=com.atlassian.jira.plugin....
]
Marc H. updated JBWS-3792:
--------------------------
Attachment: jbws3792-external-wsdl.war
jbws3792-ws-impl.war
jbws3792_example_src.tar.gz
If it is not a bug, then it would be a really useful feature :-)
Here are two war archives:
- jbws3792-external-wsdl.war publishes two WSDL files (without providing any
implementation): jbws3792.wsdl and import.wsdl. The former doing a import of the latter
(import.wsdl) using an absolute location (wsdl definitions were generated with CXF
java2ws).
- jbws3792-ws-impl.war, provides a web-service implementation (automatically generated
with CXF tools) targetting the WSDL file jbws3792.wsdl published in
jbws3792-external-wsdl.
When deploying both archives on glassfish-4.1 (EE profile) using Metro RI, the service
will deploy and works just fine.
When deploying both archives on Wildfly 9.0.0-Alpha1, deployment will fail as depicted in
SOAPAddressWSDLParser ( JBWS022087: Failed to read
http://localhost:8080/jbws3792-external-wsdl/http://localhost:8080/jbws37...:
http://localhost:8080/jbws3792-external-wsdl/http://localhost:8080/jbws37...
)
I also add the source for both archives.
I perfectly understand that, according to the specs, WSDL files must be packaged with the
module. I even think that JAX-WS mandates the wsdlLocation of being a relative URL for
endpoint implementation.
Nevertheless, relying on an externally published wsdl is extremelly usefull when you need
to provide a mocked implementation of some services without suffering the burden to
dump/rewrite the WSDL files at each build.
Would it be relevant to open a new feature request to address this?
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
Fix For: jbossws-cxf-5.0
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);
}
}
--
This message was sent by Atlassian JIRA
(v6.3.1#6329)