Hi Sergey,

 

I've tried through both AOP and annotation-driven techniques but the result
is the same. What do you mean with "no root resources have been found"?

 

This is the piece of the spring context configuration (DAO/Hibernate/JAXB
beans are omitted):

 

   <!-- Annotation Driven Technique

  <tx:annotation-driven transaction-manager="mobilityTransactionManager" />

-->

   

  <bean id="mobilityTransactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">

        <property name="sessionFactory" ref="mobilitySessionFactory" />

    </bean>

 

<!-- AOP Technique -->

   <tx:advice id="txAdvice"
transaction-manager="mobilityTransactionManager">

         <tx:attributes>

              <tx:method name="*" propagation="REQUIRED" />

         </tx:attributes>

    </tx:advice>

    <aop:config>

        <aop:pointcut id="serviceMethods" expression="execution(*
com.ica.mobility.mobile.service.generic.GenericRestServiceImpl.*(..))"/>

        <aop:advisor advice-ref="txAdvice" pointcut-ref="serviceMethods"/>

    </aop:config>

 

 

    <!-- Generic JAX-RS server-->

    <jaxrs:server id="genericServer"
modelRef="classpath:/WEB-INF/model/GenericModel.xml" abstract="true">

        <jaxrs:features>

            <cxf:logging/>

        </jaxrs:features>

        <jaxrs:inInterceptors>

            <ref bean="gzipInInterceptor" />

        </jaxrs:inInterceptors>

        <jaxrs:outInterceptors>

            <ref bean="gzipOutInterceptor" />

        </jaxrs:outInterceptors>

        <jaxrs:properties>

            <entry key="attachment-directory" value="/temp/mobility"/>

            <entry key="attachment-memory-threshold" value="409600"/>

        </jaxrs:properties>

        <jaxrs:providers>

            <ref bean="jaxbElementProvider" />

        </jaxrs:providers>

    </jaxrs:server>

 

    <!-- Generic Service -->

    <bean id="genericService"
class="com.ica.mobility.mobile.service.generic.GenericRestServiceImpl"
abstract="true">

        <property name="daoFactory" ref="daoFactory" />

    </bean>

 

    <!-- Specific REST server -->

    <bean id="userServer" parent="genericServer">

        <property name="modelRef"
value="classpath:/WEB-INF/model/MobilityUserModel.xml" />

        <property name="address" value="/mobilityusers" />

        <property name="serviceBeans">

            <bean id="userService"
class="com.ica.mobility.mobile.service.MobilityUserRestService"
parent="genericService">

                <constructor-arg
value="com.ica.mobility.model.bean.MobilityUser"/>

            </bean>

        </property>

    </bean>

 

And the whole log of the exception:

 

org.springframework.beans.factory.BeanCreationException: Error creating bean
with name 'userServer' defined in ServletContext resource
[/WEB-INF/applicationContext.xml]: 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(Ab
stractBeanFactory.java:291)

        at
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSi
ngleton(DefaultSingletonBeanRegistry.java:222)

        at
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(Abst
ractBeanFactory.java:288)

        at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(Abstra
ctBeanFactory.java:190)

        at
org.springframework.beans.factory.support.DefaultListableBeanFactory.preInst
antiateSingletons(DefaultListableBeanFactory.java:574)

        at
org.springframework.context.support.AbstractApplicationContext.finishBeanFac
toryInitialization(AbstractApplicationContext.java:895)

        at
org.springframework.context.support.AbstractApplicationContext.refresh(Abstr
actApplicationContext.java:425)

        at
org.springframework.web.context.ContextLoader.createWebApplicationContext(Co
ntextLoader.java:276)

        at
org.springframework.web.context.ContextLoader.initWebApplicationContext(Cont
extLoader.java:197)

        at
org.springframework.web.context.ContextLoaderListener.contextInitialized(Con
textLoaderListener.java:47)

        at
org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:
3972)

        at
org.apache.catalina.core.StandardContext.start(StandardContext.java:4467)

        at
org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:7
91)

        at
org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)

        at
org.apache.catalina.core.StandardHost.addChild(StandardHost.java:546)

        at
org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:637)

        at
org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:521)

        at
org.apache.catalina.startup.HostConfig.check(HostConfig.java:1359)

        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.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:297
)

        at
com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanSer
verInterceptor.java:836)

        at
com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:761)

        at
org.apache.catalina.manager.ManagerServlet.check(ManagerServlet.java:1500)

        at
org.apache.catalina.manager.ManagerServlet.deploy(ManagerServlet.java:849)

        at
org.apache.catalina.manager.ManagerServlet.doGet(ManagerServlet.java:351)

        at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)

        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
FilterChain.java:290)

        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
ain.java:206)

        at
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter
.java:199)

        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
FilterChain.java:235)

        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
ain.java:206)

        at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.ja
va:233)

        at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.ja
va:191)

        at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase
.java:558)

        at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127
)

        at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102
)

        at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java
:109)

        at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)

        at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)

        at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http
11Protocol.java:588)

        at
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)

        at java.lang.Thread.run(Thread.java:619)

Caused by: org.apache.cxf.service.factory.ServiceConstructionException

        at
org.apache.cxf.jaxrs.JAXRSServerFactoryBean.create(JAXRSServerFactoryBean.ja
va:132)

        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)

        ... 48 more

Caused by: javax.ws.rs.WebApplicationException

        at
org.apache.cxf.jaxrs.utils.InjectionUtils.reportServerError(InjectionUtils.j
ava:378)

        at
org.apache.cxf.jaxrs.utils.InjectionUtils.injectThroughMethod(InjectionUtils
.java:264)

        at
org.apache.cxf.jaxrs.utils.InjectionUtils.injectContextProxies(InjectionUtil
s.java:787)

        at
org.apache.cxf.jaxrs.JAXRSServerFactoryBean.injectContexts(JAXRSServerFactor
yBean.java:219)

        at
org.apache.cxf.jaxrs.JAXRSServerFactoryBean.updateClassResourceProviders(JAX
RSServerFactoryBean.java:240)

        at
org.apache.cxf.jaxrs.JAXRSServerFactoryBean.create(JAXRSServerFactoryBean.ja
va:91)

        ... 55 more

 

Ivan 

 

De: Sergey Beryozkin [mailto:[email protected]] 
Enviado el: jueves, 24 de marzo de 2011 13:03
Para: [email protected]
CC: Ivan Vitoria Sanchez
Asunto: Re: CXF Services and Transactions

 

Hi Ivan

I've seen users doing it successfully. Is it a model-driven case ? I'm
presuming the exception is to do with the fact no root resources have been
found ? What does the log say ?

Cheers, Sergey

On Thu, Mar 24, 2011 at 11:45 AM, Ivan Vitoria Sanchez
<[email protected]> wrote:

Hello,



I have some JAX-RS servers configured through Spring. Also, i'm using
Hibernate DAOs and the OpenSessionInViewFilter of Spring-ORM. I have no
problem when I add the @Transactional annotation to the DAO layer, but i
would like to have the REST methods in the same transaction, so i've
annoated the services. But I can't do it, neither annotating the interface
nor the classes.  A ServiceConstructionException is throwed as soon as I add
the @Transactional to the service...



CXF Version: 2.3.2

Spring version: 3.0.3

Hibernate version: 3



Thanks in advance!



Ivan




-- 
Sergey Beryozkin

Application Integration Division of Talend <http://www.talend.com> 
http://sberyozkin.blogspot.com

Reply via email to