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

Daniel Kulp resolved CXF-2648.
------------------------------

       Resolution: Fixed
    Fix Version/s: 2.2.6

> JaxWSClient Fail on legal interface - XmlSchemaException: Schema for 
> namespace 'nn' already contains type 'tt'
> --------------------------------------------------------------------------------------------------------------
>
>                 Key: CXF-2648
>                 URL: https://issues.apache.org/jira/browse/CXF-2648
>             Project: CXF
>          Issue Type: Bug
>          Components: Aegis Databinding
>    Affects Versions: 2.1.9
>            Reporter: Jara Cesnek
>             Fix For: 2.2.6
>
>
> Have interface with two methods. Each has parameter with *same name but other 
> type!*
> {code}
> @WebService(name="documents", 
> targetNamespace="http://v1_0_0.ws.doc.daisy.marbes.cz";)
> public interface Documents {
>    void getDocumentByFilter( @WebParam(name="filter") VOFilter);
>    void getDocumentByExtendedFilter( @WebParam(name="filter") 
> VOExtendedFilter);
> }
> {code}
> {code}
> @XmlType(name = "SimpleFilter", namespace = NamespaceInfo.NAMESPACE_V1)
> public class VOFilter {
> ...
> }
> @XmlType(name = "ExtendedFilter", namespace = NamespaceInfo.NAMESPACE_V1)
> public class VOExtendedFilter {
> ...
> }
> {code}
> On the server side all working. WSDL seems OK and method call by SOAPUI 
> working too.
> But on the client side (when try to call by CXF client) exception is thrown :
> {code}
> org.apache.ws.commons.schema.XmlSchemaException:  Schema for namespace 
> 'http://wo.v1.ws.doc.modules.daisy.marbes.cz' already contains type 'filter'
>       at org.apache.ws.commons.schema.XmlSchema.addType(XmlSchema.java:558)
>       at 
> org.apache.ws.commons.schema.SchemaBuilder.handleXmlSchemaElement(SchemaBuilder.java:206)
>       at 
> org.apache.ws.commons.schema.SchemaBuilder.build(SchemaBuilder.java:121)
>       at 
> org.apache.ws.commons.schema.XmlSchemaCollection.read(XmlSchemaCollection.java:509)
>       at 
> org.apache.ws.commons.schema.XmlSchemaCollection.read(XmlSchemaCollection.java:493)
>       at 
> org.apache.cxf.common.xmlschema.SchemaCollection.read(SchemaCollection.java:158)
>       at 
> org.apache.cxf.databinding.AbstractDataBinding.addSchemaDocument(AbstractDataBinding.java:136)
>       at 
> org.apache.cxf.aegis.databinding.AegisDatabinding.createSchemas(AegisDatabinding.java:532)
>       at 
> org.apache.cxf.aegis.databinding.AegisDatabinding.initialize(AegisDatabinding.java:323)
>       at 
> org.apache.cxf.service.factory.ReflectionServiceFactoryBean.buildServiceFromClass(ReflectionServiceFactoryBean.java:378)
>       at 
> org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.buildServiceFromClass(JaxWsServiceFactoryBean.java:530)
>       at 
> org.apache.cxf.service.factory.ReflectionServiceFactoryBean.initializeServiceModel(ReflectionServiceFactoryBean.java:437)
>       at 
> org.apache.cxf.service.factory.ReflectionServiceFactoryBean.create(ReflectionServiceFactoryBean.java:192)
>       at 
> org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.create(JaxWsServiceFactoryBean.java:165)
>       at 
> org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpoint(AbstractWSDLBasedEndpointFactory.java:100)
>       at 
> org.apache.cxf.frontend.ClientFactoryBean.create(ClientFactoryBean.java:52)
>       at 
> org.apache.cxf.frontend.ClientProxyFactoryBean.create(ClientProxyFactoryBean.java:102)
>       at 
> org.apache.cxf.jaxws.JaxWsProxyFactoryBean.create(JaxWsProxyFactoryBean.java:115)
> {code}
> Client code:
> {code}
>             JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
>             factory.setServiceClass( Documents.class );
>             factory.setAddress(publishURL);
>             factory.setDataBinding(new AegisDatabinding());
>             Object remoteInterfaceImpl = factory.create();
> {code}
> Server code:
> {code}
>         JaxWsServerFactoryBean serverFactoryBean = new 
> JaxWsServerFactoryBean();
>         
> serverFactoryBean.setServiceClass(AopUtils.getTargetClass(implementor)); // 
> Documents.class
>         serverFactoryBean.setServiceBean(implementor);                        
>   //DocumentsImpl
>         serverFactoryBean.setDataBinding(new AegisDatabinding());
>         serverFactoryBean.setAddress(url);
>        serverFactoryBean.create();
> {code}

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

Reply via email to