Hello everyone!
The whole interaction between this technologies works perfectly but now
I have encountered a problem that I simply don't understand:
I have two bundles: Bundle A defines a datasource and exports it like in
the blog example. Bundle B uses this datasource as jta-data-source.
Corresponding code blocks look like this:
--- JPA DATASOURCE XML ---
<bean id="dataSource" class="org.h2.jdbcx.JdbcDataSource">
<property name="URL" value="jdbc:h2:EDB"/>
</bean>
<bean id="xdataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close" init-method="createDataSource">
<property name="driverClassName" value="org.h2.jdbcx.JdbcDataSource" />
<property name="url" value="jdbc:h2:EDB" />
<property name="username" value="" />
<property name="password" value="" />
</bean>
<service id="xaDataSource" ref="xdataSource"
interface="javax.sql.DataSource">
<service-properties>
<entry key="osgi.jndi.service.name" value="jdbc/openengsb"/>
</service-properties>
</service>
--- END JPA DATASOURCE XML ---
--- EDB PERSISTENCE XML ---
<jta-data-source>osgi:service/javax.sql.DataSource/(osgi.jndi.service.name=jdbc/openengsb)</jta-data-source>
--- END EDB PERSISTENCE XML ---
If I now use the dataSource in the xaDataSource service everything works
like a charm, but if I want to use the xdataSource suddenly the
exception that I sent as attachment is thrown and I have no idea why
this is happening.
Does someone have an idea?
Kind regards
Felix
org.openengsb.core.api.edb.EDBException: Failed to commit transaction to DB
at
org.openengsb.core.edb.internal.JPADatabase.commit(JPADatabase.java:148)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at
org.apache.aries.proxy.impl.ProxyHandler$1.invoke(ProxyHandler.java:50)
at
org.apache.aries.blueprint.proxy.Collaborator.invoke(Collaborator.java:91)
at org.apache.aries.proxy.impl.ProxyHandler.invoke(ProxyHandler.java:78)
at org.openengsb.core.edb.internal.$JPADatabase67988972.commit(Unknown
Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at
org.apache.aries.proxy.impl.ProxyHandler$1.invoke(ProxyHandler.java:50)
at
org.apache.aries.proxy.impl.DefaultWrapper.invoke(DefaultWrapper.java:31)
at org.apache.aries.proxy.impl.ProxyHandler.invoke(ProxyHandler.java:78)
at $Proxy28.commit(Unknown Source)
at
org.openengsb.core.bla.internal.TestClient.startUp(TestClient.java:37)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at
org.apache.aries.blueprint.utils.ReflectionUtils.invoke(ReflectionUtils.java:226)
at
org.apache.aries.blueprint.container.BeanRecipe.invoke(BeanRecipe.java:824)
at
org.apache.aries.blueprint.container.BeanRecipe.runBeanProcInit(BeanRecipe.java:636)
at
org.apache.aries.blueprint.container.BeanRecipe.internalCreate(BeanRecipe.java:724)
at
org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:64)
at
org.apache.aries.blueprint.container.BlueprintRepository.createInstances(BlueprintRepository.java:219)
at
org.apache.aries.blueprint.container.BlueprintRepository.createAll(BlueprintRepository.java:147)
at
org.apache.aries.blueprint.container.BlueprintContainerImpl.instantiateEagerComponents(BlueprintContainerImpl.java:640)
at
org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:331)
at
org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:227)
at
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:165)
at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:266)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:636)
Caused by: <openjpa-2.1.0-r422266:1071316 nonfatal general error>
org.apache.openjpa.persistence.PersistenceException: The DataSource
osgi:service/javax.sql.DataSource/(osgi.jndi.service.name=jdbc/openengsb) could
not be used.
at
org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:219)
at
org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:156)
at
org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:227)
at
org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:60)
at
org.apache.aries.jpa.container.impl.CountingEntityManagerFactory.createEntityManager(CountingEntityManagerFactory.java:70)
at
org.apache.aries.jpa.container.context.transaction.impl.JTAPersistenceContextRegistry.getCurrentPersistenceContext(JTAPersistenceContextRegistry.java:131)
at
org.apache.aries.jpa.container.context.transaction.impl.JTAEntityManager.getPersistenceContext(JTAEntityManager.java:83)
at
org.apache.aries.jpa.container.context.transaction.impl.JTAEntityManager.persist(JTAEntityManager.java:278)
at
org.openengsb.core.edb.internal.JPADatabase.commit(JPADatabase.java:123)
... 39 more
Caused by: java.lang.RuntimeException: The DataSource
osgi:service/javax.sql.DataSource/(osgi.jndi.service.name=jdbc/openengsb) could
not be used.
at
org.apache.aries.jpa.container.unit.impl.DelayedLookupDataSource.getDs(DelayedLookupDataSource.java:59)
at
org.apache.aries.jpa.container.unit.impl.DelayedLookupDataSource.getConnection(DelayedLookupDataSource.java:74)
at
org.apache.openjpa.lib.jdbc.DelegatingDataSource.getConnection(DelegatingDataSource.java:131)
at
org.apache.openjpa.lib.jdbc.DecoratingDataSource.getConnection(DecoratingDataSource.java:106)
at
org.apache.openjpa.jdbc.sql.DBDictionaryFactory.newDBDictionary(DBDictionaryFactory.java:91)
at
org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.getDBDictionaryInstance(JDBCConfigurationImpl.java:603)
at
org.apache.openjpa.jdbc.meta.MappingRepository.endConfiguration(MappingRepository.java:1510)
at
org.apache.openjpa.lib.conf.Configurations.configureInstance(Configurations.java:518)
at
org.apache.openjpa.lib.conf.Configurations.configureInstance(Configurations.java:443)
at
org.apache.openjpa.lib.conf.PluginValue.instantiate(PluginValue.java:104)
at
org.apache.openjpa.conf.MetaDataRepositoryValue.instantiate(MetaDataRepositoryValue.java:68)
at
org.apache.openjpa.lib.conf.ObjectValue.instantiate(ObjectValue.java:83)
at
org.apache.openjpa.conf.OpenJPAConfigurationImpl.newMetaDataRepositoryInstance(OpenJPAConfigurationImpl.java:949)
at
org.apache.openjpa.conf.OpenJPAConfigurationImpl.getMetaDataRepositoryInstance(OpenJPAConfigurationImpl.java:940)
at
org.apache.openjpa.kernel.AbstractBrokerFactory.makeReadOnly(AbstractBrokerFactory.java:637)
at
org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:204)
... 47 more
Caused by: javax.naming.NameNotFoundException:
osgi:service/javax.sql.DataSource/"(osgi.jndi.service.name=jdbc/openengsb)"
at
org.apache.aries.jndi.url.ServiceRegistryContext.lookup(ServiceRegistryContext.java:110),
at
org.apache.aries.jndi.url.ServiceRegistryContext.lookup(ServiceRegistryContext.java:141),
at
org.apache.aries.jndi.DelegateContext.lookup(DelegateContext.java:161),
javax.naming.InitialContext.lookup(InitialContext.java:409),
at
org.apache.aries.jpa.container.unit.impl.DelayedLookupDataSource.getDs(DelayedLookupDataSource.java:55),
at
org.apache.aries.jpa.container.unit.impl.DelayedLookupDataSource.getConnection(DelayedLookupDataSource.java:74),
at
org.apache.openjpa.lib.jdbc.DelegatingDataSource.getConnection(DelegatingDataSource.java:131),
at
org.apache.openjpa.lib.jdbc.DecoratingDataSource.getConnection(DecoratingDataSource.java:106),
at
org.apache.openjpa.jdbc.sql.DBDictionaryFactory.newDBDictionary(DBDictionaryFactory.java:91),
at
org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.getDBDictionaryInstance(JDBCConfigurationImpl.java:603),
at
org.apache.openjpa.jdbc.meta.MappingRepository.endConfiguration(MappingRepository.java:1510),
at
org.apache.openjpa.lib.conf.Configurations.configureInstance(Configurations.java:518),
at
org.apache.openjpa.lib.conf.Configurations.configureInstance(Configurations.java:443),
at
org.apache.openjpa.lib.conf.PluginValue.instantiate(PluginValue.java:104),
at
org.apache.openjpa.conf.MetaDataRepositoryValue.instantiate(MetaDataRepositoryValue.java:68),
at
org.apache.openjpa.lib.conf.ObjectValue.instantiate(ObjectValue.java:83),
at
org.apache.openjpa.conf.OpenJPAConfigurationImpl.newMetaDataRepositoryInstance(OpenJPAConfigurationImpl.java:949),
at
org.apache.openjpa.conf.OpenJPAConfigurationImpl.getMetaDataRepositoryInstance(OpenJPAConfigurationImpl.java:940),
at
org.apache.openjpa.kernel.AbstractBrokerFactory.makeReadOnly(AbstractBrokerFactory.java:637),
at
org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:204),
at
org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:156),
at
org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:227),
at
org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:60),
at
org.apache.aries.jpa.container.impl.CountingEntityManagerFactory.createEntityManager(CountingEntityManagerFactory.java:70),
at
org.apache.aries.jpa.container.context.transaction.impl.JTAPersistenceContextRegistry.getCurrentPersistenceContext(JTAPersistenceContextRegistry.java:131),
at
org.apache.aries.jpa.container.context.transaction.impl.JTAEntityManager.getPersistenceContext(JTAEntityManager.java:83),
at
org.apache.aries.jpa.container.context.transaction.impl.JTAEntityManager.persist(JTAEntityManager.java:278),
at
org.openengsb.core.edb.internal.JPADatabase.commit(JPADatabase.java:123),
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method),
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57),
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43),
at java.lang.reflect.Method.invoke(Method.java:616),
at
org.apache.aries.proxy.impl.ProxyHandler$1.invoke(ProxyHandler.java:50),
at
org.apache.aries.blueprint.proxy.Collaborator.invoke(Collaborator.java:91),
at
org.apache.aries.proxy.impl.ProxyHandler.invoke(ProxyHandler.java:78),
at
org.openengsb.core.edb.internal.$JPADatabase1669799792.commit(Unknown Source),
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method),
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57),
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43),
at java.lang.reflect.Method.invoke(Method.java:616),
at
org.apache.aries.proxy.impl.ProxyHandler$1.invoke(ProxyHandler.java:50),
at
org.apache.aries.proxy.impl.DefaultWrapper.invoke(DefaultWrapper.java:31),
at
org.apache.aries.proxy.impl.ProxyHandler.invoke(ProxyHandler.java:78),
at $Proxy22.commit(Unknown Source),
at
org.openengsb.core.bla.internal.TestClient.startUp(TestClient.java:35),
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method),
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57),
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43),
at java.lang.reflect.Method.invoke(Method.java:616),
at
org.apache.aries.blueprint.utils.ReflectionUtils.invoke(ReflectionUtils.java:226),
at
org.apache.aries.blueprint.container.BeanRecipe.invoke(BeanRecipe.java:824),
at
org.apache.aries.blueprint.container.BeanRecipe.runBeanProcInit(BeanRecipe.java:636),
at
org.apache.aries.blueprint.container.BeanRecipe.internalCreate(BeanRecipe.java:724),
at
org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:64),
at
org.apache.aries.blueprint.container.BlueprintRepository.createInstances(BlueprintRepository.java:219),
at
org.apache.aries.blueprint.container.BlueprintRepository.createAll(BlueprintRepository.java:147),
at
org.apache.aries.blueprint.container.BlueprintContainerImpl.instantiateEagerComponents(BlueprintContainerImpl.java:640),
at
org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:331),
at
org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:227),
at
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471),
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334),
at java.util.concurrent.FutureTask.run(FutureTask.java:166),
at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:165),
at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:266),
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110),
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603),
at java.lang.Thread.run(Thread.java:636)]