You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ode.apache.org by "Matthieu Riou (JIRA)" <ji...@apache.org> on 2008/02/08 18:59:07 UTC

[jira] Created: (ODE-241) An xsd including another xsd throws a NPE on deployment

An xsd including another xsd throws a NPE on deployment
-------------------------------------------------------

                 Key: ODE-241
                 URL: https://issues.apache.org/jira/browse/ODE-241
             Project: ODE
          Issue Type: Bug
          Components: Axis2 Integration
    Affects Versions: 1.1.1
            Reporter: Matthieu Riou
             Fix For: 1.2


There's a ws-commons XmlSchema bug giving us some problems with some relative XSD includes, the original stack is reproduced below. The situation is basically:

WSDL -> XSD1 -> XSD2

The baseUri we get from the SchemaBuilder to resolve XSD2 is wrong as it's resolved relatively to the WSDL instead of XSD1. I wish it was simple to fix but actually it's not as it's more of a design issue in XmlSchema. All imports within a WSDL document (including transitive ones like we have here) are associated to a single XmlSchemaCollection. And the baseUri used for all resolving is the one of the collection. They should either have a collection per document or associate a baseUri with the document instead of the collection.

I filed a WS-COMMONS bug for this but as you can see they don't seem to get the problem: https://issues.apache.org/jira/browse/WSCOMMONS-265

15:20:11,083 DEBUG [ODEAxisService] resolveEntity: targetNamespace=http://www.agora.msa.fr/TarifMaladie schemaLocation=../XSDSchema/MatricePriseEnCharge.xsd baseUri=file:/home/mriou/dev/tools/platform/apache-tomcat-5.5.23/webapps/ode/WEB-INF/processes/TestXSD/BPMN/NewDiagram2-Pool0.wsdl
DEBUG - GeronimoLog.debug(66) | resolveEntity: targetNamespace=http://www.agora.msa.fr/TarifMaladie schemaLocation=ListeProduit.xsd baseUri=file:/home/mriou/dev/tools/platform/apache-tomcat-5.5.23/webapps/ode/WEB-INF/processes/TestXSD/BPMN/NewDiagram2-Pool0.wsdl
15:20:11,088 DEBUG [ODEAxisService] resolveEntity: targetNamespace=http://www.agora.msa.fr/TarifMaladie schemaLocation=ListeProduit.xsd baseUri=file:/home/mriou/dev/tools/platform/apache-tomcat-5.5.23/webapps/ode/WEB-INF/processes/TestXSD/BPMN/NewDiagram2-Pool0.wsdl
ERROR - GeronimoLog.error(108) | Exception resolving entity: schemaLocation=ListeProduit.xsd baseUri=file:/home/mriou/dev/tools/platform/apache-tomcat-5.5.23/webapps/ode/WEB-INF/processes/TestXSD/BPMN/NewDiagram2-Pool0.wsdl
java.io.FileNotFoundException: /home/mriou/dev/tools/platform/apache-tomcat-5.5.23/webapps/ode/WEB-INF/processes/TestXSD/BPMN/ListeProduit.xsd (No such file or directory)
        at java.io.FileInputStream.open(Native Method)
        at java.io.FileInputStream.<init>(FileInputStream.java:106)
        at java.io.FileInputStream.<init>(FileInputStream.java:66)
        at sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:70)
        at sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:161)
        at java.net.URL.openStream(URL.java:1007)
        at org.apache.ode.axis2.util.Axis2UriResolver.resolveEntity(Axis2UriResolver.java:41)
        at org.apache.ws.commons.schema.SchemaBuilder.resolveXmlSchema(SchemaBuilder.java:1872)
        at org.apache.ws.commons.schema.SchemaBuilder.resolveXmlSchema(SchemaBuilder.java:1902)
        at org.apache.ws.commons.schema.SchemaBuilder.handleInclude(SchemaBuilder.java:1674)
        at org.apache.ws.commons.schema.SchemaBuilder.handleXmlSchemaElement(SchemaBuilder.java:169)
        at org.apache.ws.commons.schema.SchemaBuilder.build(SchemaBuilder.java:82)
        at org.apache.ws.commons.schema.XmlSchemaCollection.read(XmlSchemaCollection.java:359)
        at org.apache.ws.commons.schema.XmlSchemaCollection.read(XmlSchemaCollection.java:304)
        at org.apache.ws.commons.schema.SchemaBuilder.resolveXmlSchema(SchemaBuilder.java:1884)
        at org.apache.ws.commons.schema.SchemaBuilder.resolveXmlSchema(SchemaBuilder.java:1902)
        at org.apache.ws.commons.schema.SchemaBuilder.handleInclude(SchemaBuilder.java:1674)
        at org.apache.ws.commons.schema.SchemaBuilder.handleXmlSchemaElement(SchemaBuilder.java:169)
        at org.apache.ws.commons.schema.XmlSchemaCollection.read(XmlSchemaCollection.java:347)
        at org.apache.axis2.description.WSDLToAxisServiceBuilder.getXMLSchema(WSDLToAxisServiceBuilder.java:140)
        at org.apache.axis2.description.WSDL11ToAxisServiceBuilder.copyExtensibleElements(WSDL11ToAxisServiceBuilder.java:2186)
        at org.apache.axis2.description.WSDL11ToAxisServiceBuilder.processTypes(WSDL11ToAxisServiceBuilder.java:306)
        at org.apache.axis2.description.WSDL11ToAxisServiceBuilder.processTypes(WSDL11ToAxisServiceBuilder.java:297)
        at org.apache.axis2.description.WSDL11ToAxisServiceBuilder.populateService(WSDL11ToAxisServiceBuilder.java:265)
        at org.apache.ode.axis2.hooks.ODEAxisService.createService(ODEAxisService.java:79)
        at org.apache.ode.axis2.ODEServer.createService(ODEServer.java:299)
        at org.apache.ode.axis2.BindingContextImpl.activateMyRoleEndpoint(BindingContextImpl.java:59)
[ Show » ]
Matthieu Riou - 17/Oct/07 04:19 PM This is unfortunately a ws-commons XmlSchema bug, the original stack is reproduced below. The situation is basically: WSDL -> XSD1 -> XSD2 The baseUri we get from the SchemaBuilder to resolve XSD2 is wrong as it's resolved relatively to the WSDL instead of XSD1. I wish it was simple to fix but actually it's not as it's more of a design issue in XmlSchema. All imports within a WSDL document (including transitive ones like we have here) are associated to a single XmlSchemaCollection. And the baseUri used for all resolving is the one of the collection. They should either have a collection per document or associate a baseUri with the document instead of the collection. I'm going to file a bug for XmlSchema for now. Apparently it's only been reported by one person in the community and there's a workaround. If a customer have the same problem or if more people run into it, we might have to consider fixing it ourselves. 15:20:11,083 DEBUG [ODEAxisService] resolveEntity: targetNamespace=http://www.agora.msa.fr/TarifMaladie schemaLocation=../XSDSchema/MatricePriseEnCharge.xsd baseUri=file:/home/mriou/dev/tools/platform/apache-tomcat-5.5.23/webapps/ode/WEB-INF/processes/TestXSD/BPMN/NewDiagram2-Pool0.wsdl DEBUG - GeronimoLog.debug(66) | resolveEntity: targetNamespace=http://www.agora.msa.fr/TarifMaladie schemaLocation=ListeProduit.xsd baseUri=file:/home/mriou/dev/tools/platform/apache-tomcat-5.5.23/webapps/ode/WEB-INF/processes/TestXSD/BPMN/NewDiagram2-Pool0.wsdl 15:20:11,088 DEBUG [ODEAxisService] resolveEntity: targetNamespace=http://www.agora.msa.fr/TarifMaladie schemaLocation=ListeProduit.xsd baseUri=file:/home/mriou/dev/tools/platform/apache-tomcat-5.5.23/webapps/ode/WEB-INF/processes/TestXSD/BPMN/NewDiagram2-Pool0.wsdl ERROR - GeronimoLog.error(108) | Exception resolving entity: schemaLocation=ListeProduit.xsd baseUri=file:/home/mriou/dev/tools/platform/apache-tomcat-5.5.23/webapps/ode/WEB-INF/processes/TestXSD/BPMN/NewDiagram2-Pool0.wsdl java.io.FileNotFoundException: /home/mriou/dev/tools/platform/apache-tomcat-5.5.23/webapps/ode/WEB-INF/processes/TestXSD/BPMN/ListeProduit.xsd (No such file or directory)         at java.io.FileInputStream.open(Native Method)         at java.io.FileInputStream.<init>(FileInputStream.java:106)         at java.io.FileInputStream.<init>(FileInputStream.java:66)         at sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:70)         at sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:161)         at java.net.URL.openStream(URL.java:1007)         at org.apache.ode.axis2.util.Axis2UriResolver.resolveEntity(Axis2UriResolver.java:41)         at org.apache.ws.commons.schema.SchemaBuilder.resolveXmlSchema(SchemaBuilder.java:1872)         at org.apache.ws.commons.schema.SchemaBuilder.resolveXmlSchema(SchemaBuilder.java:1902)         at org.apache.ws.commons.schema.SchemaBuilder.handleInclude(SchemaBuilder.java:1674)         at org.apache.ws.commons.schema.SchemaBuilder.handleXmlSchemaElement(SchemaBuilder.java:169)         at org.apache.ws.commons.schema.SchemaBuilder.build(SchemaBuilder.java:82)         at org.apache.ws.commons.schema.XmlSchemaCollection.read(XmlSchemaCollection.java:359)         at org.apache.ws.commons.schema.XmlSchemaCollection.read(XmlSchemaCollection.java:304)         at org.apache.ws.commons.schema.SchemaBuilder.resolveXmlSchema(SchemaBuilder.java:1884)         at org.apache.ws.commons.schema.SchemaBuilder.resolveXmlSchema(SchemaBuilder.java:1902)         at org.apache.ws.commons.schema.SchemaBuilder.handleInclude(SchemaBuilder.java:1674)         at org.apache.ws.commons.schema.SchemaBuilder.handleXmlSchemaElement(SchemaBuilder.java:169)         at org.apache.ws.commons.schema.XmlSchemaCollection.read(XmlSchemaCollection.java:347)         at org.apache.axis2.description.WSDLToAxisServiceBuilder.getXMLSchema(WSDLToAxisServiceBuilder.java:140)         at org.apache.axis2.description.WSDL11ToAxisServiceBuilder.copyExtensibleElements(WSDL11ToAxisServiceBuilder.java:2186)         at org.apache.axis2.description.WSDL11ToAxisServiceBuilder.processTypes(WSDL11ToAxisServiceBuilder.java:306)         at org.apache.axis2.description.WSDL11ToAxisServiceBuilder.processTypes(WSDL11ToAxisServiceBuilder.java:297)         at org.apache.axis2.description.WSDL11ToAxisServiceBuilder.populateService(WSDL11ToAxisServiceBuilder.java:265)         at org.apache.ode.axis2.hooks.ODEAxisService.createService(ODEAxisService.java:79)         at org.apache.ode.axis2.ODEServer.createService(ODEServer.java:299)         at org.apache.ode.axis2.BindingContextImpl.activateMyRoleEndpoint(BindingContextImpl.java:59)


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Resolved: (ODE-241) An xsd including another xsd throws a NPE on deployment

Posted by "Matthieu Riou (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/ODE-241?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Matthieu Riou resolved ODE-241.
-------------------------------

    Resolution: Fixed
      Assignee: Matthieu Riou

Monkey patched WSDL11ToAxisServiceBuilder (which in Java means sub-classing and overriding whatever bothers you) in ODEAxisService to use the working XmlSchema read function instead of the broken one.

> An xsd including another xsd throws a NPE on deployment
> -------------------------------------------------------
>
>                 Key: ODE-241
>                 URL: https://issues.apache.org/jira/browse/ODE-241
>             Project: ODE
>          Issue Type: Bug
>          Components: Axis2 Integration
>    Affects Versions: 1.1.1
>            Reporter: Matthieu Riou
>            Assignee: Matthieu Riou
>             Fix For: 1.2
>
>
> There's a ws-commons XmlSchema bug giving us some problems with some relative XSD includes, the original stack is reproduced below. The situation is basically:
> WSDL -> XSD1 -> XSD2
> The baseUri we get from the SchemaBuilder to resolve XSD2 is wrong as it's resolved relatively to the WSDL instead of XSD1. I wish it was simple to fix but actually it's not as it's more of a design issue in XmlSchema. All imports within a WSDL document (including transitive ones like we have here) are associated to a single XmlSchemaCollection. And the baseUri used for all resolving is the one of the collection. They should either have a collection per document or associate a baseUri with the document instead of the collection.
> I filed a WS-COMMONS bug for this but as you can see they don't seem to get the problem: https://issues.apache.org/jira/browse/WSCOMMONS-265
> 15:20:11,083 DEBUG [ODEAxisService] resolveEntity: targetNamespace=http://www.agora.msa.fr/TarifMaladie schemaLocation=../XSDSchema/MatricePriseEnCharge.xsd baseUri=file:/home/mriou/dev/tools/platform/apache-tomcat-5.5.23/webapps/ode/WEB-INF/processes/TestXSD/BPMN/NewDiagram2-Pool0.wsdl
> DEBUG - GeronimoLog.debug(66) | resolveEntity: targetNamespace=http://www.agora.msa.fr/TarifMaladie schemaLocation=ListeProduit.xsd baseUri=file:/home/mriou/dev/tools/platform/apache-tomcat-5.5.23/webapps/ode/WEB-INF/processes/TestXSD/BPMN/NewDiagram2-Pool0.wsdl
> 15:20:11,088 DEBUG [ODEAxisService] resolveEntity: targetNamespace=http://www.agora.msa.fr/TarifMaladie schemaLocation=ListeProduit.xsd baseUri=file:/home/mriou/dev/tools/platform/apache-tomcat-5.5.23/webapps/ode/WEB-INF/processes/TestXSD/BPMN/NewDiagram2-Pool0.wsdl
> ERROR - GeronimoLog.error(108) | Exception resolving entity: schemaLocation=ListeProduit.xsd baseUri=file:/home/mriou/dev/tools/platform/apache-tomcat-5.5.23/webapps/ode/WEB-INF/processes/TestXSD/BPMN/NewDiagram2-Pool0.wsdl
> java.io.FileNotFoundException: /home/mriou/dev/tools/platform/apache-tomcat-5.5.23/webapps/ode/WEB-INF/processes/TestXSD/BPMN/ListeProduit.xsd (No such file or directory)
>         at java.io.FileInputStream.open(Native Method)
>         at java.io.FileInputStream.<init>(FileInputStream.java:106)
>         at java.io.FileInputStream.<init>(FileInputStream.java:66)
>         at sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:70)
>         at sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:161)
>         at java.net.URL.openStream(URL.java:1007)
>         at org.apache.ode.axis2.util.Axis2UriResolver.resolveEntity(Axis2UriResolver.java:41)
>         at org.apache.ws.commons.schema.SchemaBuilder.resolveXmlSchema(SchemaBuilder.java:1872)
>         at org.apache.ws.commons.schema.SchemaBuilder.resolveXmlSchema(SchemaBuilder.java:1902)
>         at org.apache.ws.commons.schema.SchemaBuilder.handleInclude(SchemaBuilder.java:1674)
>         at org.apache.ws.commons.schema.SchemaBuilder.handleXmlSchemaElement(SchemaBuilder.java:169)
>         at org.apache.ws.commons.schema.SchemaBuilder.build(SchemaBuilder.java:82)
>         at org.apache.ws.commons.schema.XmlSchemaCollection.read(XmlSchemaCollection.java:359)
>         at org.apache.ws.commons.schema.XmlSchemaCollection.read(XmlSchemaCollection.java:304)
>         at org.apache.ws.commons.schema.SchemaBuilder.resolveXmlSchema(SchemaBuilder.java:1884)
>         at org.apache.ws.commons.schema.SchemaBuilder.resolveXmlSchema(SchemaBuilder.java:1902)
>         at org.apache.ws.commons.schema.SchemaBuilder.handleInclude(SchemaBuilder.java:1674)
>         at org.apache.ws.commons.schema.SchemaBuilder.handleXmlSchemaElement(SchemaBuilder.java:169)
>         at org.apache.ws.commons.schema.XmlSchemaCollection.read(XmlSchemaCollection.java:347)
>         at org.apache.axis2.description.WSDLToAxisServiceBuilder.getXMLSchema(WSDLToAxisServiceBuilder.java:140)
>         at org.apache.axis2.description.WSDL11ToAxisServiceBuilder.copyExtensibleElements(WSDL11ToAxisServiceBuilder.java:2186)
>         at org.apache.axis2.description.WSDL11ToAxisServiceBuilder.processTypes(WSDL11ToAxisServiceBuilder.java:306)
>         at org.apache.axis2.description.WSDL11ToAxisServiceBuilder.processTypes(WSDL11ToAxisServiceBuilder.java:297)
>         at org.apache.axis2.description.WSDL11ToAxisServiceBuilder.populateService(WSDL11ToAxisServiceBuilder.java:265)
>         at org.apache.ode.axis2.hooks.ODEAxisService.createService(ODEAxisService.java:79)
>         at org.apache.ode.axis2.ODEServer.createService(ODEServer.java:299)
>         at org.apache.ode.axis2.BindingContextImpl.activateMyRoleEndpoint(BindingContextImpl.java:59)
> [ Show » ]
> Matthieu Riou - 17/Oct/07 04:19 PM This is unfortunately a ws-commons XmlSchema bug, the original stack is reproduced below. The situation is basically: WSDL -> XSD1 -> XSD2 The baseUri we get from the SchemaBuilder to resolve XSD2 is wrong as it's resolved relatively to the WSDL instead of XSD1. I wish it was simple to fix but actually it's not as it's more of a design issue in XmlSchema. All imports within a WSDL document (including transitive ones like we have here) are associated to a single XmlSchemaCollection. And the baseUri used for all resolving is the one of the collection. They should either have a collection per document or associate a baseUri with the document instead of the collection. I'm going to file a bug for XmlSchema for now. Apparently it's only been reported by one person in the community and there's a workaround. If a customer have the same problem or if more people run into it, we might have to consider fixing it ourselves. 15:20:11,083 DEBUG [ODEAxisService] resolveEntity: targetNamespace=http://www.agora.msa.fr/TarifMaladie schemaLocation=../XSDSchema/MatricePriseEnCharge.xsd baseUri=file:/home/mriou/dev/tools/platform/apache-tomcat-5.5.23/webapps/ode/WEB-INF/processes/TestXSD/BPMN/NewDiagram2-Pool0.wsdl DEBUG - GeronimoLog.debug(66) | resolveEntity: targetNamespace=http://www.agora.msa.fr/TarifMaladie schemaLocation=ListeProduit.xsd baseUri=file:/home/mriou/dev/tools/platform/apache-tomcat-5.5.23/webapps/ode/WEB-INF/processes/TestXSD/BPMN/NewDiagram2-Pool0.wsdl 15:20:11,088 DEBUG [ODEAxisService] resolveEntity: targetNamespace=http://www.agora.msa.fr/TarifMaladie schemaLocation=ListeProduit.xsd baseUri=file:/home/mriou/dev/tools/platform/apache-tomcat-5.5.23/webapps/ode/WEB-INF/processes/TestXSD/BPMN/NewDiagram2-Pool0.wsdl ERROR - GeronimoLog.error(108) | Exception resolving entity: schemaLocation=ListeProduit.xsd baseUri=file:/home/mriou/dev/tools/platform/apache-tomcat-5.5.23/webapps/ode/WEB-INF/processes/TestXSD/BPMN/NewDiagram2-Pool0.wsdl java.io.FileNotFoundException: /home/mriou/dev/tools/platform/apache-tomcat-5.5.23/webapps/ode/WEB-INF/processes/TestXSD/BPMN/ListeProduit.xsd (No such file or directory)         at java.io.FileInputStream.open(Native Method)         at java.io.FileInputStream.<init>(FileInputStream.java:106)         at java.io.FileInputStream.<init>(FileInputStream.java:66)         at sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:70)         at sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:161)         at java.net.URL.openStream(URL.java:1007)         at org.apache.ode.axis2.util.Axis2UriResolver.resolveEntity(Axis2UriResolver.java:41)         at org.apache.ws.commons.schema.SchemaBuilder.resolveXmlSchema(SchemaBuilder.java:1872)         at org.apache.ws.commons.schema.SchemaBuilder.resolveXmlSchema(SchemaBuilder.java:1902)         at org.apache.ws.commons.schema.SchemaBuilder.handleInclude(SchemaBuilder.java:1674)         at org.apache.ws.commons.schema.SchemaBuilder.handleXmlSchemaElement(SchemaBuilder.java:169)         at org.apache.ws.commons.schema.SchemaBuilder.build(SchemaBuilder.java:82)         at org.apache.ws.commons.schema.XmlSchemaCollection.read(XmlSchemaCollection.java:359)         at org.apache.ws.commons.schema.XmlSchemaCollection.read(XmlSchemaCollection.java:304)         at org.apache.ws.commons.schema.SchemaBuilder.resolveXmlSchema(SchemaBuilder.java:1884)         at org.apache.ws.commons.schema.SchemaBuilder.resolveXmlSchema(SchemaBuilder.java:1902)         at org.apache.ws.commons.schema.SchemaBuilder.handleInclude(SchemaBuilder.java:1674)         at org.apache.ws.commons.schema.SchemaBuilder.handleXmlSchemaElement(SchemaBuilder.java:169)         at org.apache.ws.commons.schema.XmlSchemaCollection.read(XmlSchemaCollection.java:347)         at org.apache.axis2.description.WSDLToAxisServiceBuilder.getXMLSchema(WSDLToAxisServiceBuilder.java:140)         at org.apache.axis2.description.WSDL11ToAxisServiceBuilder.copyExtensibleElements(WSDL11ToAxisServiceBuilder.java:2186)         at org.apache.axis2.description.WSDL11ToAxisServiceBuilder.processTypes(WSDL11ToAxisServiceBuilder.java:306)         at org.apache.axis2.description.WSDL11ToAxisServiceBuilder.processTypes(WSDL11ToAxisServiceBuilder.java:297)         at org.apache.axis2.description.WSDL11ToAxisServiceBuilder.populateService(WSDL11ToAxisServiceBuilder.java:265)         at org.apache.ode.axis2.hooks.ODEAxisService.createService(ODEAxisService.java:79)         at org.apache.ode.axis2.ODEServer.createService(ODEServer.java:299)         at org.apache.ode.axis2.BindingContextImpl.activateMyRoleEndpoint(BindingContextImpl.java:59)

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.