Hi,

I use Camel 2.2 on SMX4.2 with Spring. I have created a route calling
a camel bean POJO exposed as a Spring DM service. Everything works
fine, no error is returned but my data are not saved in the DB.

Config : Route

        public void configure() throws Exception {
                
                onException(Exception.class).log(">> Exception raised !!");
                
                /**
                 * Route persisting objects in DB
                 */
                 from(queueValidatedUri)
                 .beanRef("sapPersistence", "save") // Reference of camel pojo 
bean
exposed as a OSGI Service
                 .log(">>> Message saved in the DB : ${id}") // This message 
appears
well into the console
                 .to(queueOutUri);
        }

Config : Spring config file of camel

    <osgi:reference id="sapPersistence"
interface="com.goodyear.emea.gicl.esb.service.Persistence"/>

Config : Camel POJO Bean

import org.apache.camel.Body;
import org.apache.camel.Exchange;
import org.springframework.transaction.annotation.Transactional;

@Transactional // Spring Annotation used to add Transactional Aspect
public class PersistenceImpl implements Persistence {
        
        private SapDocumentDAO sapDocumentDAO;

        @Transactional
        public void save(@Body FinishedTireDocument finishedTiredDocument,
Exchange ecxh) {
                
                getSapDocumentDAO().save(finishedTiredDocument);
                
        }

        public SapDocumentDAO getSapDocumentDAO() {
                return sapDocumentDAO;
        }

        public void setSapDocumentDAO(SapDocumentDAO sapDocumentDAO) {
                this.sapDocumentDAO = sapDocumentDAO;
        }
        
}

Camel Spring Config

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

        <osgi:reference id="txManager"
interface="org.springframework.transaction.PlatformTransactionManager"
/>

        <bean id="sapService"
class="com.goodyear.emea.gicl.esb.service.impl.PersistenceImpl">
                <property name="sapDocumentDAO">
                        <osgi:reference 
interface="com.goodyear.emea.gicl.esb.persistence.SapDocumentDAO"
/>
                </property>
        </bean>

        <osgi:service ref="sapService"
interface="com.goodyear.emea.gicl.esb.service.Persistence" />

In the log, I see the eclipselink trace with "select statement"

[EL Fine]: 2010-05-06
17:15:31.64--ServerSession(20460988)--Connection(15257539)--Thread(Thread[Defa
ultMessageListenerContainer-1,5,spring-osgi-extender[26807f]-threads])--SELECT
CMP_CODE, CMP_TYPE FR
OM TB_COMPOUND WHERE (CMP_CODE = ?)
        bind => [SPEC-LU-MCFB883]

but no insert when getJpaTemplate().persist() is called.

I think that the issue is related to Transaction but don't know how to
solve it ?

Kind regards,

Charles Moulliard

Senior Enterprise Architect (J2EE, .NET, SOA)
Apache Camel Committer

*******************************************************************
- Blog : http://cmoulliard.blogspot.com
- Twitter : http://twitter.com/cmoulliard
- Linkedlin : http://www.linkedin.com/in/charlesmoulliard

Reply via email to