You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cxf.apache.org by "Amichai Rothman (JIRA)" <ji...@apache.org> on 2016/01/27 17:46:39 UTC
[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
[ 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)