Spring injection with bare parameter style fails to deploy
----------------------------------------------------------

                 Key: CXF-1932
                 URL: https://issues.apache.org/jira/browse/CXF-1932
             Project: CXF
          Issue Type: Bug
    Affects Versions: 2.0.9
         Environment: Reproduced this on CXF 2.0.9 with Tomcat 5.5.27, the app 
deploys on 2.1.3
            Reporter: Martin Murphy


If you have a service endpoint implementation that does not specify the WSDL 
location, with some methods that are not WebMethods and the bare parameter 
style is used, then CXF will fail to publish the enpoint.

When deploying on tomcat I see this error:
{code}
04-Dec-2008 14:24:05 org.springframework.web.context.ContextLoader 
initWebApplicationContext
SEVERE: Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean 
with name 
'personService': Invocation of init method failed; nested exception is 
javax.xml.ws.WebServiceException: 
org.apache.cxf.service.factory.ServiceConstructionException: 
Service class org.apache.cxf.springtest.PersonImpl method getMultiMap part 
{http://cxf.apache.org/springtest}getMultiMapResponse cannot be mapped to 
schema. 
Check for use of a JAX-WS-specific type without the JAX-WS service factory bean.
Caused by: javax.xml.ws.WebServiceException: 
org.apache.cxf.service.factory.ServiceConstructionException: 
Service class org.apache.cxf.springtest.PersonImpl method getMultiMap part 
{http://cxf.apache.org/springtest}getMultiMapResponse cannot be mapped to 
schema. 
Check for use of a JAX-WS-specific type without the JAX-WS service factory bean.
        at org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:258)
        at org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:192)
        at org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:380)
        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:1242)
        at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1208)
        at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1172)
        at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:427)
        at 
org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:249)
        at 
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:155)
        at 
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:246)
        at 
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:160)
        at 
org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:291)
        at 
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:352)
        at 
org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:246)
        at 
org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:189)
        at 
org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:49)
        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.addChildInternal(ContainerBase.java:760)
        at 
org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:740)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:544)
        at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:831)
        at 
org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:720)
        at 
org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:490)
        at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1218)
        at 
org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:293)
        at 
org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:120)
        at 
org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1306)
        at 
org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1570)
        at 
org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1579)
        at 
org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1559)
        at java.lang.Thread.run(Thread.java:595)
Caused by: org.apache.cxf.service.factory.ServiceConstructionException: Service
class org.apache.cxf.springtest.PersonImpl method getMultiMap part 
{http://cxf.apache.org/springtest}getMultiMapResponse cannot be mapped to 
schema. 
Check for use of a JAX-WS-specific type without the JAX-WS service factory bean.
        at 
org.apache.cxf.service.factory.ReflectionServiceFactoryBean.createBareMessage(ReflectionServiceFactoryBean.java:969)
        at 
org.apache.cxf.service.factory.ReflectionServiceFactoryBean.buildServiceFromClass(ReflectionServiceFactoryBean.java:347)
        at 
org.apache.cxf.service.factory.ReflectionServiceFactoryBean.initializeServiceModel(ReflectionServiceFactoryBean.java:383)
        at 
org.apache.cxf.service.factory.ReflectionServiceFactoryBean.create(ReflectionServiceFactoryBean.java:169)
        at 
org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.create(JaxWsServiceFactoryBean.java:98)
        at 
org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpoint(AbstractWSDLBasedEndpointFactory.java:98)
        at 
org.apache.cxf.frontend.ServerFactoryBean.create(ServerFactoryBean.java:114)
        at 
org.apache.cxf.jaxws.JaxWsServerFactoryBean.create(JaxWsServerFactoryBean.java:160)
        at org.apache.cxf.jaxws.EndpointImpl.getServer(EndpointImpl.java:327)
        at org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:242)
        ... 35 more
04-Dec-2008 14:24:05 org.apache.catalina.core.StandardContext start
SEVERE: Error listenerStart
04-Dec-2008 14:24:05 org.apache.catalina.core.StandardContext start
SEVERE: Context [/springtest-0.0.1-SNAPSHOT] startup failed due to previous 
errors
{code}

Note this was discussed last month in [this 
thread|http://www.nabble.com/commit%3A-r688596-cxf-2.0.9-tt20500264.html] and 
the problematic area of code was highlighted. Where a method will be 
incorrectly returned as a webmethod when it is not defined.

Note this seems to work in 2.0.8 and 2.1.3 (didn't try an earlier 2.1 version). 
ServiceMix 3 uses CXF 2.0.9 in it's CXF Service Engine where the WSDL location 
cannot be specified.

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