Hi,

I have created a project using camel jpa component :

Spring DAO Bundle
**********************
    <bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="persistenceUnitName" value="reportincident"/>
        <property name="dataSource" ref="reportdb"/>
        <property name="jpaVendorAdapter">
            <bean id="jpaAdapter"
class="org.springframework.orm.jpa.vendor.OpenJpaVendorAdapter">
                <property name="databasePlatform"
value="org.apache.openjpa.jdbc.sql.HSQLDictionary"/>
                <property name="showSql" value="true"/>
                <property name="database" value="HSQL"/>
            </bean>
        </property>
    </bean>

    <bean id="reportdb"
class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
        <property name="driverClassName" value="org.hsqldb.jdbcDriver"/>
        <property name="url" value="jdbc:hsqldb:hsql://localhost/reportdb"/>
        <property name="username" value="sa"/>
        <property name="password" value=""/>
    </bean>

    <!--  Expose EntityManagerFactory -->
    <osgi:service ref="entityManagerFactory"
interface="javax.persistence.EntityManagerFactory"/>


Camel bundle
****************

    <bean id="jpa" class="org.apache.camel.component.jpa.JpaComponent">
      <property name="entityManagerFactory">
          <osgi:reference interface="javax.persistence.EntityManagerFactory"/>
      </property>
    </bean>

        <route id="queue-create-incident">
            <from uri="activemq:queue:incident"/>
            <log message=">>> Incident received : ${body}"/>
            <to uri="jpa://com.fusesource.webinars.persistence.model.Incident"/>
            <log message=">>> Record inserted : ${body}"/>
        </route>

My JPA component receives the object to insert into the DB but
Unfortunately I get this error  :

Caused by: java.lang.NoClassDefFoundError: Could not initialize class $Proxy46
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
Method)[:1.6.0_24]
        at 
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)[:1.6.0_24]
        at 
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)[:1.6.0_24]
        at 
java.lang.reflect.Constructor.newInstance(Constructor.java:513)[:1.6.0_24]
        at java.lang.reflect.Proxy.newProxyInstance(Proxy.java:588)[:1.6.0_24]
        at 
org.springframework.orm.jpa.ExtendedEntityManagerCreator.createProxy(ExtendedEntityManagerCreator.java:264)
        at 
org.springframework.orm.jpa.ExtendedEntityManagerCreator.createProxy(ExtendedEntityManagerCreator.java:229)
        at 
org.springframework.orm.jpa.ExtendedEntityManagerCreator.createApplicationManagedEntityManager(ExtendedEntityManagerCreator.java:110)

The issue is perhaps related to the fact that I try to retrieve the
EntityManagerFactory using OSGI Service. Is there an alternative ?

Regards,

Charles Moulliard

Sr. Principal Solution Architect - FuseSource
Apache Committer

Blog : http://cmoulliard.blogspot.com
Twitter : http://twitter.com/cmoulliard
Linkedin : http://www.linkedin.com/in/charlesmoulliard
Skype: cmoulliard

Reply via email to