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.

Reply via email to