Hi Johan, Thx for your files. They help me and now it works even when I setup the LocalEntityManagerFactoryBean using Spring. There was a missing bean in my DataSource config file.
Regards, Charles On Tue, Apr 12, 2011 at 4:24 PM, Johan Edstrom <[email protected]> wrote: > Charles, it does look right. > > Attaching 2 config files I know work. > > > > > > > > > And the BP bundle that imports it for persistence. > > > > > Also is the bundle marked with > > Meta-Persistence: META-INF/persistence.xml > > In the manifest? > > > On Apr 12, 2011, at 8:20 AM, Charles Moulliard wrote: > >> Here is the config Johan >> >> ersistence config >> ********************** >> <persistence-unit name="reportincident" transaction-type="JTA"> >> >> >> <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider> >> >> >> <jta-data-source>osgi:service/javax.sql.XADataSource/(transactional=true)</jta-data-source> >> >> <!-- Required by openJPA to update sequence table outside of >> Global Tx Management --> >> >> <non-jta-data-source>osgi:service/javax.sql.DataSource/(transactional=false)</non-jta-data-source> >> >> <class>com.fusesource.webinars.persistence.model.Incident</class> >> >> <exclude-unlisted-classes>true</exclude-unlisted-classes> >> >> <!-- openjpa & HSQLDB --> >> <properties> >> <property name="openjpa.jdbc.SynchronizeMappings" >> >> value="buildSchema(SchemaAction='add,deleteTableContents')"/> >> <property name="openjpa.Log" >> value="commons"/> >> <property name="openjpa.jdbc.DBDictionary" >> value="hsql(useSchemaName=true)"/> >> <property name="openjpa.jdbc.Schema" >> value="PUBLIC"/> >> <property name="openjpa.TransactionMode" >> value="managed"/> >> <property name="openjpa.ManagedRuntime" >> >> value="jndi(TransactionManagerName=aries:services/javax.transaction.TransactionManager)"/> >> <property name="openjpa.Multithreaded" >> value="true"/> >> <property name="openjpa.TransactionMode" >> value="managed"/> >> <property name="openjpa.ConnectionFactoryMode" >> value="managed"/> >> </properties> >> >> </persistence-unit> >> </persistence> >> >> On Tue, Apr 12, 2011 at 4:08 PM, Johan Edstrom <[email protected]> wrote: >>> What does your persistence look like? >>> You'll need something like >>> >>> <persistence xmlns="http://java.sun.com/xml/ns/persistence" >>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >>> xsi:schemaLocation="http://java.sun.com/xml/ns/persistence >>> http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" >>> version="2.0"> >>> >>> <persistence-unit name="mymagical-jpa-unit" transaction-type="JTA"> >>> >>> <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider> >>> <jta-data-source>blueprint:comp/jta</jta-data-source> >>> >>> <non-jta-data-source>osgi:service/javax.sql.DataSource/(transactional=false)</non-jta-data-source> >>> <!-- Entity classes here --> >>> >>> <exclude-unlisted-classes>true</exclude-unlisted-classes> >>> <validation-mode>NONE</validation-mode> >>> >>> <properties> >>> <property name="openjpa.Multithreaded" value="true"/> >>> <property name="openjpa.TransactionMode" value="managed"/> >>> <property name="openjpa.ConnectionFactoryMode" value="managed"/> >>> <property name="openjpa.jdbc.MappingDefaults" >>> value="ForeignKeyDeleteAction=restrict, >>> JoinForeignKeyDeleteAction=restrict"/> >>> <property name="openjpa.LockManager" >>> value="pessimistic(VersionCheckOnReadLock=true,VersionUpdateOnWriteLock=true)"/> >>> <property name="openjpa.Log" value="DefaultLevel=INFO, Runtime=INFO, >>> Tool=INFO, SQL=INFO"/> >>> </properties> >>> </persistence-unit> >>> >>> </persistence> >>> On Apr 12, 2011, at 7:43 AM, Guillaume Nodet wrote: >>> >>>> Looking at the stack trace, the problem seems to be in the JPA >>>> definition, as it does not hit the datasource. >>>> Can you list the services exported by the datasource bundle ? >>>> Also, do you have aries jndi installed ? As your config uses it to >>>> lookup the osgi service. >>>> >>>> On Tue, Apr 12, 2011 at 14:47, Charles Moulliard <[email protected]> >>>> wrote: >>>>> Here is the complete blueprint file to expose the datasource >>>>> >>>>> <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" >>>>> >>>>> xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.0.0"> >>>>> >>>>> <cm:property-placeholder persistent-id="database" id="database"> >>>>> <cm:default-properties> >>>>> >>>>> <!-- JDBC Drivers --> >>>>> <cm:property name="jdbc.driverClassName" >>>>> value="org.hsqldb.jdbcDriver"/> >>>>> <cm:property name="jdbc.url" >>>>> value="jdbc:hsqldb:hsql://localhost/reportdb"/> >>>>> <cm:property name="jdbc.username" value="sa"/> >>>>> <cm:property name="jdbc.password" value=""/> >>>>> >>>>> <!-- Connection Pooling DBCP --> >>>>> <cm:property name="jdbc.initialSize" value="5"/> >>>>> <cm:property name="jdbc.maxActive" value="10"/> >>>>> <cm:property name="jdbc.maxIdle" value="10"/> >>>>> <cm:property name="jdbc.defaultAutoCommit" value="false"/> >>>>> <cm:property name="jdbc.removeAbandoned" value="false"/> >>>>> <cm:property name="jdbc.removeAbandonedTimeout" value="300"/> >>>>> <cm:property name="jdbc.logAbandoned" value="false"/> >>>>> >>>>> </cm:default-properties> >>>>> </cm:property-placeholder> >>>>> >>>>> <service auto-export="interfaces" ref="jta"> >>>>> <service-properties> >>>>> <entry key="transactional" value="true"/> >>>>> </service-properties> >>>>> </service> >>>>> >>>>> <service auto-export="interfaces" ref="nonJTA"> >>>>> <service-properties> >>>>> <entry key="transactional" value="false"/> >>>>> </service-properties> >>>>> </service> >>>>> >>>>> <!-- ###### JDBC Data Source ###### --> >>>>> <bean id="jta" class="org.enhydra.jdbc.standard.StandardXADataSource"> >>>>> <property name="driverName" value="${jdbc.driverClassName}"/> >>>>> <property name="url" value="${jdbc.url}"/> >>>>> <property name="user" value="${jdbc.username}"/> >>>>> <property name="password" value="${jdbc.password}"/> >>>>> </bean> >>>>> >>>>> <bean class="org.apache.commons.dbcp.BasicDataSource" id="nonJTA"> >>>>> <property name="driverClassName" value="${jdbc.driverClassName}"/> >>>>> <property name="url" value="${jdbc.url}"/> >>>>> <property name="username" value="${jdbc.username}"/> >>>>> <property name="password" value="${jdbc.password}"/> >>>>> <property name="initialSize" value="${jdbc.initialSize}"/> >>>>> <property name="maxActive" value="${jdbc.maxActive}"/> >>>>> <property name="maxIdle" value="${jdbc.maxIdle}"/> >>>>> <property name="defaultAutoCommit" value="false"/> >>>>> <property name="removeAbandoned" value="${jdbc.removeAbandoned}"/> >>>>> <property name="removeAbandonedTimeout" >>>>> value="${jdbc.removeAbandonedTimeout}"/> >>>>> <property name="logAbandoned" value="${jdbc.logAbandoned}"/> >>>>> </bean> >>>>> >>>>> </blueprint> >>>>> >>>>> Regards, >>>>> >>>>> Charles >>>>> >>>>> >>>>> On Tue, Apr 12, 2011 at 2:37 PM, Ioannis Canellos <[email protected]> >>>>> wrote: >>>>>> Halo Charles, >>>>>> >>>>>> I think that you didn't paste the actual data source. >>>>>> >>>>>> >>>>>> On Tue, Apr 12, 2011 at 3:20 PM, Charles Moulliard >>>>>> <[email protected]>wrote: >>>>>> >>>>>>> Hi, >>>>>>> >>>>>>> I have configured OpenJPA to use a JTA/XA Datasource on ServiceMix but >>>>>>> when I try to insert data in the DB, openJPA generates the following >>>>>>> error : >>>>>>> >>>>>>> Caused by: java.lang.RuntimeException: There were errors initializing >>>>>>> your configuration: <openjpa-2.1.0-r422266:1071316 fatal user error> >>>>>>> org.apache.openjpa.util.UserException: A JDBC Driver or DataSource >>>>>>> class name must be specified in the ConnectionDriverName property. >>>>>>> at >>>>>>> org.apache.openjpa.jdbc.schema.DataSourceFactory.newDataSource(DataSourceFactory.java:76) >>>>>>> at >>>>>>> org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.createConnectionFactory(JDBCConfigurationImpl.java:844) >>>>>>> at >>>>>>> org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.getConnectionFactory(JDBCConfigurationImpl.java:732) >>>>>>> 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.openjpa.lib.conf.ConfigurationImpl.instantiateAll(ConfigurationImpl.java:295) >>>>>>> >>>>>>> >>>>>>> The property >>>>>>> <jta-data-source>osgi:service/javax.sql.DataSource/(transactional=true)</jta-datasource> >>>>>>> in the persistence.xml file point to the XADataSource exposed as an >>>>>>> osgi service >>>>>>> >>>>>>> Persistence >>>>>>> ************** >>>>>>> <persistence-unit name="reportincident" transaction-type="JTA"> >>>>>>> >>>>>>> >>>>>>> <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider> >>>>>>> >>>>>>> >>>>>>> <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider> >>>>>>> >>>>>>> >>>>>>> <jta-data-source>osgi:service/javax.sql.DataSource/(transactional=true)</jta-data-source> >>>>>>> <!-- Required by openJPA to update sequence table outside of >>>>>>> Global Tx Management --> >>>>>>> >>>>>>> <non-jta-data-source>osgi:service/javax.sql.DataSource/(transactional=false)</non-jta-data-source> >>>>>>> >>>>>>> <class>com.mycompany.persistence.model.Incident</class> >>>>>>> >>>>>>> <exclude-unlisted-classes>true</exclude-unlisted-classes> >>>>>>> >>>>>>> <!-- openjpa & HSQLDB --> >>>>>>> <properties> >>>>>>> <property name="openjpa.jdbc.SynchronizeMappings" >>>>>>> >>>>>>> value="buildSchema(SchemaAction='add,deleteTableContents')"/> >>>>>>> <property name="openjpa.Log" >>>>>>> value="commons"/> >>>>>>> <property name="openjpa.jdbc.DBDictionary" >>>>>>> value="hsql(useSchemaName=true)"/> >>>>>>> <property name="openjpa.jdbc.Schema" >>>>>>> value="PUBLIC"/> >>>>>>> <property name="openjpa.TransactionMode" >>>>>>> value="managed"/> >>>>>>> <property name="openjpa.ManagedRuntime" >>>>>>> >>>>>>> >>>>>>> value="jndi(TransactionManagerName=aries:services/javax.transaction.TransactionManager)"/> >>>>>>> <property name="openjpa.Multithreaded" >>>>>>> value="true"/> >>>>>>> <property name="openjpa.TransactionMode" >>>>>>> value="managed"/> >>>>>>> <!--<property name="openjpa.ConnectionFactoryMode" >>>>>>> value="managed"/>--> >>>>>>> </properties> >>>>>>> >>>>>>> >>>>>>> >>>>>>> Blueprint config of the DataSource >>>>>>> **************************************** >>>>>>> <service auto-export="interfaces" ref="jta"> >>>>>>> <service-properties> >>>>>>> <entry key="transactional" value="true"/> >>>>>>> </service-properties> >>>>>>> </service> >>>>>>> >>>>>>> <service auto-export="interfaces" ref="jta"> >>>>>>> <service-properties> >>>>>>> <entry key="transactional" value="true"/> >>>>>>> </service-properties> >>>>>>> </service> >>>>>>> >>>>>>> Any idea is welcome. >>>>>>> >>>>>>> >>>>>>> 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 >>>>>>> >>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> *Ioannis Canellos* >>>>>> * >>>>>> http://iocanel.blogspot.com >>>>>> >>>>>> Apache Karaf <http://karaf.apache.org/> Committer & PMC >>>>>> Apache ServiceMix <http://servicemix.apache.org/> Committer >>>>>> * >>>>>> >>>>> >>>> >>>> >>>> >>>> -- >>>> Cheers, >>>> Guillaume Nodet >>>> ------------------------ >>>> Blog: http://gnodet.blogspot.com/ >>>> ------------------------ >>>> Open Source SOA >>>> http://fusesource.com >>> >>> > > >
