You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cxf.apache.org by benoit villaumie <bv...@karavel.com> on 2010/09/15 15:37:08 UTC
CXF+Spring+Json : Error creating bean with name ... ; nested exception
is org.apache.cxf.service.factory.ServiceConstructionException
Hello everyone,
I am trying to expose a service using http/json via cxf.
However, I issue a stacktrace at the startup of the webapp :
14:49:44,648 | {main} | [WARN ] |
[org.springframework.beans.GenericTypeAwarePropertyDescriptor] :
Invalid JavaBean property 'serviceBeans' being accessed! Ambiguous
write methods found next to actually used [public void
org.apache.cxf.jaxrs.JAXRSServerFactoryBean.setServiceBeans(java.util.List)]:
[public void
org.apache.cxf.jaxrs.JAXRSServerFactoryBean.setServiceBeans(java.lang.Object[])]
14:49:44,695 | {main} | [INFO ] |
[org.springframework.beans.factory.support.DefaultListableBeanFactory]
: Destroying singletons in
org.springframework.beans.factory.support.DefaultListableBeanFactory@1861086:
defining beans
[cxf,org.apache.cxf.bus.spring.BusApplicationListener,org.apache.cxf.bus.spring.BusWiringBeanFactoryPostProcessor,org.apache.cxf.bus.spring.Jsr250BeanPostProcessor,org.apache.cxf.bus.spring.BusExtensionPostProcessor,org.apache.cxf.resource.ResourceManager,org.apache.cxf.configuration.Configurer,org.apache.cxf.binding.BindingFactoryManager,org.apache.cxf.transport.DestinationFactoryManager,org.apache.cxf.transport.ConduitInitiatorManager,org.apache.cxf.wsdl.WSDLManager,org.apache.cxf.phase.PhaseManager,org.apache.cxf.workqueue.WorkQueueManager,org.apache.cxf.buslifecycle.BusLifeCycleManager,org.apache.cxf.endpoint.ServerRegistry,org.apache.cxf.endpoint.ServerLifeCycleManager,org.apache.cxf.endpoint.ClientLifeCycleManager,org.apache.cxf.transports.http.QueryHandlerRegistry,org.apache.cxf.endpoint.EndpointResolverRegistry,org.apache.cxf.headers.HeaderManager,org.apache.cxf.catalog.OASISCatalogManager,org.apache.cxf.endpoint.ServiceContractResolverRegistry,org.apache.cxf
.binding.soap.SoapBindingFactory,org.apache.cxf.binding.soap.SoapTransportFactory,org.apache.cxf.binding.soap.customEditorConfigurer,org.apache.cxf.transport.servlet.ServletTransportFactory,org.apache.camel.component.cxf.transport.CamelTransportFactory#0,org.apache.cxf.transport.http.policy.HTTPClientAssertionBuilder,org.apache.cxf.transport.http.policy.HTTPServerAssertionBuilder,org.apache.cxf.transport.http.policy.NoOpPolicyInterceptorProvider,org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory,jms-customerService-ConnectionFactory,jms-customerService-PooledConnectionFactory,jms-customerService-Config,pojo-customerService,rest-customerService,http-customerService,jms-customerService,direct-customerService,template,consumerTemplate,camelContext-server:beanPostProcessor,camelContext-server,org.apache.camel.component.cxf.transport.CamelTransportFactory#1];
root of factory hierarchy
14:49:44,695 | {main} | [ERROR] |
[org.springframework.web.context.ContextLoader] : Context
initialization failed
org.springframework.beans.factory.BeanCreationException: Error
creating bean with name 'rest-customerService': Invocation of init
method failed; nested exception is
org.apache.cxf.service.factory.ServiceConstructionException
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1412)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
at
org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291)
at
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288)
at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)
at
org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:574)
at
org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895)
at
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425)
at
org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255)
at
org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199)
at
org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45)
at
org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3843)
at
org.apache.catalina.core.StandardContext.start(StandardContext.java:4342)
at
org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
at
org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
at
org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
at
org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:830)
at
org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:719)
at
org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:490)
at
org.apache.catalina.startup.HostConfig.start(HostConfig.java:1149)
at
org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
at
org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
at
org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at
org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
at
org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at
org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at
org.apache.catalina.core.StandardService.start(StandardService.java:516)
at
org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:578)
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:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
Caused by: org.apache.cxf.service.factory.ServiceConstructionException
at
org.apache.cxf.jaxrs.JAXRSServerFactoryBean.create(JAXRSServerFactoryBean.java:125)
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:597)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1536)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1477)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1409)
... 36 more
Caused by: javax.ws.rs.WebApplicationException
at
org.apache.cxf.jaxrs.AbstractJAXRSFactoryBean.checkResources(AbstractJAXRSFactoryBean.java:262)
at
org.apache.cxf.jaxrs.JAXRSServerFactoryBean.create(JAXRSServerFactoryBean.java:85)
... 43 more
The error message gave me no hints. Can someone helps or encountered
similar stack ?
I am using cxf 2.2.9 (try also with 2.2.10). For information soap over
http and soap over jms were working before the test with json. Other
spring files are not copy/paste (mainly related to soap over jms
integration)
the spring configuration is
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:cxf="http://cxf.apache.org/core"
xmlns:jaxws="http://cxf.apache.org/jaxws"
xmlns:jaxrs="http://cxf.apache.org/jaxrs"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd
http://camel.apache.org/schema/spring
http://camel.apache.org/schema/spring/camel-spring-2.3.0.xsd">
<bean id="pojo-customerService"
class="com.karavel.tutorial.backend.impl.ComponentImpl" />
<!-- for incoming http/json -->
<jaxrs:server id="rest-customerService" address="/rest/">
<jaxrs:serviceBeans>
<list>
<ref bean="pojo-customerService" />
</list>
</jaxrs:serviceBeans>
<jaxrs:extensionMappings>
<!-- entry key="feed" value="application/atom+xml"/-->
<entry key="json" value="application/json" />
<!--entry key="xml" value="application/xml"/-->
<!--entry key="html" value="text/html"/-->
</jaxrs:extensionMappings>
</jaxrs:server>
<!-- for incoming http/soap -->
<jaxws:endpoint id="http-customerService"
implementor="#pojo-customerService"
address="/service" />
<!-- for incoming jms/soap -->
<!-- http://camel.apache.org/jms.html -->
<!-- http://camel.apache.org/activemq.html -->
<bean id="jms-customerService"
class="org.apache.activemq.camel.component.ActiveMQComponent">
<property name="configuration" ref="jms-customerService-Config" />
<property name="useMessageIDAsCorrelationID" value="true" />
<property name="requestTimeout" value="20000" /> <!-- ms, time
between post and consumption in the queue -->
<property name="receiveTimeout" value="5000" /> <!-- ms -->
</bean>
<jaxws:endpoint id="direct-customerService"
implementor="#pojo-customerService"
address="camel://direct:customerService">
<jaxws:features>
<!-- Enables logging of SOAP messages. -->
<logging xmlns="http://cxf.apache.org/core" />
</jaxws:features>
</jaxws:endpoint>
</beans>
The java interface is
@WebService
@Path("/json")
public interface ICustomerFacadeService extends ICustomerService {
@GET
@Path("/fake_echo")
public String fake_echo();
@WebResult(name = "echo")
@WebMethod
public String echo(@WebParam(name = "string") String string,
@WebParam(name = "time-to-sleep-in-ms") long timeToSleepInMs);
@WebResult(name = "getCustomerByName1Out")
@WebMethod
public CustomerSyntheseVO getCustomerByName1(
@WebParam(name = "name") String name ) throws
NoSuchCustomerException;
@WebResult(name = "getCustomersByName1Out")
@WebMethod
public CustomerSyntheseVO[] getCustomersByName1(
@WebParam(name = "name") String name ) throws
NoSuchCustomerException;
@WebResult(name = "getCustomersByName2Out")
@WebMethod
public CustomerSyntheseVO[] getCustomersByName2(
@WebParam(name = "name") String name );
@WebResult(name = "new_methodOut")
@WebMethod
public NewOutVO new_method(@WebParam(name = "in") NewInVO in);
@WebMethod
@Oneway
public void insertWithoutException(@WebParam(name = "in") String
name);
}
Thanks for your help.
Re: CXF+Spring+Json : Error creating bean with name ... ; nested
exception is org.apache.cxf.service.factory.ServiceConstructionException
Posted by Sergey Beryozkin <sb...@gmail.com>.
Sorry - I did not spot it, thanks for the confirmation. I'll note that some
custom validation may have to be added to the cxf jaxrs spring-related
code...
cheers, Sergey
On Fri, Sep 24, 2010 at 12:55 PM, benoit villaumie
<bv...@karavel.com>wrote:
> I finally found the problem :
>
> in the endpoints.xml, serviceBeans is ill-declared
>
> <jaxrs:server id="rest-customerService" address="/rest/">
> <jaxrs:serviceBeans>
> <list>
> <ref bean="pojo-customerService" />
> </list>
> </jaxrs:serviceBeans>
>
> I have to remove <list> and it's work.
>
> Thx everyone.
>
>
> Le 23/09/2010 17:02, benoit villaumie a écrit :
>
> Thanks for your reply Sergey.
>>
>> As you suggested, I have tried a basic implementation without any api.
>> However, I have the exception.
>>
>> 23 sept. 2010 16:53:15 org.apache.catalina.startup.HostConfig deployWAR
>> INFO: D�ploiement de l'archive
>> jsonoverhttp-cxf-server-2.0.0-SNAPSHOT.war de l'application web
>> 23 sept. 2010 16:53:15 org.apache.catalina.loader.WebappClassLoader
>> validateJarFile
>> INFO:
>>
>> validateJarFile(C:\bvillaumie\localhost\apache-tomcat-6.0.x-standalone\work\Catalina\localhost\jsonoverhttp-cxf-server-2.0.0-SNAPSHOT\WEB-INF\lib\geronimo-servlet_2.5_spec-1.2.jar)
>> - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending
>> class: javax/servlet/Servlet.class
>> 23 sept. 2010 16:53:15 org.springframework.web.context.ContextLoader
>> initWebApplicationContext
>> INFO: Root WebApplicationContext: initialization started
>> 23 sept. 2010 16:53:15
>> org.springframework.context.support.AbstractApplicationContext
>> prepareRefresh
>> INFO: Refreshing
>> org.springframework.web.context.support.XmlWebApplicationContext@6210fb
>> :
>> display name [Root WebApplicationContext]; startup date [Thu Sep 23
>> 16:53:15 CEST 2010]; root of context hierarchy
>> 23 sept. 2010 16:53:15
>> org.springframework.beans.factory.xml.XmlBeanDefinitionReader
>> loadBeanDefinitions
>> INFO: Loading XML bean definitions from ServletContext resource
>> [/WEB-INF/service-servlet.xml]
>> 23 sept. 2010 16:53:16
>> org.springframework.beans.factory.xml.XmlBeanDefinitionReader
>> loadBeanDefinitions
>> INFO: Loading XML bean definitions from class path resource
>> [META-INF/cxf/cxf.xml]
>> 23 sept. 2010 16:53:16
>> org.springframework.beans.factory.xml.XmlBeanDefinitionReader
>> loadBeanDefinitions
>> INFO: Loading XML bean definitions from class path resource
>> [META-INF/cxf/cxf-servlet.xml]
>> 23 sept. 2010 16:53:16
>> org.springframework.beans.factory.xml.XmlBeanDefinitionReader
>> loadBeanDefinitions
>> INFO: Loading XML bean definitions from class path resource
>> [META-INF/cxf/cxf-extension-jaxrs-binding.xml]
>> 23 sept. 2010 16:53:16
>> org.springframework.beans.factory.xml.XmlBeanDefinitionReader
>> loadBeanDefinitions
>> INFO: Loading XML bean definitions from class path resource
>> [META-INF/spring/json-over-http/endpoints.xml]
>> 23 sept. 2010 16:53:16
>> org.springframework.context.support.AbstractApplicationContext
>> obtainFreshBeanFactory
>> INFO: Bean factory for application context
>> [org.springframework.web.context.support.XmlWebApplicationContext@6210fb
>> ]:
>>
>> org.springframework.beans.factory.support.DefaultListableBeanFactory@70610a
>> 23 sept. 2010 16:53:16
>> org.springframework.beans.factory.support.DefaultListableBeanFactory
>> preInstantiateSingletons
>> INFO: Pre-instantiating singletons in
>>
>> org.springframework.beans.factory.support.DefaultListableBeanFactory@70610a
>> :
>> defining beans
>>
>> [cxf,org.apache.cxf.bus.spring.BusApplicationListener,org.apache.cxf.bus.spring.BusWiringBeanFactoryPostProcessor,org.apache.cxf.bus.spring.Jsr250BeanPostProcessor,org.apache.cxf.bus.spring.BusExtensionPostProcessor,org.apache.cxf.resource.ResourceManager,org.apache.cxf.configuration.Configurer,org.apache.cxf.binding.BindingFactoryManager,org.apache.cxf.transport.DestinationFactoryManager,org.apache.cxf.transport.ConduitInitiatorManager,org.apache.cxf.wsdl.WSDLManager,org.apache.cxf.phase.PhaseManager,org.apache.cxf.workqueue.WorkQueueManager,org.apache.cxf.buslifecycle.BusLifeCycleManager,org.apache.cxf.endpoint.ServerRegistry,org.apache.cxf.endpoint.ServerLifeCycleManager,org.apache.cxf.endpoint.ClientLifeCycleManager,org.apache.cxf.transports.http.QueryHandlerRegistry,org.apache.cxf.endpoint.EndpointResolverRegistry,org.apache.cxf.headers.HeaderManager,org.apache.cxf.catalog.OASISCatalogManager,org.apache.cxf.endpoint.ServiceContractResolverRegistry,org.apache.cxf.transport.servlet.ServletTransportFactory,org.apache.cxf.jaxrs.JAXRSBindingFactory,pojo-customerService,rest-customerService];
>> root of factory hierarchy
>> 23 sept. 2010 16:53:16 org.apache.cxf.jaxrs.utils.ResourceUtils
>> checkMethodDispatcher
>> ATTENTION: No resource methods have been found for resource class
>> java.util.ArrayList
>> 23 sept. 2010 16:53:16 org.apache.cxf.jaxrs.AbstractJAXRSFactoryBean
>> checkResources
>> GRAVE: No resource classes found
>> 23 sept. 2010 16:53:16
>> org.springframework.beans.factory.support.DefaultSingletonBeanRegistry
>> destroySingletons
>> INFO: Destroying singletons in
>>
>> org.springframework.beans.factory.support.DefaultListableBeanFactory@70610a
>> :
>> defining beans
>>
>> [cxf,org.apache.cxf.bus.spring.BusApplicationListener,org.apache.cxf.bus.spring.BusWiringBeanFactoryPostProcessor,org.apache.cxf.bus.spring.Jsr250BeanPostProcessor,org.apache.cxf.bus.spring.BusExtensionPostProcessor,org.apache.cxf.resource.ResourceManager,org.apache.cxf.configuration.Configurer,org.apache.cxf.binding.BindingFactoryManager,org.apache.cxf.transport.DestinationFactoryManager,org.apache.cxf.transport.ConduitInitiatorManager,org.apache.cxf.wsdl.WSDLManager,org.apache.cxf.phase.PhaseManager,org.apache.cxf.workqueue.WorkQueueManager,org.apache.cxf.buslifecycle.BusLifeCycleManager,org.apache.cxf.endpoint.ServerRegistry,org.apache.cxf.endpoint.ServerLifeCycleManager,org.apache.cxf.endpoint.ClientLifeCycleManager,org.apache.cxf.transports.http.QueryHandlerRegistry,org.apache.cxf.endpoint.EndpointResolverRegistry,org.apache.cxf.headers.HeaderManager,org.apache.cxf.catalog.OASISCatalogManager,org.apache.cxf.endpoint.ServiceContractResolverRegistry,org.apache.cxf.transport.servlet.ServletTransportFactory,org.apache.cxf.jaxrs.JAXRSBindingFactory,pojo-customerService,rest-customerService];
>> root of factory hierarchy
>> 23 sept. 2010 16:53:16 org.springframework.web.context.ContextLoader
>> initWebApplicationContext
>> GRAVE: Context initialization failed
>> org.springframework.beans.factory.BeanCreationException: Error
>> creating bean with name 'rest-customerService': Invocation of init
>> method failed; nested exception is
>> org.apache.cxf.service.factory.ServiceConstructionException
>> at
>>
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1338)
>> at
>>
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:473)
>> at
>>
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
>> at java.security.AccessController.doPrivileged(Native Method)
>> at
>>
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
>> at
>>
>> org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
>> at
>>
>> org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
>> at
>>
>> org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
>> at
>>
>> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
>> at
>>
>> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
>> at
>>
>> org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429)
>> at
>>
>> org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728)
>> at
>>
>> org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:380)
>> at
>>
>> org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255)
>> at
>>
>> org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199)
>> at
>>
>> org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45)
>> at
>>
>> org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3843)
>> at
>>
>> org.apache.catalina.core.StandardContext.start(StandardContext.java:4342)
>> at
>>
>> org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
>> at
>> org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
>> at
>> org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
>> at
>> org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:830)
>> at
>> org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:719)
>> at
>> org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:490)
>> at
>> org.apache.catalina.startup.HostConfig.start(HostConfig.java:1149)
>> at
>>
>> org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
>> at
>>
>> org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
>> at
>> org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
>> at
>> org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
>> at
>> org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
>> at
>> org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
>> at
>> org.apache.catalina.core.StandardService.start(StandardService.java:516)
>> at
>> org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
>> at org.apache.catalina.startup.Catalina.start(Catalina.java:578)
>> 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:597)
>> at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
>> at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
>> Caused by: org.apache.cxf.service.factory.ServiceConstructionException
>> at
>>
>> org.apache.cxf.jaxrs.JAXRSServerFactoryBean.create(JAXRSServerFactoryBean.java:122)
>> 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:597)
>> at
>>
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1414)
>> at
>>
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1375)
>> at
>>
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1335)
>> ... 39 more
>> Caused by: javax.ws.rs.WebApplicationException
>> at
>>
>> org.apache.cxf.jaxrs.AbstractJAXRSFactoryBean.checkResources(AbstractJAXRSFactoryBean.java:238)
>> at
>>
>> org.apache.cxf.jaxrs.JAXRSServerFactoryBean.create(JAXRSServerFactoryBean.java:85)
>> ... 46 more
>> 23 sept. 2010 16:53:16 org.apache.catalina.core.StandardContext start
>> GRAVE: Error listenerStart
>> 23 sept. 2010 16:53:16 org.apache.catalina.core.StandardContext start
>> GRAVE: Erreur de d�marrage du contexte
>> [/jsonoverhttp-cxf-server-2.0.0-SNAPSHOT] suite aux erreurs
>> pr�c�dentes
>>
>> My implementation is :
>>
>> package com.karavel.tutorial.backend.cxf;
>>
>> import java.util.Date;
>>
>> import javax.ws.rs.Consumes;
>> import javax.ws.rs.GET;
>> import javax.ws.rs.Path;
>> import javax.ws.rs.Produces;
>>
>> @Path("/tutorial/")
>> @Consumes("application/json")
>> @Produces("application/json")
>>
>> public class TutorialServiceJsonOverHttpFacadeImpl {
>>
>> public TutorialServiceJsonOverHttpFacadeImpl() {
>> super();
>> }
>>
>> @GET
>> @Path("echo")
>> public String echo() {
>> return "hello world @"+new Date();
>> }
>> }
>>
>> The web.xml is
>>
>> <?xml version="1.0" encoding="UTF-8"?>
>>
>> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>> xmlns="http://java.sun.com/xml/ns/javaee"
>> xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
>> xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
>> http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
>> id="services" version="2.5">
>>
>> <context-param>
>> <param-name>contextConfigLocation</param-name>
>> <param-value>/WEB-INF/service-servlet.xml</param-value>
>> </context-param>
>> <listener>
>> <listener-class>
>> org.springframework.web.context.ContextLoaderListener
>> </listener-class>
>> </listener>
>> <servlet>
>> <servlet-name>CXFServlet</servlet-name>
>> <servlet-class>
>> org.apache.cxf.transport.servlet.CXFServlet
>> </servlet-class>
>> </servlet>
>> <servlet-mapping>
>> <servlet-name>CXFServlet</servlet-name>
>> <url-pattern>/*</url-pattern>
>> </servlet-mapping>
>> </web-app>
>>
>>
>> The service-servlet.xml is
>>
>> <beans xmlns="http://www.springframework.org/schema/beans"
>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>> xmlns:jaxws="http://cxf.apache.org/jaxws"
>> xsi:schemaLocation="
>> http://www.springframework.org/schema/beans
>> http://www.springframework.org/schema/beans/spring-beans.xsd
>> http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
>> http://camel.apache.org/schema/spring
>> http://camel.apache.org/schema/spring/camel-spring-2.3.0.xsd">
>>
>> <import resource="classpath:META-INF/cxf/cxf.xml" />
>> <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
>>
>> <!-- support rest json -->
>> <import
>> resource="classpath:META-INF/cxf/cxf-extension-jaxrs-binding.xml"/>
>> <import
>> resource="classpath:META-INF/spring/json-over-http/endpoints.xml" />
>>
>> </beans>
>>
>> And the endpoints.xml is
>>
>> <beans xmlns="http://www.springframework.org/schema/beans"
>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>> xmlns:cxf="http://cxf.apache.org/core"
>> xmlns:jaxws="http://cxf.apache.org/jaxws"
>> xmlns:jaxrs="http://cxf.apache.org/jaxrs"
>> xsi:schemaLocation="
>> http://www.springframework.org/schema/beans
>> http://www.springframework.org/schema/beans/spring-beans.xsd
>> http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
>> http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
>> http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd
>> http://camel.apache.org/schema/spring
>> http://camel.apache.org/schema/spring/camel-spring-2.3.0.xsd">
>>
>> <bean id="pojo-customerService"
>>
>> class="com.karavel.tutorial.backend.cxf.TutorialServiceJsonOverHttpFacadeImpl"
>> />
>>
>> <!-- for incoming http/json -->
>> <jaxrs:server id="rest-customerService" address="/rest/">
>> <jaxrs:serviceBeans>
>> <list>
>> <ref bean="pojo-customerService" />
>> </list>
>> </jaxrs:serviceBeans>
>> <jaxrs:extensionMappings>
>> <!-- entry key="feed" value="application/atom+xml"/-->
>> <entry key="json" value="application/json" />
>> <!--entry key="xml" value="application/xml"/-->
>> <!--entry key="html" value="text/html"/-->
>> </jaxrs:extensionMappings>
>> </jaxrs:server>
>>
>> </beans>
>>
>> The dependdncy tree of the project is
>>
>> INFO]
>> upgrade.karavel.tutorial:jsonoverhttp-cxf-server:war:2.0.0-SNAPSHOT
>> INFO] +- javax.ws.rs:jsr311-api:jar:1.1.1:compile
>> INFO] \- org.apache.cxf:cxf-bundle-jaxrs:jar:2.2.9:compile
>> INFO] +- org.springframework:spring-core:jar:2.5.6:compile
>> INFO] +- commons-logging:commons-logging:jar:1.1.1:compile
>> INFO] +- org.springframework:spring-beans:jar:2.5.6:compile
>> INFO] +- org.springframework:spring-context:jar:2.5.6:compile
>> INFO] +- aopalliance:aopalliance:jar:1.0:compile
>> INFO] +-
>> org.apache.geronimo.specs:geronimo-annotation_1.0_spec:jar:1.1.1:compile
>> INFO] +- javax.xml.bind:jaxb-api:jar:2.1:compile
>> INFO] +-
>> org.apache.geronimo.specs:geronimo-stax-api_1.0_spec:jar:1.0.1:compile
>> INFO] +- wsdl4j:wsdl4j:jar:1.6.2:compile
>> INFO] +- org.apache.ws.commons.schema:XmlSchema:jar:1.4.5:compile
>> INFO] +- commons-lang:commons-lang:jar:2.4:compile
>> INFO] +-
>> org.apache.geronimo.specs:geronimo-activation_1.1_spec:jar:1.0.2:compile
>> INFO] +- org.codehaus.woodstox:wstx-asl:jar:3.2.9:compile
>> INFO] +- org.apache.neethi:neethi:jar:2.0.4:compile
>> INFO] +- com.sun.xml.bind:jaxb-impl:jar:2.1.13:compile
>> INFO] +-
>> org.apache.geronimo.specs:geronimo-javamail_1.4_spec:jar:1.6:compile
>> INFO] +- org.springframework:spring-web:jar:2.5.6:compile
>> INFO] +- org.mortbay.jetty:jetty:jar:6.1.21:compile
>> INFO] +- org.mortbay.jetty:jetty-util:jar:6.1.21:compile
>> INFO] +- org.slf4j:slf4j-api:jar:1.5.8:runtime
>> INFO] +-
>> org.apache.geronimo.specs:geronimo-servlet_2.5_spec:jar:1.2:compile
>> INFO] +- org.apache.abdera:abdera-core:jar:1.0:compile
>> INFO] +- org.apache.abdera:abdera-i18n:jar:1.0:compile
>> INFO] +- commons-codec:commons-codec:jar:1.3:compile
>> INFO] +- org.apache.abdera:abdera-parser:jar:1.0:compile
>> INFO] +- org.apache.ws.commons.axiom:axiom-impl:jar:1.2.7:compile
>> INFO] +- org.apache.ws.commons.axiom:axiom-api:jar:1.2.7:compile
>> INFO] +- jaxen:jaxen:jar:1.1.1:compile
>> INFO] +- org.apache.abdera:abdera-extensions-json:jar:1.0:compile
>> INFO] +- org.apache.abdera:abdera-extensions-main:jar:1.0:compile
>> INFO] +- org.codehaus.jettison:jettison:jar:1.2:compile
>> INFO] \- org.apache.xmlbeans:xmlbeans:jar:2.4.0:compile
>> INFO]
>>
>> I a must be a very basic mustake, but the stack trace give me no hints...
>>
>>
>> Le 15/09/2010 18:55, Sergey Beryozkin a écrit :
>>
>>> Hi
>>>
>>> there should be a log record reporting the cause, but from the trace I
>>> can
>>> see that the
>>> "pojo-customerService" bean is not being recognized as a valid JAX-RS
>>> root
>>> resource.
>>>
>>> Try deploying a JAXRS endpoint only, without JAXWS annotations. If it
>>> works
>>> then the JAXRS runtime is being confused by the additional annotations,
>>> should not be the case, but it is worth checking.
>>>
>>> Try removing the interface just for a test, there were some similar cases
>>> reported before, where JAXRS annotations were spread across the interface
>>> and the implementation class, ex, interface methods had all the @Path
>>> annotations but the impl class was effectively hiding them by having
>>> annotations such as @QueryParam only...
>>>
>>> Something is interfering in the process so please try to isolate the
>>> cause.
>>>
>>> Let us know if you can make it work
>>>
>>> cheers, Sergey
>>>
>>> On Wed, Sep 15, 2010 at 2:37 PM, benoit villaumie<bvillaumie@karavel.com
>>> >wrote:
>>>
>>> Hello everyone,
>>>>
>>>> I am trying to expose a service using http/json via cxf.
>>>> However, I issue a stacktrace at the startup of the webapp :
>>>>
>>>> 14:49:44,648 | {main} | [WARN ] |
>>>> [org.springframework.beans.GenericTypeAwarePropertyDescriptor] :
>>>> Invalid JavaBean property 'serviceBeans' being accessed! Ambiguous
>>>> write methods found next to actually used [public void
>>>>
>>>> org.apache.cxf.jaxrs.JAXRSServerFactoryBean.setServiceBeans(java.util.List)]:
>>>>
>>>> [public void
>>>>
>>>> org.apache.cxf.jaxrs.JAXRSServerFactoryBean.setServiceBeans(java.lang.Object[])]
>>>>
>>>> 14:49:44,695 | {main} | [INFO ] |
>>>> [org.springframework.beans.factory.support.DefaultListableBeanFactory]
>>>> : Destroying singletons in
>>>>
>>>>
>>>> org.springframework.beans.factory.support.DefaultListableBeanFactory@1861086
>>>> :
>>>> defining beans
>>>>
>>>> [cxf,org.apache.cxf.bus.spring.BusApplicationListener,org.apache.cxf.bus.spring.BusWiringBeanFactoryPostProcessor,org.apache.cxf.bus.spring.Jsr250BeanPostProcessor,org.apache.cxf.bus.spring.BusExtensionPostProcessor,org.apache.cxf.resource.ResourceManager,org.apache.cxf.configuration.Configurer,org.apache.cxf.binding.BindingFactoryManager,org.apache.cxf.transport.DestinationFactoryManager,org.apache.cxf.transport.ConduitInitiatorManager,org.apache.cxf.wsdl.WSDLManager,org.apache.cxf.phase.PhaseManager,org.apache.cxf.workqueue.WorkQueueManager,org.apache.cxf.buslifecycle.BusLifeCycleManager,org.apache.cxf.endpoint.ServerRegistry,org.apache.cxf.endpoint.ServerLifeCycleManager,org.apache.cxf.endpoint.ClientLifeCycleManager,org.apache.cxf.transports.http.QueryHandlerRegistry,org.apache.cxf.endpoint.EndpointResolverRegistry,org.apache.cxf.headers.HeaderManager,org.apache.cxf.catalog.OASISCatalogManager,org.apache.cxf.endpoint.ServiceContractResolverRegistry,org.apache.cxf
>>>>
>>>>
>>>> .binding.soap.SoapBindingFactory,org.apache.cxf.binding.soap.SoapTransportFactory,org.apache.cxf.binding.soap.customEditorConfigurer,org.apache.cxf.transport.servlet.ServletTransportFactory,org.apache.camel.component.cxf.transport.CamelTransportFactory#0,org.apache.cxf.transport.http.policy.HTTPClientAssertionBuilder,org.apache.cxf.transport.http.policy.HTTPServerAssertionBuilder,org.apache.cxf.transport.http.policy.NoOpPolicyInterceptorProvider,org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory,jms-customerService-ConnectionFactory,jms-customerService-PooledConnectionFactory,jms-customerService-Config,pojo-customerService,rest-customerService,http-customerService,jms-customerService,direct-customerService,template,consumerTemplate,camelContext-server:beanPostProcessor,camelContext-server,org.apache.camel.component.cxf.transport.CamelTransportFactory#1];
>>>>
>>>> root of factory hierarchy
>>>> 14:49:44,695 | {main} | [ERROR] |
>>>> [org.springframework.web.context.ContextLoader] : Context
>>>> initialization failed
>>>> org.springframework.beans.factory.BeanCreationException: Error
>>>> creating bean with name 'rest-customerService': Invocation of init
>>>> method failed; nested exception is
>>>> org.apache.cxf.service.factory.ServiceConstructionException
>>>> at
>>>>
>>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1412)
>>>>
>>>> at
>>>>
>>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
>>>>
>>>> at
>>>>
>>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
>>>>
>>>> at
>>>>
>>>> org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291)
>>>>
>>>> at
>>>>
>>>> org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
>>>>
>>>> at
>>>>
>>>> org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288)
>>>>
>>>> at
>>>>
>>>> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)
>>>>
>>>> at
>>>>
>>>> org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:574)
>>>>
>>>> at
>>>>
>>>> org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895)
>>>>
>>>> at
>>>>
>>>> org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425)
>>>>
>>>> at
>>>>
>>>> org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255)
>>>>
>>>> at
>>>>
>>>> org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199)
>>>>
>>>> at
>>>>
>>>> org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45)
>>>>
>>>> at
>>>>
>>>> org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3843)
>>>>
>>>> at
>>>>
>>>> org.apache.catalina.core.StandardContext.start(StandardContext.java:4342)
>>>> at
>>>>
>>>> org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
>>>>
>>>> at
>>>>
>>>> org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
>>>> at
>>>> org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
>>>> at
>>>> org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:830)
>>>> at
>>>> org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:719)
>>>> at
>>>> org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:490)
>>>> at
>>>> org.apache.catalina.startup.HostConfig.start(HostConfig.java:1149)
>>>> at
>>>>
>>>> org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
>>>>
>>>> at
>>>>
>>>> org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
>>>>
>>>> at
>>>> org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
>>>> at
>>>> org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
>>>> at
>>>> org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
>>>> at
>>>> org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
>>>> at
>>>>
>>>> org.apache.catalina.core.StandardService.start(StandardService.java:516)
>>>> at
>>>> org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
>>>> at org.apache.catalina.startup.Catalina.start(Catalina.java:578)
>>>> 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:597)
>>>> at
>>>> org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
>>>> at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
>>>> Caused by: org.apache.cxf.service.factory.ServiceConstructionException
>>>> at
>>>>
>>>> org.apache.cxf.jaxrs.JAXRSServerFactoryBean.create(JAXRSServerFactoryBean.java:125)
>>>>
>>>> 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:597)
>>>> at
>>>>
>>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1536)
>>>>
>>>> at
>>>>
>>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1477)
>>>>
>>>> at
>>>>
>>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1409)
>>>>
>>>> ... 36 more
>>>> Caused by: javax.ws.rs.WebApplicationException
>>>> at
>>>>
>>>> org.apache.cxf.jaxrs.AbstractJAXRSFactoryBean.checkResources(AbstractJAXRSFactoryBean.java:262)
>>>>
>>>> at
>>>>
>>>> org.apache.cxf.jaxrs.JAXRSServerFactoryBean.create(JAXRSServerFactoryBean.java:85)
>>>>
>>>> ... 43 more
>>>>
>>>> The error message gave me no hints. Can someone helps or encountered
>>>> similar stack ?
>>>>
>>>> I am using cxf 2.2.9 (try also with 2.2.10). For information soap over
>>>> http
>>>> and soap over jms were working before the test with json. Other spring
>>>> files
>>>> are not copy/paste (mainly related to soap over jms integration)
>>>>
>>>> the spring configuration is
>>>>
>>>> <beans xmlns="http://www.springframework.org/schema/beans"
>>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>>> xmlns:cxf="http://cxf.apache.org/core"
>>>> xmlns:jaxws="http://cxf.apache.org/jaxws"
>>>> xmlns:jaxrs="http://cxf.apache.org/jaxrs"
>>>> xsi:schemaLocation="
>>>> http://www.springframework.org/schema/beans
>>>> http://www.springframework.org/schema/beans/spring-beans.xsd
>>>> http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
>>>> http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
>>>> http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd
>>>> http://camel.apache.org/schema/spring
>>>> http://camel.apache.org/schema/spring/camel-spring-2.3.0.xsd">
>>>>
>>>> <bean id="pojo-customerService"
>>>> class="com.karavel.tutorial.backend.impl.ComponentImpl" />
>>>>
>>>> <!-- for incoming http/json -->
>>>> <jaxrs:server id="rest-customerService" address="/rest/">
>>>> <jaxrs:serviceBeans>
>>>> <list>
>>>> <ref bean="pojo-customerService" />
>>>> </list>
>>>> </jaxrs:serviceBeans>
>>>> <jaxrs:extensionMappings>
>>>> <!-- entry key="feed" value="application/atom+xml"/-->
>>>> <entry key="json" value="application/json" />
>>>> <!--entry key="xml" value="application/xml"/-->
>>>> <!--entry key="html" value="text/html"/-->
>>>> </jaxrs:extensionMappings>
>>>> </jaxrs:server>
>>>>
>>>> <!-- for incoming http/soap -->
>>>> <jaxws:endpoint id="http-customerService"
>>>> implementor="#pojo-customerService"
>>>> address="/service" />
>>>>
>>>> <!-- for incoming jms/soap -->
>>>> <!-- http://camel.apache.org/jms.html -->
>>>> <!-- http://camel.apache.org/activemq.html -->
>>>> <bean id="jms-customerService"
>>>> class="org.apache.activemq.camel.component.ActiveMQComponent">
>>>> <property name="configuration" ref="jms-customerService-Config" />
>>>> <property name="useMessageIDAsCorrelationID" value="true" />
>>>> <property name="requestTimeout" value="20000" /> <!-- ms, time
>>>> between post and consumption in the queue -->
>>>> <property name="receiveTimeout" value="5000" /> <!-- ms -->
>>>> </bean>
>>>> <jaxws:endpoint id="direct-customerService"
>>>> implementor="#pojo-customerService"
>>>> address="camel://direct:customerService">
>>>> <jaxws:features>
>>>> <!-- Enables logging of SOAP messages. -->
>>>> <logging xmlns="http://cxf.apache.org/core" />
>>>> </jaxws:features>
>>>> </jaxws:endpoint>
>>>>
>>>> </beans>
>>>>
>>>>
>>>> The java interface is
>>>>
>>>> @WebService
>>>> @Path("/json")
>>>> public interface ICustomerFacadeService extends ICustomerService {
>>>>
>>>> @GET
>>>> @Path("/fake_echo")
>>>> public String fake_echo();
>>>>
>>>>
>>>> @WebResult(name = "echo")
>>>> @WebMethod
>>>> public String echo(@WebParam(name = "string") String string,
>>>> @WebParam(name = "time-to-sleep-in-ms") long timeToSleepInMs);
>>>>
>>>>
>>>> @WebResult(name = "getCustomerByName1Out")
>>>> @WebMethod
>>>> public CustomerSyntheseVO getCustomerByName1(
>>>> @WebParam(name = "name") String name ) throws
>>>> NoSuchCustomerException;
>>>>
>>>>
>>>> @WebResult(name = "getCustomersByName1Out")
>>>> @WebMethod
>>>> public CustomerSyntheseVO[] getCustomersByName1(
>>>> @WebParam(name = "name") String name ) throws
>>>> NoSuchCustomerException;
>>>>
>>>> @WebResult(name = "getCustomersByName2Out")
>>>> @WebMethod
>>>> public CustomerSyntheseVO[] getCustomersByName2(
>>>> @WebParam(name = "name") String name );
>>>>
>>>> @WebResult(name = "new_methodOut")
>>>> @WebMethod
>>>> public NewOutVO new_method(@WebParam(name = "in") NewInVO in);
>>>>
>>>> @WebMethod
>>>> @Oneway
>>>> public void insertWithoutException(@WebParam(name = "in") String
>>>> name);
>>>> }
>>>>
>>>> Thanks for your help.
>>>>
>>>>
>>>>
>>>>
>>
>>
>
> --
> Benoit Villaumié
> Karavel / Promovacances - Responsable Architecture
> Tel. 01 48 01 51 88
> --
>
>
>
Re: CXF+Spring+Json : Error creating bean with name ... ; nested
exception is org.apache.cxf.service.factory.ServiceConstructionException
Posted by benoit villaumie <bv...@karavel.com>.
I finally found the problem :
in the endpoints.xml, serviceBeans is ill-declared
<jaxrs:server id="rest-customerService" address="/rest/">
<jaxrs:serviceBeans>
<list>
<ref bean="pojo-customerService" />
</list>
</jaxrs:serviceBeans>
I have to remove <list> and it's work.
Thx everyone.
Le 23/09/2010 17:02, benoit villaumie a écrit :
> Thanks for your reply Sergey.
>
> As you suggested, I have tried a basic implementation without any api.
> However, I have the exception.
>
> 23 sept. 2010 16:53:15 org.apache.catalina.startup.HostConfig
> deployWAR
> INFO: D�ploiement de l'archive
> jsonoverhttp-cxf-server-2.0.0-SNAPSHOT.war de l'application web
> 23 sept. 2010 16:53:15 org.apache.catalina.loader.WebappClassLoader
> validateJarFile
> INFO:
>
> validateJarFile(C:\bvillaumie\localhost\apache-tomcat-6.0.x-standalone\work\Catalina\localhost\jsonoverhttp-cxf-server-2.0.0-SNAPSHOT\WEB-INF\lib\geronimo-servlet_2.5_spec-1.2.jar)
> - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending
> class: javax/servlet/Servlet.class
> 23 sept. 2010 16:53:15 org.springframework.web.context.ContextLoader
> initWebApplicationContext
> INFO: Root WebApplicationContext: initialization started
> 23 sept. 2010 16:53:15
> org.springframework.context.support.AbstractApplicationContext
> prepareRefresh
> INFO: Refreshing
>
> org.springframework.web.context.support.XmlWebApplicationContext@6210fb:
> display name [Root WebApplicationContext]; startup date [Thu Sep 23
> 16:53:15 CEST 2010]; root of context hierarchy
> 23 sept. 2010 16:53:15
> org.springframework.beans.factory.xml.XmlBeanDefinitionReader
> loadBeanDefinitions
> INFO: Loading XML bean definitions from ServletContext resource
> [/WEB-INF/service-servlet.xml]
> 23 sept. 2010 16:53:16
> org.springframework.beans.factory.xml.XmlBeanDefinitionReader
> loadBeanDefinitions
> INFO: Loading XML bean definitions from class path resource
> [META-INF/cxf/cxf.xml]
> 23 sept. 2010 16:53:16
> org.springframework.beans.factory.xml.XmlBeanDefinitionReader
> loadBeanDefinitions
> INFO: Loading XML bean definitions from class path resource
> [META-INF/cxf/cxf-servlet.xml]
> 23 sept. 2010 16:53:16
> org.springframework.beans.factory.xml.XmlBeanDefinitionReader
> loadBeanDefinitions
> INFO: Loading XML bean definitions from class path resource
> [META-INF/cxf/cxf-extension-jaxrs-binding.xml]
> 23 sept. 2010 16:53:16
> org.springframework.beans.factory.xml.XmlBeanDefinitionReader
> loadBeanDefinitions
> INFO: Loading XML bean definitions from class path resource
> [META-INF/spring/json-over-http/endpoints.xml]
> 23 sept. 2010 16:53:16
> org.springframework.context.support.AbstractApplicationContext
> obtainFreshBeanFactory
> INFO: Bean factory for application context
>
> [org.springframework.web.context.support.XmlWebApplicationContext@6210fb]:
>
> org.springframework.beans.factory.support.DefaultListableBeanFactory@70610a
> 23 sept. 2010 16:53:16
> org.springframework.beans.factory.support.DefaultListableBeanFactory
> preInstantiateSingletons
> INFO: Pre-instantiating singletons in
>
> org.springframework.beans.factory.support.DefaultListableBeanFactory@70610a:
> defining beans
>
> [cxf,org.apache.cxf.bus.spring.BusApplicationListener,org.apache.cxf.bus.spring.BusWiringBeanFactoryPostProcessor,org.apache.cxf.bus.spring.Jsr250BeanPostProcessor,org.apache.cxf.bus.spring.BusExtensionPostProcessor,org.apache.cxf.resource.ResourceManager,org.apache.cxf.configuration.Configurer,org.apache.cxf.binding.BindingFactoryManager,org.apache.cxf.transport.DestinationFactoryManager,org.apache.cxf.transport.ConduitInitiatorManager,org.apache.cxf.wsdl.WSDLManager,org.apache.cxf.phase.PhaseManager,org.apache.cxf.workqueue.WorkQueueManager,org.apache.cxf.buslifecycle.BusLifeCycleManager,org.apache.cxf.endpoint.ServerRegistry,org.apache.cxf.endpoint.ServerLifeCycleManager,org.apache.cxf.endpoint.ClientLifeCycleManager,org.apache.cxf.transports.http.QueryHandlerRegistry,org.apache.cxf.endpoint.EndpointResolverRegistry,org.apache.cxf.headers.HeaderManager,org.apache.cxf.catalog.OASISCatalogManager,org.apache.cxf.endpoint.ServiceContractResolverRegistry,org.apache.cxf.transport.servlet.ServletTransportFactory,org.apache.cxf.jaxrs.JAXRSBindingFactory,pojo-customerService,rest-customerService];
> root of factory hierarchy
> 23 sept. 2010 16:53:16 org.apache.cxf.jaxrs.utils.ResourceUtils
> checkMethodDispatcher
> ATTENTION: No resource methods have been found for resource class
> java.util.ArrayList
> 23 sept. 2010 16:53:16 org.apache.cxf.jaxrs.AbstractJAXRSFactoryBean
> checkResources
> GRAVE: No resource classes found
> 23 sept. 2010 16:53:16
> org.springframework.beans.factory.support.DefaultSingletonBeanRegistry
> destroySingletons
> INFO: Destroying singletons in
>
> org.springframework.beans.factory.support.DefaultListableBeanFactory@70610a:
> defining beans
>
> [cxf,org.apache.cxf.bus.spring.BusApplicationListener,org.apache.cxf.bus.spring.BusWiringBeanFactoryPostProcessor,org.apache.cxf.bus.spring.Jsr250BeanPostProcessor,org.apache.cxf.bus.spring.BusExtensionPostProcessor,org.apache.cxf.resource.ResourceManager,org.apache.cxf.configuration.Configurer,org.apache.cxf.binding.BindingFactoryManager,org.apache.cxf.transport.DestinationFactoryManager,org.apache.cxf.transport.ConduitInitiatorManager,org.apache.cxf.wsdl.WSDLManager,org.apache.cxf.phase.PhaseManager,org.apache.cxf.workqueue.WorkQueueManager,org.apache.cxf.buslifecycle.BusLifeCycleManager,org.apache.cxf.endpoint.ServerRegistry,org.apache.cxf.endpoint.ServerLifeCycleManager,org.apache.cxf.endpoint.ClientLifeCycleManager,org.apache.cxf.transports.http.QueryHandlerRegistry,org.apache.cxf.endpoint.EndpointResolverRegistry,org.apache.cxf.headers.HeaderManager,org.apache.cxf.catalog.OASISCatalogManager,org.apache.cxf.endpoint.ServiceContractResolverRegistry,org.apache.cxf.transport.servlet.ServletTransportFactory,org.apache.cxf.jaxrs.JAXRSBindingFactory,pojo-customerService,rest-customerService];
> root of factory hierarchy
> 23 sept. 2010 16:53:16 org.springframework.web.context.ContextLoader
> initWebApplicationContext
> GRAVE: Context initialization failed
> org.springframework.beans.factory.BeanCreationException: Error
> creating bean with name 'rest-customerService': Invocation of init
> method failed; nested exception is
> org.apache.cxf.service.factory.ServiceConstructionException
> at
>
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1338)
> at
>
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:473)
> at
>
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
> at java.security.AccessController.doPrivileged(Native Method)
> at
>
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
> at
>
> org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
> at
>
> org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
> at
>
> org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
> at
>
> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
> at
>
> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
> at
>
> org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429)
> at
>
> org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728)
> at
>
> org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:380)
> at
>
> org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255)
> at
>
> org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199)
> at
>
> org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45)
> at
>
> org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3843)
> at
>
> org.apache.catalina.core.StandardContext.start(StandardContext.java:4342)
> at
>
> org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
> at
>
> org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
> at
> org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
> at
> org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:830)
> at
> org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:719)
> at
> org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:490)
> at
> org.apache.catalina.startup.HostConfig.start(HostConfig.java:1149)
> at
>
> org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
> at
>
> org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
> at
> org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
> at
> org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
> at
> org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
> at
> org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
> at
>
> org.apache.catalina.core.StandardService.start(StandardService.java:516)
> at
> org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
> at org.apache.catalina.startup.Catalina.start(Catalina.java:578)
> 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:597)
> at
> org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
> at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
> Caused by: org.apache.cxf.service.factory.ServiceConstructionException
> at
>
> org.apache.cxf.jaxrs.JAXRSServerFactoryBean.create(JAXRSServerFactoryBean.java:122)
> 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:597)
> at
>
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1414)
> at
>
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1375)
> at
>
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1335)
> ... 39 more
> Caused by: javax.ws.rs.WebApplicationException
> at
>
> org.apache.cxf.jaxrs.AbstractJAXRSFactoryBean.checkResources(AbstractJAXRSFactoryBean.java:238)
> at
>
> org.apache.cxf.jaxrs.JAXRSServerFactoryBean.create(JAXRSServerFactoryBean.java:85)
> ... 46 more
> 23 sept. 2010 16:53:16 org.apache.catalina.core.StandardContext start
> GRAVE: Error listenerStart
> 23 sept. 2010 16:53:16 org.apache.catalina.core.StandardContext start
> GRAVE: Erreur de d�marrage du contexte
> [/jsonoverhttp-cxf-server-2.0.0-SNAPSHOT] suite aux erreurs
> pr�c�dentes
>
> My implementation is :
>
> package com.karavel.tutorial.backend.cxf;
>
> import java.util.Date;
>
> import javax.ws.rs.Consumes;
> import javax.ws.rs.GET;
> import javax.ws.rs.Path;
> import javax.ws.rs.Produces;
>
> @Path("/tutorial/")
> @Consumes("application/json")
> @Produces("application/json")
>
> public class TutorialServiceJsonOverHttpFacadeImpl {
>
> public TutorialServiceJsonOverHttpFacadeImpl() {
> super();
> }
>
> @GET
> @Path("echo")
> public String echo() {
> return "hello world @"+new Date();
> }
> }
>
> The web.xml is
>
> <?xml version="1.0" encoding="UTF-8"?>
>
> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xmlns="http://java.sun.com/xml/ns/javaee"
> xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
> xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
> http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
> id="services" version="2.5">
>
> <context-param>
> <param-name>contextConfigLocation</param-name>
> <param-value>/WEB-INF/service-servlet.xml</param-value>
> </context-param>
> <listener>
> <listener-class>
> org.springframework.web.context.ContextLoaderListener
> </listener-class>
> </listener>
> <servlet>
> <servlet-name>CXFServlet</servlet-name>
> <servlet-class>
> org.apache.cxf.transport.servlet.CXFServlet
> </servlet-class>
> </servlet>
> <servlet-mapping>
> <servlet-name>CXFServlet</servlet-name>
> <url-pattern>/*</url-pattern>
> </servlet-mapping>
> </web-app>
>
>
> The service-servlet.xml is
>
> <beans xmlns="http://www.springframework.org/schema/beans"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xmlns:jaxws="http://cxf.apache.org/jaxws"
> xsi:schemaLocation="
> http://www.springframework.org/schema/beans
> http://www.springframework.org/schema/beans/spring-beans.xsd
> http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
> http://camel.apache.org/schema/spring
> http://camel.apache.org/schema/spring/camel-spring-2.3.0.xsd">
>
> <import resource="classpath:META-INF/cxf/cxf.xml" />
> <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
>
> <!-- support rest json -->
> <import
> resource="classpath:META-INF/cxf/cxf-extension-jaxrs-binding.xml"/>
> <import
> resource="classpath:META-INF/spring/json-over-http/endpoints.xml" />
>
> </beans>
>
> And the endpoints.xml is
>
> <beans xmlns="http://www.springframework.org/schema/beans"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xmlns:cxf="http://cxf.apache.org/core"
> xmlns:jaxws="http://cxf.apache.org/jaxws"
> xmlns:jaxrs="http://cxf.apache.org/jaxrs"
> xsi:schemaLocation="
> http://www.springframework.org/schema/beans
> http://www.springframework.org/schema/beans/spring-beans.xsd
> http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
> http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
> http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd
> http://camel.apache.org/schema/spring
> http://camel.apache.org/schema/spring/camel-spring-2.3.0.xsd">
>
> <bean id="pojo-customerService"
>
> class="com.karavel.tutorial.backend.cxf.TutorialServiceJsonOverHttpFacadeImpl"
> />
>
> <!-- for incoming http/json -->
> <jaxrs:server id="rest-customerService" address="/rest/">
> <jaxrs:serviceBeans>
> <list>
> <ref bean="pojo-customerService" />
> </list>
> </jaxrs:serviceBeans>
> <jaxrs:extensionMappings>
> <!-- entry key="feed" value="application/atom+xml"/-->
> <entry key="json" value="application/json" />
> <!--entry key="xml" value="application/xml"/-->
> <!--entry key="html" value="text/html"/-->
> </jaxrs:extensionMappings>
> </jaxrs:server>
>
> </beans>
>
> The dependdncy tree of the project is
>
> INFO]
> upgrade.karavel.tutorial:jsonoverhttp-cxf-server:war:2.0.0-SNAPSHOT
> INFO] +- javax.ws.rs:jsr311-api:jar:1.1.1:compile
> INFO] \- org.apache.cxf:cxf-bundle-jaxrs:jar:2.2.9:compile
> INFO] +- org.springframework:spring-core:jar:2.5.6:compile
> INFO] +- commons-logging:commons-logging:jar:1.1.1:compile
> INFO] +- org.springframework:spring-beans:jar:2.5.6:compile
> INFO] +- org.springframework:spring-context:jar:2.5.6:compile
> INFO] +- aopalliance:aopalliance:jar:1.0:compile
> INFO] +-
>
> org.apache.geronimo.specs:geronimo-annotation_1.0_spec:jar:1.1.1:compile
> INFO] +- javax.xml.bind:jaxb-api:jar:2.1:compile
> INFO] +-
> org.apache.geronimo.specs:geronimo-stax-api_1.0_spec:jar:1.0.1:compile
> INFO] +- wsdl4j:wsdl4j:jar:1.6.2:compile
> INFO] +- org.apache.ws.commons.schema:XmlSchema:jar:1.4.5:compile
> INFO] +- commons-lang:commons-lang:jar:2.4:compile
> INFO] +-
>
> org.apache.geronimo.specs:geronimo-activation_1.1_spec:jar:1.0.2:compile
> INFO] +- org.codehaus.woodstox:wstx-asl:jar:3.2.9:compile
> INFO] +- org.apache.neethi:neethi:jar:2.0.4:compile
> INFO] +- com.sun.xml.bind:jaxb-impl:jar:2.1.13:compile
> INFO] +-
> org.apache.geronimo.specs:geronimo-javamail_1.4_spec:jar:1.6:compile
> INFO] +- org.springframework:spring-web:jar:2.5.6:compile
> INFO] +- org.mortbay.jetty:jetty:jar:6.1.21:compile
> INFO] +- org.mortbay.jetty:jetty-util:jar:6.1.21:compile
> INFO] +- org.slf4j:slf4j-api:jar:1.5.8:runtime
> INFO] +-
> org.apache.geronimo.specs:geronimo-servlet_2.5_spec:jar:1.2:compile
> INFO] +- org.apache.abdera:abdera-core:jar:1.0:compile
> INFO] +- org.apache.abdera:abdera-i18n:jar:1.0:compile
> INFO] +- commons-codec:commons-codec:jar:1.3:compile
> INFO] +- org.apache.abdera:abdera-parser:jar:1.0:compile
> INFO] +- org.apache.ws.commons.axiom:axiom-impl:jar:1.2.7:compile
> INFO] +- org.apache.ws.commons.axiom:axiom-api:jar:1.2.7:compile
> INFO] +- jaxen:jaxen:jar:1.1.1:compile
> INFO] +- org.apache.abdera:abdera-extensions-json:jar:1.0:compile
> INFO] +- org.apache.abdera:abdera-extensions-main:jar:1.0:compile
> INFO] +- org.codehaus.jettison:jettison:jar:1.2:compile
> INFO] \- org.apache.xmlbeans:xmlbeans:jar:2.4.0:compile
> INFO]
>
> I a must be a very basic mustake, but the stack trace give me no
> hints...
>
>
> Le 15/09/2010 18:55, Sergey Beryozkin a écrit :
>> Hi
>>
>> there should be a log record reporting the cause, but from the trace
>> I can
>> see that the
>> "pojo-customerService" bean is not being recognized as a valid JAX-RS
>> root
>> resource.
>>
>> Try deploying a JAXRS endpoint only, without JAXWS annotations. If it
>> works
>> then the JAXRS runtime is being confused by the additional annotations,
>> should not be the case, but it is worth checking.
>>
>> Try removing the interface just for a test, there were some similar
>> cases
>> reported before, where JAXRS annotations were spread across the
>> interface
>> and the implementation class, ex, interface methods had all the @Path
>> annotations but the impl class was effectively hiding them by having
>> annotations such as @QueryParam only...
>>
>> Something is interfering in the process so please try to isolate the
>> cause.
>>
>> Let us know if you can make it work
>>
>> cheers, Sergey
>>
>> On Wed, Sep 15, 2010 at 2:37 PM, benoit
>> villaumie<bv...@karavel.com>wrote:
>>
>>> Hello everyone,
>>>
>>> I am trying to expose a service using http/json via cxf.
>>> However, I issue a stacktrace at the startup of the webapp :
>>>
>>> 14:49:44,648 | {main} | [WARN ] |
>>> [org.springframework.beans.GenericTypeAwarePropertyDescriptor] :
>>> Invalid JavaBean property 'serviceBeans' being accessed! Ambiguous
>>> write methods found next to actually used [public void
>>>
>>> org.apache.cxf.jaxrs.JAXRSServerFactoryBean.setServiceBeans(java.util.List)]:
>>>
>>> [public void
>>>
>>> org.apache.cxf.jaxrs.JAXRSServerFactoryBean.setServiceBeans(java.lang.Object[])]
>>>
>>> 14:49:44,695 | {main} | [INFO ] |
>>>
>>> [org.springframework.beans.factory.support.DefaultListableBeanFactory]
>>> : Destroying singletons in
>>>
>>> org.springframework.beans.factory.support.DefaultListableBeanFactory@1861086
>>>
>>> :
>>> defining beans
>>>
>>> [cxf,org.apache.cxf.bus.spring.BusApplicationListener,org.apache.cxf.bus.spring.BusWiringBeanFactoryPostProcessor,org.apache.cxf.bus.spring.Jsr250BeanPostProcessor,org.apache.cxf.bus.spring.BusExtensionPostProcessor,org.apache.cxf.resource.ResourceManager,org.apache.cxf.configuration.Configurer,org.apache.cxf.binding.BindingFactoryManager,org.apache.cxf.transport.DestinationFactoryManager,org.apache.cxf.transport.ConduitInitiatorManager,org.apache.cxf.wsdl.WSDLManager,org.apache.cxf.phase.PhaseManager,org.apache.cxf.workqueue.WorkQueueManager,org.apache.cxf.buslifecycle.BusLifeCycleManager,org.apache.cxf.endpoint.ServerRegistry,org.apache.cxf.endpoint.ServerLifeCycleManager,org.apache.cxf.endpoint.ClientLifeCycleManager,org.apache.cxf.transports.http.QueryHandlerRegistry,org.apache.cxf.endpoint.EndpointResolverRegistry,org.apache.cxf.headers.HeaderManager,org.apache.cxf.catalog.OASISCatalogManager,org.apache.cxf.endpoint.ServiceContractResolverRegistry,org.apache.cxf
>>>
>>>
>>> .binding.soap.SoapBindingFactory,org.apache.cxf.binding.soap.SoapTransportFactory,org.apache.cxf.binding.soap.customEditorConfigurer,org.apache.cxf.transport.servlet.ServletTransportFactory,org.apache.camel.component.cxf.transport.CamelTransportFactory#0,org.apache.cxf.transport.http.policy.HTTPClientAssertionBuilder,org.apache.cxf.transport.http.policy.HTTPServerAssertionBuilder,org.apache.cxf.transport.http.policy.NoOpPolicyInterceptorProvider,org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory,jms-customerService-ConnectionFactory,jms-customerService-PooledConnectionFactory,jms-customerService-Config,pojo-customerService,rest-customerService,http-customerService,jms-customerService,direct-customerService,template,consumerTemplate,camelContext-server:beanPostProcessor,camelContext-server,org.apache.camel.component.cxf.transport.CamelTransportFactory#1];
>>>
>>> root of factory hierarchy
>>> 14:49:44,695 | {main} | [ERROR] |
>>> [org.springframework.web.context.ContextLoader] : Context
>>> initialization failed
>>> org.springframework.beans.factory.BeanCreationException: Error
>>> creating bean with name 'rest-customerService': Invocation of init
>>> method failed; nested exception is
>>> org.apache.cxf.service.factory.ServiceConstructionException
>>> at
>>>
>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1412)
>>>
>>> at
>>>
>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
>>>
>>> at
>>>
>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
>>>
>>> at
>>>
>>> org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291)
>>>
>>> at
>>>
>>> org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
>>>
>>> at
>>>
>>> org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288)
>>>
>>> at
>>>
>>> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)
>>>
>>> at
>>>
>>> org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:574)
>>>
>>> at
>>>
>>> org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895)
>>>
>>> at
>>>
>>> org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425)
>>>
>>> at
>>>
>>> org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255)
>>>
>>> at
>>>
>>> org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199)
>>>
>>> at
>>>
>>> org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45)
>>>
>>> at
>>>
>>> org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3843)
>>>
>>> at
>>>
>>> org.apache.catalina.core.StandardContext.start(StandardContext.java:4342)
>>> at
>>>
>>> org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
>>>
>>> at
>>>
>>> org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
>>> at
>>>
>>> org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
>>> at
>>>
>>> org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:830)
>>> at
>>>
>>> org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:719)
>>> at
>>>
>>> org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:490)
>>> at
>>> org.apache.catalina.startup.HostConfig.start(HostConfig.java:1149)
>>> at
>>>
>>> org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
>>>
>>> at
>>>
>>> org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
>>>
>>> at
>>>
>>> org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
>>> at
>>> org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
>>> at
>>>
>>> org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
>>> at
>>>
>>> org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
>>> at
>>>
>>> org.apache.catalina.core.StandardService.start(StandardService.java:516)
>>>
>>> at
>>>
>>> org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
>>> at
>>> org.apache.catalina.startup.Catalina.start(Catalina.java:578)
>>> 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:597)
>>> at
>>> org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
>>> at
>>> org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
>>> Caused by:
>>> org.apache.cxf.service.factory.ServiceConstructionException
>>> at
>>>
>>> org.apache.cxf.jaxrs.JAXRSServerFactoryBean.create(JAXRSServerFactoryBean.java:125)
>>>
>>> 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:597)
>>> at
>>>
>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1536)
>>>
>>> at
>>>
>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1477)
>>>
>>> at
>>>
>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1409)
>>>
>>> ... 36 more
>>> Caused by: javax.ws.rs.WebApplicationException
>>> at
>>>
>>> org.apache.cxf.jaxrs.AbstractJAXRSFactoryBean.checkResources(AbstractJAXRSFactoryBean.java:262)
>>>
>>> at
>>>
>>> org.apache.cxf.jaxrs.JAXRSServerFactoryBean.create(JAXRSServerFactoryBean.java:85)
>>>
>>> ... 43 more
>>>
>>> The error message gave me no hints. Can someone helps or encountered
>>> similar stack ?
>>>
>>> I am using cxf 2.2.9 (try also with 2.2.10). For information soap
>>> over http
>>> and soap over jms were working before the test with json. Other
>>> spring files
>>> are not copy/paste (mainly related to soap over jms integration)
>>>
>>> the spring configuration is
>>>
>>> <beans xmlns="http://www.springframework.org/schema/beans"
>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>> xmlns:cxf="http://cxf.apache.org/core"
>>> xmlns:jaxws="http://cxf.apache.org/jaxws"
>>> xmlns:jaxrs="http://cxf.apache.org/jaxrs"
>>> xsi:schemaLocation="
>>> http://www.springframework.org/schema/beans
>>> http://www.springframework.org/schema/beans/spring-beans.xsd
>>> http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
>>> http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
>>> http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd
>>> http://camel.apache.org/schema/spring
>>> http://camel.apache.org/schema/spring/camel-spring-2.3.0.xsd">
>>>
>>> <bean id="pojo-customerService"
>>> class="com.karavel.tutorial.backend.impl.ComponentImpl" />
>>>
>>> <!-- for incoming http/json -->
>>> <jaxrs:server id="rest-customerService" address="/rest/">
>>> <jaxrs:serviceBeans>
>>> <list>
>>> <ref bean="pojo-customerService" />
>>> </list>
>>> </jaxrs:serviceBeans>
>>> <jaxrs:extensionMappings>
>>> <!-- entry key="feed" value="application/atom+xml"/-->
>>> <entry key="json" value="application/json" />
>>> <!--entry key="xml" value="application/xml"/-->
>>> <!--entry key="html" value="text/html"/-->
>>> </jaxrs:extensionMappings>
>>> </jaxrs:server>
>>>
>>> <!-- for incoming http/soap -->
>>> <jaxws:endpoint id="http-customerService"
>>> implementor="#pojo-customerService"
>>> address="/service" />
>>>
>>> <!-- for incoming jms/soap -->
>>> <!-- http://camel.apache.org/jms.html -->
>>> <!-- http://camel.apache.org/activemq.html -->
>>> <bean id="jms-customerService"
>>> class="org.apache.activemq.camel.component.ActiveMQComponent">
>>> <property name="configuration" ref="jms-customerService-Config" />
>>> <property name="useMessageIDAsCorrelationID" value="true" />
>>> <property name="requestTimeout" value="20000" /> <!-- ms, time
>>> between post and consumption in the queue -->
>>> <property name="receiveTimeout" value="5000" /> <!-- ms -->
>>> </bean>
>>> <jaxws:endpoint id="direct-customerService"
>>> implementor="#pojo-customerService"
>>> address="camel://direct:customerService">
>>> <jaxws:features>
>>> <!-- Enables logging of SOAP messages. -->
>>> <logging xmlns="http://cxf.apache.org/core" />
>>> </jaxws:features>
>>> </jaxws:endpoint>
>>>
>>> </beans>
>>>
>>>
>>> The java interface is
>>>
>>> @WebService
>>> @Path("/json")
>>> public interface ICustomerFacadeService extends ICustomerService {
>>>
>>> @GET
>>> @Path("/fake_echo")
>>> public String fake_echo();
>>>
>>>
>>> @WebResult(name = "echo")
>>> @WebMethod
>>> public String echo(@WebParam(name = "string") String string,
>>> @WebParam(name = "time-to-sleep-in-ms") long timeToSleepInMs);
>>>
>>>
>>> @WebResult(name = "getCustomerByName1Out")
>>> @WebMethod
>>> public CustomerSyntheseVO getCustomerByName1(
>>> @WebParam(name = "name") String name ) throws
>>> NoSuchCustomerException;
>>>
>>>
>>> @WebResult(name = "getCustomersByName1Out")
>>> @WebMethod
>>> public CustomerSyntheseVO[] getCustomersByName1(
>>> @WebParam(name = "name") String name ) throws
>>> NoSuchCustomerException;
>>>
>>> @WebResult(name = "getCustomersByName2Out")
>>> @WebMethod
>>> public CustomerSyntheseVO[] getCustomersByName2(
>>> @WebParam(name = "name") String name );
>>>
>>> @WebResult(name = "new_methodOut")
>>> @WebMethod
>>> public NewOutVO new_method(@WebParam(name = "in") NewInVO in);
>>>
>>> @WebMethod
>>> @Oneway
>>> public void insertWithoutException(@WebParam(name = "in") String
>>> name);
>>> }
>>>
>>> Thanks for your help.
>>>
>>>
>>>
>
>
--
Benoit Villaumié
Karavel / Promovacances - Responsable Architecture
Tel. 01 48 01 51 88
--
Re: CXF+Spring+Json : Error creating bean with name ... ; nested
exception is org.apache.cxf.service.factory.ServiceConstructionException
Posted by benoit villaumie <bv...@karavel.com>.
Thanks for your reply Sergey.
As you suggested, I have tried a basic implementation without any api.
However, I have the exception.
23 sept. 2010 16:53:15 org.apache.catalina.startup.HostConfig deployWAR
INFO: D�ploiement de l'archive
jsonoverhttp-cxf-server-2.0.0-SNAPSHOT.war de l'application web
23 sept. 2010 16:53:15 org.apache.catalina.loader.WebappClassLoader
validateJarFile
INFO:
validateJarFile(C:\bvillaumie\localhost\apache-tomcat-6.0.x-standalone\work\Catalina\localhost\jsonoverhttp-cxf-server-2.0.0-SNAPSHOT\WEB-INF\lib\geronimo-servlet_2.5_spec-1.2.jar)
- jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending
class: javax/servlet/Servlet.class
23 sept. 2010 16:53:15 org.springframework.web.context.ContextLoader
initWebApplicationContext
INFO: Root WebApplicationContext: initialization started
23 sept. 2010 16:53:15
org.springframework.context.support.AbstractApplicationContext
prepareRefresh
INFO: Refreshing
org.springframework.web.context.support.XmlWebApplicationContext@6210fb:
display name [Root WebApplicationContext]; startup date [Thu Sep 23
16:53:15 CEST 2010]; root of context hierarchy
23 sept. 2010 16:53:15
org.springframework.beans.factory.xml.XmlBeanDefinitionReader
loadBeanDefinitions
INFO: Loading XML bean definitions from ServletContext resource
[/WEB-INF/service-servlet.xml]
23 sept. 2010 16:53:16
org.springframework.beans.factory.xml.XmlBeanDefinitionReader
loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource
[META-INF/cxf/cxf.xml]
23 sept. 2010 16:53:16
org.springframework.beans.factory.xml.XmlBeanDefinitionReader
loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource
[META-INF/cxf/cxf-servlet.xml]
23 sept. 2010 16:53:16
org.springframework.beans.factory.xml.XmlBeanDefinitionReader
loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource
[META-INF/cxf/cxf-extension-jaxrs-binding.xml]
23 sept. 2010 16:53:16
org.springframework.beans.factory.xml.XmlBeanDefinitionReader
loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource
[META-INF/spring/json-over-http/endpoints.xml]
23 sept. 2010 16:53:16
org.springframework.context.support.AbstractApplicationContext
obtainFreshBeanFactory
INFO: Bean factory for application context
[org.springframework.web.context.support.XmlWebApplicationContext@6210fb]:
org.springframework.beans.factory.support.DefaultListableBeanFactory@70610a
23 sept. 2010 16:53:16
org.springframework.beans.factory.support.DefaultListableBeanFactory
preInstantiateSingletons
INFO: Pre-instantiating singletons in
org.springframework.beans.factory.support.DefaultListableBeanFactory@70610a:
defining beans
[cxf,org.apache.cxf.bus.spring.BusApplicationListener,org.apache.cxf.bus.spring.BusWiringBeanFactoryPostProcessor,org.apache.cxf.bus.spring.Jsr250BeanPostProcessor,org.apache.cxf.bus.spring.BusExtensionPostProcessor,org.apache.cxf.resource.ResourceManager,org.apache.cxf.configuration.Configurer,org.apache.cxf.binding.BindingFactoryManager,org.apache.cxf.transport.DestinationFactoryManager,org.apache.cxf.transport.ConduitInitiatorManager,org.apache.cxf.wsdl.WSDLManager,org.apache.cxf.phase.PhaseManager,org.apache.cxf.workqueue.WorkQueueManager,org.apache.cxf.buslifecycle.BusLifeCycleManager,org.apache.cxf.endpoint.ServerRegistry,org.apache.cxf.endpoint.ServerLifeCycleManager,org.apache.cxf.endpoint.ClientLifeCycleManager,org.apache.cxf.transports.http.QueryHandlerRegistry,org.apache.cxf.endpoint.EndpointResolverRegistry,org.apache.cxf.headers.HeaderManager,org.apache.cxf.catalog.OASISCatalogManager,org.apache.cxf.endpoint.ServiceContractResolverRegistry,org.apache.cxf.transport.servlet.ServletTransportFactory,org.apache.cxf.jaxrs.JAXRSBindingFactory,pojo-customerService,rest-customerService];
root of factory hierarchy
23 sept. 2010 16:53:16 org.apache.cxf.jaxrs.utils.ResourceUtils
checkMethodDispatcher
ATTENTION: No resource methods have been found for resource class
java.util.ArrayList
23 sept. 2010 16:53:16 org.apache.cxf.jaxrs.AbstractJAXRSFactoryBean
checkResources
GRAVE: No resource classes found
23 sept. 2010 16:53:16
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry
destroySingletons
INFO: Destroying singletons in
org.springframework.beans.factory.support.DefaultListableBeanFactory@70610a:
defining beans
[cxf,org.apache.cxf.bus.spring.BusApplicationListener,org.apache.cxf.bus.spring.BusWiringBeanFactoryPostProcessor,org.apache.cxf.bus.spring.Jsr250BeanPostProcessor,org.apache.cxf.bus.spring.BusExtensionPostProcessor,org.apache.cxf.resource.ResourceManager,org.apache.cxf.configuration.Configurer,org.apache.cxf.binding.BindingFactoryManager,org.apache.cxf.transport.DestinationFactoryManager,org.apache.cxf.transport.ConduitInitiatorManager,org.apache.cxf.wsdl.WSDLManager,org.apache.cxf.phase.PhaseManager,org.apache.cxf.workqueue.WorkQueueManager,org.apache.cxf.buslifecycle.BusLifeCycleManager,org.apache.cxf.endpoint.ServerRegistry,org.apache.cxf.endpoint.ServerLifeCycleManager,org.apache.cxf.endpoint.ClientLifeCycleManager,org.apache.cxf.transports.http.QueryHandlerRegistry,org.apache.cxf.endpoint.EndpointResolverRegistry,org.apache.cxf.headers.HeaderManager,org.apache.cxf.catalog.OASISCatalogManager,org.apache.cxf.endpoint.ServiceContractResolverRegistry,org.apache.cxf.transport.servlet.ServletTransportFactory,org.apache.cxf.jaxrs.JAXRSBindingFactory,pojo-customerService,rest-customerService];
root of factory hierarchy
23 sept. 2010 16:53:16 org.springframework.web.context.ContextLoader
initWebApplicationContext
GRAVE: Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error
creating bean with name 'rest-customerService': Invocation of init
method failed; nested exception is
org.apache.cxf.service.factory.ServiceConstructionException
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1338)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:473)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
at java.security.AccessController.doPrivileged(Native Method)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
at
org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
at
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
at
org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429)
at
org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728)
at
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:380)
at
org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255)
at
org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199)
at
org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45)
at
org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3843)
at
org.apache.catalina.core.StandardContext.start(StandardContext.java:4342)
at
org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
at
org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
at
org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
at
org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:830)
at
org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:719)
at
org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:490)
at
org.apache.catalina.startup.HostConfig.start(HostConfig.java:1149)
at
org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
at
org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
at
org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at
org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
at
org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at
org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at
org.apache.catalina.core.StandardService.start(StandardService.java:516)
at
org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:578)
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:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
Caused by: org.apache.cxf.service.factory.ServiceConstructionException
at
org.apache.cxf.jaxrs.JAXRSServerFactoryBean.create(JAXRSServerFactoryBean.java:122)
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:597)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1414)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1375)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1335)
... 39 more
Caused by: javax.ws.rs.WebApplicationException
at
org.apache.cxf.jaxrs.AbstractJAXRSFactoryBean.checkResources(AbstractJAXRSFactoryBean.java:238)
at
org.apache.cxf.jaxrs.JAXRSServerFactoryBean.create(JAXRSServerFactoryBean.java:85)
... 46 more
23 sept. 2010 16:53:16 org.apache.catalina.core.StandardContext start
GRAVE: Error listenerStart
23 sept. 2010 16:53:16 org.apache.catalina.core.StandardContext start
GRAVE: Erreur de d�marrage du contexte
[/jsonoverhttp-cxf-server-2.0.0-SNAPSHOT] suite aux erreurs
pr�c�dentes
My implementation is :
package com.karavel.tutorial.backend.cxf;
import java.util.Date;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
@Path("/tutorial/")
@Consumes("application/json")
@Produces("application/json")
public class TutorialServiceJsonOverHttpFacadeImpl {
public TutorialServiceJsonOverHttpFacadeImpl() {
super();
}
@GET
@Path("echo")
public String echo() {
return "hello world @"+new Date();
}
}
The web.xml is
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="services" version="2.5">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/service-servlet.xml</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<servlet>
<servlet-name>CXFServlet</servlet-name>
<servlet-class>
org.apache.cxf.transport.servlet.CXFServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>CXFServlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
The service-servlet.xml is
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jaxws="http://cxf.apache.org/jaxws"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
http://camel.apache.org/schema/spring
http://camel.apache.org/schema/spring/camel-spring-2.3.0.xsd">
<import resource="classpath:META-INF/cxf/cxf.xml" />
<import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
<!-- support rest json -->
<import
resource="classpath:META-INF/cxf/cxf-extension-jaxrs-binding.xml"/>
<import
resource="classpath:META-INF/spring/json-over-http/endpoints.xml" />
</beans>
And the endpoints.xml is
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:cxf="http://cxf.apache.org/core"
xmlns:jaxws="http://cxf.apache.org/jaxws"
xmlns:jaxrs="http://cxf.apache.org/jaxrs"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd
http://camel.apache.org/schema/spring
http://camel.apache.org/schema/spring/camel-spring-2.3.0.xsd">
<bean id="pojo-customerService"
class="com.karavel.tutorial.backend.cxf.TutorialServiceJsonOverHttpFacadeImpl"
/>
<!-- for incoming http/json -->
<jaxrs:server id="rest-customerService" address="/rest/">
<jaxrs:serviceBeans>
<list>
<ref bean="pojo-customerService" />
</list>
</jaxrs:serviceBeans>
<jaxrs:extensionMappings>
<!-- entry key="feed" value="application/atom+xml"/-->
<entry key="json" value="application/json" />
<!--entry key="xml" value="application/xml"/-->
<!--entry key="html" value="text/html"/-->
</jaxrs:extensionMappings>
</jaxrs:server>
</beans>
The dependdncy tree of the project is
INFO]
upgrade.karavel.tutorial:jsonoverhttp-cxf-server:war:2.0.0-SNAPSHOT
INFO] +- javax.ws.rs:jsr311-api:jar:1.1.1:compile
INFO] \- org.apache.cxf:cxf-bundle-jaxrs:jar:2.2.9:compile
INFO] +- org.springframework:spring-core:jar:2.5.6:compile
INFO] +- commons-logging:commons-logging:jar:1.1.1:compile
INFO] +- org.springframework:spring-beans:jar:2.5.6:compile
INFO] +- org.springframework:spring-context:jar:2.5.6:compile
INFO] +- aopalliance:aopalliance:jar:1.0:compile
INFO] +-
org.apache.geronimo.specs:geronimo-annotation_1.0_spec:jar:1.1.1:compile
INFO] +- javax.xml.bind:jaxb-api:jar:2.1:compile
INFO] +-
org.apache.geronimo.specs:geronimo-stax-api_1.0_spec:jar:1.0.1:compile
INFO] +- wsdl4j:wsdl4j:jar:1.6.2:compile
INFO] +- org.apache.ws.commons.schema:XmlSchema:jar:1.4.5:compile
INFO] +- commons-lang:commons-lang:jar:2.4:compile
INFO] +-
org.apache.geronimo.specs:geronimo-activation_1.1_spec:jar:1.0.2:compile
INFO] +- org.codehaus.woodstox:wstx-asl:jar:3.2.9:compile
INFO] +- org.apache.neethi:neethi:jar:2.0.4:compile
INFO] +- com.sun.xml.bind:jaxb-impl:jar:2.1.13:compile
INFO] +-
org.apache.geronimo.specs:geronimo-javamail_1.4_spec:jar:1.6:compile
INFO] +- org.springframework:spring-web:jar:2.5.6:compile
INFO] +- org.mortbay.jetty:jetty:jar:6.1.21:compile
INFO] +- org.mortbay.jetty:jetty-util:jar:6.1.21:compile
INFO] +- org.slf4j:slf4j-api:jar:1.5.8:runtime
INFO] +-
org.apache.geronimo.specs:geronimo-servlet_2.5_spec:jar:1.2:compile
INFO] +- org.apache.abdera:abdera-core:jar:1.0:compile
INFO] +- org.apache.abdera:abdera-i18n:jar:1.0:compile
INFO] +- commons-codec:commons-codec:jar:1.3:compile
INFO] +- org.apache.abdera:abdera-parser:jar:1.0:compile
INFO] +- org.apache.ws.commons.axiom:axiom-impl:jar:1.2.7:compile
INFO] +- org.apache.ws.commons.axiom:axiom-api:jar:1.2.7:compile
INFO] +- jaxen:jaxen:jar:1.1.1:compile
INFO] +- org.apache.abdera:abdera-extensions-json:jar:1.0:compile
INFO] +- org.apache.abdera:abdera-extensions-main:jar:1.0:compile
INFO] +- org.codehaus.jettison:jettison:jar:1.2:compile
INFO] \- org.apache.xmlbeans:xmlbeans:jar:2.4.0:compile
INFO]
I a must be a very basic mustake, but the stack trace give me no hints...
Le 15/09/2010 18:55, Sergey Beryozkin a écrit :
> Hi
>
> there should be a log record reporting the cause, but from the trace I can
> see that the
> "pojo-customerService" bean is not being recognized as a valid JAX-RS root
> resource.
>
> Try deploying a JAXRS endpoint only, without JAXWS annotations. If it works
> then the JAXRS runtime is being confused by the additional annotations,
> should not be the case, but it is worth checking.
>
> Try removing the interface just for a test, there were some similar cases
> reported before, where JAXRS annotations were spread across the interface
> and the implementation class, ex, interface methods had all the @Path
> annotations but the impl class was effectively hiding them by having
> annotations such as @QueryParam only...
>
> Something is interfering in the process so please try to isolate the cause.
>
> Let us know if you can make it work
>
> cheers, Sergey
>
> On Wed, Sep 15, 2010 at 2:37 PM, benoit villaumie<bv...@karavel.com>wrote:
>
>> Hello everyone,
>>
>> I am trying to expose a service using http/json via cxf.
>> However, I issue a stacktrace at the startup of the webapp :
>>
>> 14:49:44,648 | {main} | [WARN ] |
>> [org.springframework.beans.GenericTypeAwarePropertyDescriptor] :
>> Invalid JavaBean property 'serviceBeans' being accessed! Ambiguous
>> write methods found next to actually used [public void
>>
>> org.apache.cxf.jaxrs.JAXRSServerFactoryBean.setServiceBeans(java.util.List)]:
>> [public void
>>
>> org.apache.cxf.jaxrs.JAXRSServerFactoryBean.setServiceBeans(java.lang.Object[])]
>> 14:49:44,695 | {main} | [INFO ] |
>> [org.springframework.beans.factory.support.DefaultListableBeanFactory]
>> : Destroying singletons in
>>
>> org.springframework.beans.factory.support.DefaultListableBeanFactory@1861086
>> :
>> defining beans
>>
>> [cxf,org.apache.cxf.bus.spring.BusApplicationListener,org.apache.cxf.bus.spring.BusWiringBeanFactoryPostProcessor,org.apache.cxf.bus.spring.Jsr250BeanPostProcessor,org.apache.cxf.bus.spring.BusExtensionPostProcessor,org.apache.cxf.resource.ResourceManager,org.apache.cxf.configuration.Configurer,org.apache.cxf.binding.BindingFactoryManager,org.apache.cxf.transport.DestinationFactoryManager,org.apache.cxf.transport.ConduitInitiatorManager,org.apache.cxf.wsdl.WSDLManager,org.apache.cxf.phase.PhaseManager,org.apache.cxf.workqueue.WorkQueueManager,org.apache.cxf.buslifecycle.BusLifeCycleManager,org.apache.cxf.endpoint.ServerRegistry,org.apache.cxf.endpoint.ServerLifeCycleManager,org.apache.cxf.endpoint.ClientLifeCycleManager,org.apache.cxf.transports.http.QueryHandlerRegistry,org.apache.cxf.endpoint.EndpointResolverRegistry,org.apache.cxf.headers.HeaderManager,org.apache.cxf.catalog.OASISCatalogManager,org.apache.cxf.endpoint.ServiceContractResolverRegistry,org.apache.cxf
>>
>> .binding.soap.SoapBindingFactory,org.apache.cxf.binding.soap.SoapTransportFactory,org.apache.cxf.binding.soap.customEditorConfigurer,org.apache.cxf.transport.servlet.ServletTransportFactory,org.apache.camel.component.cxf.transport.CamelTransportFactory#0,org.apache.cxf.transport.http.policy.HTTPClientAssertionBuilder,org.apache.cxf.transport.http.policy.HTTPServerAssertionBuilder,org.apache.cxf.transport.http.policy.NoOpPolicyInterceptorProvider,org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory,jms-customerService-ConnectionFactory,jms-customerService-PooledConnectionFactory,jms-customerService-Config,pojo-customerService,rest-customerService,http-customerService,jms-customerService,direct-customerService,template,consumerTemplate,camelContext-server:beanPostProcessor,camelContext-server,org.apache.camel.component.cxf.transport.CamelTransportFactory#1];
>> root of factory hierarchy
>> 14:49:44,695 | {main} | [ERROR] |
>> [org.springframework.web.context.ContextLoader] : Context
>> initialization failed
>> org.springframework.beans.factory.BeanCreationException: Error
>> creating bean with name 'rest-customerService': Invocation of init
>> method failed; nested exception is
>> org.apache.cxf.service.factory.ServiceConstructionException
>> at
>>
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1412)
>> at
>>
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
>> at
>>
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
>> at
>>
>> org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291)
>> at
>>
>> org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
>> at
>>
>> org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288)
>> at
>>
>> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)
>> at
>>
>> org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:574)
>> at
>>
>> org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895)
>> at
>>
>> org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425)
>> at
>>
>> org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255)
>> at
>>
>> org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199)
>> at
>>
>> org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45)
>> at
>>
>> org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3843)
>> at
>> org.apache.catalina.core.StandardContext.start(StandardContext.java:4342)
>> at
>>
>> org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
>> at
>> org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
>> at
>> org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
>> at
>> org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:830)
>> at
>> org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:719)
>> at
>> org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:490)
>> at
>> org.apache.catalina.startup.HostConfig.start(HostConfig.java:1149)
>> at
>>
>> org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
>> at
>>
>> org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
>> at
>> org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
>> at
>> org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
>> at
>> org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
>> at
>> org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
>> at
>> org.apache.catalina.core.StandardService.start(StandardService.java:516)
>> at
>> org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
>> at org.apache.catalina.startup.Catalina.start(Catalina.java:578)
>> 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:597)
>> at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
>> at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
>> Caused by: org.apache.cxf.service.factory.ServiceConstructionException
>> at
>>
>> org.apache.cxf.jaxrs.JAXRSServerFactoryBean.create(JAXRSServerFactoryBean.java:125)
>> 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:597)
>> at
>>
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1536)
>> at
>>
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1477)
>> at
>>
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1409)
>> ... 36 more
>> Caused by: javax.ws.rs.WebApplicationException
>> at
>>
>> org.apache.cxf.jaxrs.AbstractJAXRSFactoryBean.checkResources(AbstractJAXRSFactoryBean.java:262)
>> at
>>
>> org.apache.cxf.jaxrs.JAXRSServerFactoryBean.create(JAXRSServerFactoryBean.java:85)
>> ... 43 more
>>
>> The error message gave me no hints. Can someone helps or encountered
>> similar stack ?
>>
>> I am using cxf 2.2.9 (try also with 2.2.10). For information soap over http
>> and soap over jms were working before the test with json. Other spring files
>> are not copy/paste (mainly related to soap over jms integration)
>>
>> the spring configuration is
>>
>> <beans xmlns="http://www.springframework.org/schema/beans"
>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>> xmlns:cxf="http://cxf.apache.org/core"
>> xmlns:jaxws="http://cxf.apache.org/jaxws"
>> xmlns:jaxrs="http://cxf.apache.org/jaxrs"
>> xsi:schemaLocation="
>> http://www.springframework.org/schema/beans
>> http://www.springframework.org/schema/beans/spring-beans.xsd
>> http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
>> http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
>> http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd
>> http://camel.apache.org/schema/spring
>> http://camel.apache.org/schema/spring/camel-spring-2.3.0.xsd">
>>
>> <bean id="pojo-customerService"
>> class="com.karavel.tutorial.backend.impl.ComponentImpl" />
>>
>> <!-- for incoming http/json -->
>> <jaxrs:server id="rest-customerService" address="/rest/">
>> <jaxrs:serviceBeans>
>> <list>
>> <ref bean="pojo-customerService" />
>> </list>
>> </jaxrs:serviceBeans>
>> <jaxrs:extensionMappings>
>> <!-- entry key="feed" value="application/atom+xml"/-->
>> <entry key="json" value="application/json" />
>> <!--entry key="xml" value="application/xml"/-->
>> <!--entry key="html" value="text/html"/-->
>> </jaxrs:extensionMappings>
>> </jaxrs:server>
>>
>> <!-- for incoming http/soap -->
>> <jaxws:endpoint id="http-customerService"
>> implementor="#pojo-customerService"
>> address="/service" />
>>
>> <!-- for incoming jms/soap -->
>> <!-- http://camel.apache.org/jms.html -->
>> <!-- http://camel.apache.org/activemq.html -->
>> <bean id="jms-customerService"
>> class="org.apache.activemq.camel.component.ActiveMQComponent">
>> <property name="configuration" ref="jms-customerService-Config" />
>> <property name="useMessageIDAsCorrelationID" value="true" />
>> <property name="requestTimeout" value="20000" /> <!-- ms, time
>> between post and consumption in the queue -->
>> <property name="receiveTimeout" value="5000" /> <!-- ms -->
>> </bean>
>> <jaxws:endpoint id="direct-customerService"
>> implementor="#pojo-customerService"
>> address="camel://direct:customerService">
>> <jaxws:features>
>> <!-- Enables logging of SOAP messages. -->
>> <logging xmlns="http://cxf.apache.org/core" />
>> </jaxws:features>
>> </jaxws:endpoint>
>>
>> </beans>
>>
>>
>> The java interface is
>>
>> @WebService
>> @Path("/json")
>> public interface ICustomerFacadeService extends ICustomerService {
>>
>> @GET
>> @Path("/fake_echo")
>> public String fake_echo();
>>
>>
>> @WebResult(name = "echo")
>> @WebMethod
>> public String echo(@WebParam(name = "string") String string,
>> @WebParam(name = "time-to-sleep-in-ms") long timeToSleepInMs);
>>
>>
>> @WebResult(name = "getCustomerByName1Out")
>> @WebMethod
>> public CustomerSyntheseVO getCustomerByName1(
>> @WebParam(name = "name") String name ) throws
>> NoSuchCustomerException;
>>
>>
>> @WebResult(name = "getCustomersByName1Out")
>> @WebMethod
>> public CustomerSyntheseVO[] getCustomersByName1(
>> @WebParam(name = "name") String name ) throws
>> NoSuchCustomerException;
>>
>> @WebResult(name = "getCustomersByName2Out")
>> @WebMethod
>> public CustomerSyntheseVO[] getCustomersByName2(
>> @WebParam(name = "name") String name );
>>
>> @WebResult(name = "new_methodOut")
>> @WebMethod
>> public NewOutVO new_method(@WebParam(name = "in") NewInVO in);
>>
>> @WebMethod
>> @Oneway
>> public void insertWithoutException(@WebParam(name = "in") String
>> name);
>> }
>>
>> Thanks for your help.
>>
>>
>>
--
Benoit Villaumié
Karavel / Promovacances - Responsable Architecture
Tel. 01 48 01 51 88
--
Re: CXF+Spring+Json : Error creating bean with name ... ; nested
exception is org.apache.cxf.service.factory.ServiceConstructionException
Posted by Sergey Beryozkin <sb...@gmail.com>.
Hi
there should be a log record reporting the cause, but from the trace I can
see that the
"pojo-customerService" bean is not being recognized as a valid JAX-RS root
resource.
Try deploying a JAXRS endpoint only, without JAXWS annotations. If it works
then the JAXRS runtime is being confused by the additional annotations,
should not be the case, but it is worth checking.
Try removing the interface just for a test, there were some similar cases
reported before, where JAXRS annotations were spread across the interface
and the implementation class, ex, interface methods had all the @Path
annotations but the impl class was effectively hiding them by having
annotations such as @QueryParam only...
Something is interfering in the process so please try to isolate the cause.
Let us know if you can make it work
cheers, Sergey
On Wed, Sep 15, 2010 at 2:37 PM, benoit villaumie <bv...@karavel.com>wrote:
> Hello everyone,
>
> I am trying to expose a service using http/json via cxf.
> However, I issue a stacktrace at the startup of the webapp :
>
> 14:49:44,648 | {main} | [WARN ] |
> [org.springframework.beans.GenericTypeAwarePropertyDescriptor] :
> Invalid JavaBean property 'serviceBeans' being accessed! Ambiguous
> write methods found next to actually used [public void
>
> org.apache.cxf.jaxrs.JAXRSServerFactoryBean.setServiceBeans(java.util.List)]:
> [public void
>
> org.apache.cxf.jaxrs.JAXRSServerFactoryBean.setServiceBeans(java.lang.Object[])]
> 14:49:44,695 | {main} | [INFO ] |
> [org.springframework.beans.factory.support.DefaultListableBeanFactory]
> : Destroying singletons in
>
> org.springframework.beans.factory.support.DefaultListableBeanFactory@1861086
> :
> defining beans
>
> [cxf,org.apache.cxf.bus.spring.BusApplicationListener,org.apache.cxf.bus.spring.BusWiringBeanFactoryPostProcessor,org.apache.cxf.bus.spring.Jsr250BeanPostProcessor,org.apache.cxf.bus.spring.BusExtensionPostProcessor,org.apache.cxf.resource.ResourceManager,org.apache.cxf.configuration.Configurer,org.apache.cxf.binding.BindingFactoryManager,org.apache.cxf.transport.DestinationFactoryManager,org.apache.cxf.transport.ConduitInitiatorManager,org.apache.cxf.wsdl.WSDLManager,org.apache.cxf.phase.PhaseManager,org.apache.cxf.workqueue.WorkQueueManager,org.apache.cxf.buslifecycle.BusLifeCycleManager,org.apache.cxf.endpoint.ServerRegistry,org.apache.cxf.endpoint.ServerLifeCycleManager,org.apache.cxf.endpoint.ClientLifeCycleManager,org.apache.cxf.transports.http.QueryHandlerRegistry,org.apache.cxf.endpoint.EndpointResolverRegistry,org.apache.cxf.headers.HeaderManager,org.apache.cxf.catalog.OASISCatalogManager,org.apache.cxf.endpoint.ServiceContractResolverRegistry,org.apache.cxf
>
> .binding.soap.SoapBindingFactory,org.apache.cxf.binding.soap.SoapTransportFactory,org.apache.cxf.binding.soap.customEditorConfigurer,org.apache.cxf.transport.servlet.ServletTransportFactory,org.apache.camel.component.cxf.transport.CamelTransportFactory#0,org.apache.cxf.transport.http.policy.HTTPClientAssertionBuilder,org.apache.cxf.transport.http.policy.HTTPServerAssertionBuilder,org.apache.cxf.transport.http.policy.NoOpPolicyInterceptorProvider,org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory,jms-customerService-ConnectionFactory,jms-customerService-PooledConnectionFactory,jms-customerService-Config,pojo-customerService,rest-customerService,http-customerService,jms-customerService,direct-customerService,template,consumerTemplate,camelContext-server:beanPostProcessor,camelContext-server,org.apache.camel.component.cxf.transport.CamelTransportFactory#1];
> root of factory hierarchy
> 14:49:44,695 | {main} | [ERROR] |
> [org.springframework.web.context.ContextLoader] : Context
> initialization failed
> org.springframework.beans.factory.BeanCreationException: Error
> creating bean with name 'rest-customerService': Invocation of init
> method failed; nested exception is
> org.apache.cxf.service.factory.ServiceConstructionException
> at
>
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1412)
> at
>
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
> at
>
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
> at
>
> org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291)
> at
>
> org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
> at
>
> org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288)
> at
>
> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)
> at
>
> org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:574)
> at
>
> org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895)
> at
>
> org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425)
> at
>
> org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255)
> at
>
> org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199)
> at
>
> org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45)
> at
>
> org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3843)
> at
> org.apache.catalina.core.StandardContext.start(StandardContext.java:4342)
> at
>
> org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
> at
> org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
> at
> org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
> at
> org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:830)
> at
> org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:719)
> at
> org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:490)
> at
> org.apache.catalina.startup.HostConfig.start(HostConfig.java:1149)
> at
>
> org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
> at
>
> org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
> at
> org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
> at
> org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
> at
> org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
> at
> org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
> at
> org.apache.catalina.core.StandardService.start(StandardService.java:516)
> at
> org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
> at org.apache.catalina.startup.Catalina.start(Catalina.java:578)
> 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:597)
> at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
> at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
> Caused by: org.apache.cxf.service.factory.ServiceConstructionException
> at
>
> org.apache.cxf.jaxrs.JAXRSServerFactoryBean.create(JAXRSServerFactoryBean.java:125)
> 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:597)
> at
>
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1536)
> at
>
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1477)
> at
>
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1409)
> ... 36 more
> Caused by: javax.ws.rs.WebApplicationException
> at
>
> org.apache.cxf.jaxrs.AbstractJAXRSFactoryBean.checkResources(AbstractJAXRSFactoryBean.java:262)
> at
>
> org.apache.cxf.jaxrs.JAXRSServerFactoryBean.create(JAXRSServerFactoryBean.java:85)
> ... 43 more
>
> The error message gave me no hints. Can someone helps or encountered
> similar stack ?
>
> I am using cxf 2.2.9 (try also with 2.2.10). For information soap over http
> and soap over jms were working before the test with json. Other spring files
> are not copy/paste (mainly related to soap over jms integration)
>
> the spring configuration is
>
> <beans xmlns="http://www.springframework.org/schema/beans"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xmlns:cxf="http://cxf.apache.org/core"
> xmlns:jaxws="http://cxf.apache.org/jaxws"
> xmlns:jaxrs="http://cxf.apache.org/jaxrs"
> xsi:schemaLocation="
> http://www.springframework.org/schema/beans
> http://www.springframework.org/schema/beans/spring-beans.xsd
> http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
> http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
> http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd
> http://camel.apache.org/schema/spring
> http://camel.apache.org/schema/spring/camel-spring-2.3.0.xsd">
>
> <bean id="pojo-customerService"
> class="com.karavel.tutorial.backend.impl.ComponentImpl" />
>
> <!-- for incoming http/json -->
> <jaxrs:server id="rest-customerService" address="/rest/">
> <jaxrs:serviceBeans>
> <list>
> <ref bean="pojo-customerService" />
> </list>
> </jaxrs:serviceBeans>
> <jaxrs:extensionMappings>
> <!-- entry key="feed" value="application/atom+xml"/-->
> <entry key="json" value="application/json" />
> <!--entry key="xml" value="application/xml"/-->
> <!--entry key="html" value="text/html"/-->
> </jaxrs:extensionMappings>
> </jaxrs:server>
>
> <!-- for incoming http/soap -->
> <jaxws:endpoint id="http-customerService"
> implementor="#pojo-customerService"
> address="/service" />
>
> <!-- for incoming jms/soap -->
> <!-- http://camel.apache.org/jms.html -->
> <!-- http://camel.apache.org/activemq.html -->
> <bean id="jms-customerService"
> class="org.apache.activemq.camel.component.ActiveMQComponent">
> <property name="configuration" ref="jms-customerService-Config" />
> <property name="useMessageIDAsCorrelationID" value="true" />
> <property name="requestTimeout" value="20000" /> <!-- ms, time
> between post and consumption in the queue -->
> <property name="receiveTimeout" value="5000" /> <!-- ms -->
> </bean>
> <jaxws:endpoint id="direct-customerService"
> implementor="#pojo-customerService"
> address="camel://direct:customerService">
> <jaxws:features>
> <!-- Enables logging of SOAP messages. -->
> <logging xmlns="http://cxf.apache.org/core" />
> </jaxws:features>
> </jaxws:endpoint>
>
> </beans>
>
>
> The java interface is
>
> @WebService
> @Path("/json")
> public interface ICustomerFacadeService extends ICustomerService {
>
> @GET
> @Path("/fake_echo")
> public String fake_echo();
>
>
> @WebResult(name = "echo")
> @WebMethod
> public String echo(@WebParam(name = "string") String string,
> @WebParam(name = "time-to-sleep-in-ms") long timeToSleepInMs);
>
>
> @WebResult(name = "getCustomerByName1Out")
> @WebMethod
> public CustomerSyntheseVO getCustomerByName1(
> @WebParam(name = "name") String name ) throws
> NoSuchCustomerException;
>
>
> @WebResult(name = "getCustomersByName1Out")
> @WebMethod
> public CustomerSyntheseVO[] getCustomersByName1(
> @WebParam(name = "name") String name ) throws
> NoSuchCustomerException;
>
> @WebResult(name = "getCustomersByName2Out")
> @WebMethod
> public CustomerSyntheseVO[] getCustomersByName2(
> @WebParam(name = "name") String name );
>
> @WebResult(name = "new_methodOut")
> @WebMethod
> public NewOutVO new_method(@WebParam(name = "in") NewInVO in);
>
> @WebMethod
> @Oneway
> public void insertWithoutException(@WebParam(name = "in") String
> name);
> }
>
> Thanks for your help.
>
>
>