You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cxf.apache.org by "Maciej Pietroń (JIRA)" <ji...@apache.org> on 2013/04/08 14:47:15 UTC

[jira] [Updated] (CXF-4952) Initiating java web service client passing local WSDL file with relative path to XSD in schemaLocation

     [ https://issues.apache.org/jira/browse/CXF-4952?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Maciej Pietroń updated CXF-4952:
--------------------------------

    Description: 
I have WSDL and XSD files stored localy. Using CXF (wsdl2java tool) - I have generated client service classes. To service class constructor I pass local path to WSDL file like this:

MyService(MyService.class.getResource("my_wsdl_file.wsdl"), someQName)

And this part work fine - I mean path passing to service constructor is fine. Problem occurs while parsing the WSDL file. In WSDL file there is:

<xsd:schema xmlns:xsd="http://www.some_schema_address.org/XMLSchema">
    <xsd:import namespace="http://www.some_schema_address.org/XMLnamespace" schemaLocation="my_xsd_file.xsd">
    </xsd:import>
</xsd:schema>

The my_xsd_file.xsd file is stored in the same location as my_wsdl_file.wsdl, but parser cannot find it. It appears that relative paths weren't being resolved relative to the current directory the WSDL was located in.

I am using WebSphere Application Server. Locations of WSDL and XSD files in the deployed application are:

C:\Program Files\IBM\WebSphere\AppServer\profiles\AppSrv01\installedApps\myCellName\myApplicationName.ear\myWebserviceName.jar\org\some_package\my_wsdl_file.wsdl
C:\Program Files\IBM\WebSphere\AppServer\profiles\AppSrv01\installedApps\myCellName\myApplicationName.ear\myWebserviceName.jar\org\some_package\my_wsdl_file.xsd

Parser searching XSD file in:

C:\Program Files\IBM\WebSphere\AppServer\profiles\AppSrv01\my_wsdl_file.xsd

I was checking sources a bit (I didn't checked it thoroughly, so in this part I could be wrong), and it seems that class: 
com.ibm.wsdl.xml.WSDLReaderImpl take relative paths from class wsdlLocator that was passed to readWSDL method by org.apache.cxf.wsdl11.WSDLManagerImpl.loadDefinition(String url). 
There root is obtaining by wsdlLocator.getBaseInputSource() method, witch in fact return InputSource.getSystemId() instead of location on WSDL file.     

  was:
I have WSDL and XSD files stored localy. Using CXF (wsdl2java tool) - I have generated client service classes. To service class constructor I pass local path to WSDL file like this:

MyService(MyService.class.getResource("my_wsdl_file.wsdl"), someQName)

And this part work fine - I mean path passing to service constructor is fine. Problem occurs while parsing the WSDL file. In WSDL file there is:

<xsd:schema xmlns:xsd="http://www.some_schema_address.org/XMLSchema">
    <xsd:import namespace="http://www.some_schema_address.org/XMLnamespace"
                schemaLocation="my_xsd_file.xsd">
    </xsd:import>
</xsd:schema>

The my_xsd_file.xsd file is stored in the same location as my_wsdl_file.wsdl, but parser cannot find it. It appears that relative paths weren't being resolved relative to the current directory the WSDL was located in.

I am using WebSphere Application Server. Locations of WSDL and XSD files in the deployed application are:

C:\Program Files\IBM\WebSphere\AppServer\profiles\AppSrv01\installedApps\myCellName\myApplicationName.ear\myWebserviceName.jar\org\some_package\my_wsdl_file.wsdl
C:\Program Files\IBM\WebSphere\AppServer\profiles\AppSrv01\installedApps\myCellName\myApplicationName.ear\myWebserviceName.jar\org\some_package\my_wsdl_file.xsd

Parser searching XSD file in:

C:\Program Files\IBM\WebSphere\AppServer\profiles\AppSrv01\my_wsdl_file.xsd

I was checking sources a bit (I didn't checked it thoroughly, so in this part I could be wrong), and it seems that class: 
com.ibm.wsdl.xml.WSDLReaderImpl take relative paths from class wsdlLocator that was passed to readWSDL method by org.apache.cxf.wsdl11.WSDLManagerImpl.loadDefinition(String url). 
There root is obtaining by wsdlLocator.getBaseInputSource() method, witch in fact return InputSource.getSystemId() instead of location on WSDL file.     

    
> Initiating java web service client passing local WSDL file with relative path to XSD in schemaLocation
> ------------------------------------------------------------------------------------------------------
>
>                 Key: CXF-4952
>                 URL: https://issues.apache.org/jira/browse/CXF-4952
>             Project: CXF
>          Issue Type: Bug
>            Reporter: Maciej Pietroń
>
> I have WSDL and XSD files stored localy. Using CXF (wsdl2java tool) - I have generated client service classes. To service class constructor I pass local path to WSDL file like this:
> MyService(MyService.class.getResource("my_wsdl_file.wsdl"), someQName)
> And this part work fine - I mean path passing to service constructor is fine. Problem occurs while parsing the WSDL file. In WSDL file there is:
> <xsd:schema xmlns:xsd="http://www.some_schema_address.org/XMLSchema">
>     <xsd:import namespace="http://www.some_schema_address.org/XMLnamespace" schemaLocation="my_xsd_file.xsd">
>     </xsd:import>
> </xsd:schema>
> The my_xsd_file.xsd file is stored in the same location as my_wsdl_file.wsdl, but parser cannot find it. It appears that relative paths weren't being resolved relative to the current directory the WSDL was located in.
> I am using WebSphere Application Server. Locations of WSDL and XSD files in the deployed application are:
> C:\Program Files\IBM\WebSphere\AppServer\profiles\AppSrv01\installedApps\myCellName\myApplicationName.ear\myWebserviceName.jar\org\some_package\my_wsdl_file.wsdl
> C:\Program Files\IBM\WebSphere\AppServer\profiles\AppSrv01\installedApps\myCellName\myApplicationName.ear\myWebserviceName.jar\org\some_package\my_wsdl_file.xsd
> Parser searching XSD file in:
> C:\Program Files\IBM\WebSphere\AppServer\profiles\AppSrv01\my_wsdl_file.xsd
> I was checking sources a bit (I didn't checked it thoroughly, so in this part I could be wrong), and it seems that class: 
> com.ibm.wsdl.xml.WSDLReaderImpl take relative paths from class wsdlLocator that was passed to readWSDL method by org.apache.cxf.wsdl11.WSDLManagerImpl.loadDefinition(String url). 
> There root is obtaining by wsdlLocator.getBaseInputSource() method, witch in fact return InputSource.getSystemId() instead of location on WSDL file.     

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira