[ 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)