cxf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Amichai Rothman (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CXF-2548) Aegis component attempts to assign new schema objects with an existing namespace URI to ServiceInfo if consecutive Clients are created for the same WSDL causing XmlSchemaException: Schema name conflict in collection
Date Wed, 27 Jan 2016 16:46:39 GMT

    [ https://issues.apache.org/jira/browse/CXF-2548?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15119746#comment-15119746
] 

Amichai Rothman commented on CXF-2548:
--------------------------------------

I think I just came across the same issue while working on CXF-6737. If you take the sample
project #3 attached there and set the test flag to use Aegis and then press the Go button
twice - you will get this exception:
{quote}
    org.apache.ws.commons.schema.XmlSchemaException: Schema name conflict in collection
        at org.apache.ws.commons.schema.XmlSchema.<init>(XmlSchema.java:126)
        at org.apache.ws.commons.schema.XmlSchema.<init>(XmlSchema.java:140)
        at org.apache.cxf.common.xmlschema.SchemaCollection.newXmlSchemaInCollection(SchemaCollection.java:194)
        at org.apache.cxf.service.model.ServiceInfo.addNewSchema(ServiceInfo.java:165)
        at org.apache.cxf.aegis.databinding.AegisDatabinding.createSchemas(AegisDatabinding.java:450)
        at org.apache.cxf.aegis.databinding.AegisDatabinding.initialize(AegisDatabinding.java:262)
        at org.apache.cxf.service.factory.AbstractServiceFactoryBean.initializeDataBindings(AbstractServiceFactoryBean.java:86)
        at org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean.buildServiceFromWSDL(ReflectionServiceFactoryBean.java:423)
        at org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean.initializeServiceModel(ReflectionServiceFactoryBean.java:525)
        at org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean.create(ReflectionServiceFactoryBean.java:261)
        at org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpoint(AbstractWSDLBasedEndpointFactory.java:102)
        at org.apache.cxf.frontend.ClientFactoryBean.create(ClientFactoryBean.java:91)
        at org.apache.cxf.frontend.ClientProxyFactoryBean.create(ClientProxyFactoryBean.java:157)
        at org.apache.cxf.dosgi.samples.greeter.client.BadClient.createServiceProxy(BadClient.java:45)
        at org.apache.cxf.dosgi.samples.greeter.client.BadClient.go(BadClient.java:50)
        at org.apache.cxf.dosgi.samples.greeter.client.GreeterDialog$4.actionPerformed(GreeterDialog.java:114)
        ...
{quote}

(tested with CXF 3.1.1, which is the version used by the latest DOSGi)

> Aegis component attempts to assign new schema objects with an existing namespace URI
to ServiceInfo if consecutive Clients are created for the same WSDL causing XmlSchemaException:
Schema name conflict in collection
> -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: CXF-2548
>                 URL: https://issues.apache.org/jira/browse/CXF-2548
>             Project: CXF
>          Issue Type: Bug
>          Components: Aegis Databinding
>    Affects Versions: 2.2.5, 2.2.6
>         Environment: BEA JRockit 1.6.0 + WebLogic 10.3, Sun JDK 1.6.0
>            Reporter: Antal Varga
>            Priority: Critical
>             Fix For: Invalid
>
>
> Revision 826052 changed the behaviour of org.apache.cxf.frontend.ClientFactoryBean.create()
so that subsequent calls will create new Client objects.
> The ServiceInfos are cached between the creation of these objects so that the SchemaCollection
objects assigned to them also remain the same.
> However when an endpoint is created (it is called for both of the Clients) and org.apache.cxf.aegis.databinding.AegisDatabinding.createSchemas()
> is run then (line 457) a new SchemaInfo is attempted to be added to the schema collection
with a namespace URI already in the collection
> (see API component org.apache.cxf.service.model.ServiceInfo.addNewSchema(String)) because
it was already added
> during the creation of the previous Client object.
> I think prior to adding the new SchemaInfo it should be checked if an entry with the
given namespace URI already exists.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message