[ 
http://issues.apache.org/jira/browse/AXIS2-1087?page=comments#action_12431027 ] 
            
Lori VanGulick commented on AXIS2-1087:
---------------------------------------

This is still failing in revision 437740.

Here is the structure of the wsdl and xsd:
WEB-INF/wsdl/EchoService.wsdl
WEB-INF/wsdl/porttype/Echo.wsdl
WEB-INF/wsdl/xsd/Echo.xsd

EchoService.wsdl imports "porttype/Echo.wsdl."  This works fine (using a custom 
WSDLLocator).
Echo.wsdl imports "../xsd/Echo.xsd".  This fails with the following exception:

Exception: org.apache.axis2.AxisFault: 
org.apache.ws.commons.schema.XmlSchemaException: 
C:\axis2\modules\kernel\target\test-classes\WEB-INF\xsd\Echo.xsd (The system 
cannot find the path specified.); nested exception is: 
        java.lang.RuntimeException: 
org.apache.ws.commons.schema.XmlSchemaException: 
C:\axis2\modules\kernel\target\test-classes\WEB-INF\xsd\Echo.xsd (The system 
cannot find the path specified.)

The problem is in WSDL11ToAxisServiceBuilder.copyExtensibleElements.  Around 
line 1557:

            } else if (wsdl4jElement instanceof Schema) {
                Schema schema = (Schema) wsdl4jElement;
                // just add this schema - no need to worry about the imported
                // ones
                axisService.addSchema(getXMLSchema(schema.getElement(),
                        wsdl4jDefinition.getDocumentBaseURI()));

The baseURI passed to getXMLSchema is from the definition which cooresponds to 
EchoService.wsdl.  What we want is the baseURI from Echo.wsdl, since that is 
the file that is importing the schema.  I have tried fixing this by using the 
baseURI from the schema Element instead of from the base definition, like this:

                axisService.addSchema(getXMLSchema(schema.getElement(),
                        schema.getDocumentBaseURI()));

This change does work for relative URIs, like in my testcase.  But I think it 
might introduce problems with absolute URIs.  I am still looking at it.   

> CLONE -Problem with resolving imported schemas from WSDL11ToAxisServiceBuilder
> ------------------------------------------------------------------------------
>
>                 Key: AXIS2-1087
>                 URL: http://issues.apache.org/jira/browse/AXIS2-1087
>             Project: Apache Axis 2.0 (Axis2)
>          Issue Type: Bug
>          Components: core
>            Reporter: Lori VanGulick
>         Assigned To: Ajith Harshana Ranabahu
>
> When importing nested schemas with a relative path, I have noticed a problem 
> with the base URI that the WSDL11ToAxisServiceBuilder passes to the 
> getXMLSchema method. Considering the structure:
> WEB-INF/wsdl/porttype/Echo.wsdl
> and
> WEB-INF/wsdl/xsd/Echo.xsd
> If Echo.wsdl has an import statement like "../xsd/Echo.xsd", the schema will 
> fail to import. The issue seems to be that the WSDL11ToAxisServiceBuilder 
> passes the string "WEB-INF/wsdl" as the base URI. This causes the 
> implementation of the org.apache.ws.commons.schema.resolver.URIResolver not 
> to be able to resolve the relative location with the base URI. I wanted to 
> point out this problem, and I am not looking for an immediate patch.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to