Hi, I'm trying to expose existing internal service beans as WebService using the default JAXB databinding. Some of my data classes are marked as final in Java. With JAXB, this translate to a complexType with the value "extension restriction" for the "final" attribute. According to the W3C Schema validator, this constructs is valid. But XmlSchema cannot parse this construct, leading the JaxWsServerFactoryBean to fail in it's create method when reading the schema generated earlier (at runtime) by CXF's JAXB.
I reported a bug in XmlSchema last week (see https://issues.apache.org/jira/browse/WSCOMMONS-273). But it hasn't been reviewed or accepted yet. Since it prevents CXF to work using valid Java artifacts, should I also report it as a CXF issue ? Here is the revelant stacktrace Related cause: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'MyWebService': Unsatisfied dependency expressed through constructor argument with index 2 of type [org.apache.cxf.jaxws.JaxWsServerFactoryBean]: Ambiguous constructor argument types - did you specify the correct bean references as constructor arguments? at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1318) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:522) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:249) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:169) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:246) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:168) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:404) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:735) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:369) at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:245) at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:188) at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3764) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4216) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014) at org.apache.catalina.core.StandardHost.start(StandardHost.java:736) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014) at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443) at org.apache.catalina.startup.Embedded.start(Embedded.java:822) at com.irislink.doccenter.server.helperservicesimpl.WebApplicationService.afterPropertiesSet(WebApplicationService.java:114) at com.irislink.doccenter.server.ServerLauncher.main(ServerLauncher.java:199) Caused by: org.apache.ws.commons.schema.constants.Enum$EnumValueException: Bad Enumeration value 'extension restriction' at org.apache.ws.commons.schema.constants.Enum.setValue(Enum.java:49) at org.apache.ws.commons.schema.constants.Enum.<init>(Enum.java:27) at org.apache.ws.commons.schema.XmlSchemaDerivationMethod.<init>(XmlSchemaDerivationMethod.java:46) at org.apache.ws.commons.schema.SchemaBuilder.handleComplexType(SchemaBuilder.java:657) at org.apache.ws.commons.schema.SchemaBuilder.handleXmlSchemaElement(SchemaBuilder.java:157) at org.apache.ws.commons.schema.XmlSchemaCollection.read(XmlSchemaCollection.java:347) at org.apache.cxf.databinding.source.AbstractDataBinding.addSchemaDocument(AbstractDataBinding.java:73) at org.apache.cxf.jaxb.JAXBDataBinding.initialize(JAXBDataBinding.java:231) at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.buildServiceFromClass(ReflectionServiceFactoryBean.java:244) at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.initializeServiceModel(ReflectionServiceFactoryBean.java:272) at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.create(ReflectionServiceFactoryBean.java:146) at org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.create(JaxWsServiceFactoryBean.java:89) at org.apache.cxf.frontend.AbstractEndpointFactory.createEndpoint(AbstractEndpointFactory.java:83) at org.apache.cxf.frontend.ServerFactoryBean.create(ServerFactoryBean.java:107) at org.apache.cxf.jaxws.JaxWsServerFactoryBean.create(JaxWsServerFactoryBean.java:147) at org.apache.cxf.jaxws.EndpointImpl.getServer(EndpointImpl.java:287) at org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:227) at org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:179) at org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:340) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1383) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1352) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1315) ... 20 more -- View this message in context: http://www.nabble.com/Cannot-use-classes-marked-as-final-as-WebMethod-parameters.-tf4769950.html#a13643971 Sent from the cxf-user mailing list archive at Nabble.com.
