Hi
I am trying to run EclipseLink 4.0.3 JPA in an OSGI Environment
I use the EclipseLink 4.0.2 OSGi Bundles in Target Platform.
I create an OSGi bundle with Activator
I put the persistence.xml into the META-INF directory
I add Meta-Persistence: META-INF/persistence.xml to MANIFEST.MF of the Plugin-Project:
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Plugin
Bundle-SymbolicName: ch.eugster.persistence.plugin
Bundle-Version: 1.0.0.qualifier
Bundle-Activator: ch.eugster.persistence.plugin.Activator
Bundle-ClassPath: lib/mysql-connector-j-9.0.0.jar,
.
Require-Bundle: org.eclipse.core.runtime,
jakarta.persistence-api;bundle-version="3.1.0",
org.eclipse.persistence.asm.source;bundle-version="9.7.0",
org.eclipse.persistence.core;bundle-version="4.0.3",
org.eclipse.persistence.jpa;bundle-version="4.0.3",
jakarta.validation.jakarta.validation-api;bundle-version="3.0.2"
Bundle-RequiredExecutionEnvironment: JavaSE-21
Automatic-Module-Name: ch.eugster.persistence.plugin
Bundle-ActivationPolicy: lazy
Meta-Persistence: META-INF/persistence.xml
The persistence.xml looks like this:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<persistence version="3.0"
xmlns="https://jakarta.ee/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://jakarta.ee/xml/ns/persistence
https://jakarta.ee/xml/ns/persistence/persistence_3_0.xsd">
<persistence-unit name="test">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<properties>
<property name="jakarta.persistence.jdbc.driver"
value="com.mysql.cj.jdbc.Driver" />
<property name="jakarta.persistence.jdbc.url"
value="jdbc:mysql://localhost:3306/test" />
<property name="jakarta.persistence.jdbc.user" value="test" />
<property name="jakarta.persistence.jdbc.password"
value="test" />
<property
name="jakarta.persistence.schema-generation.database.action"
value="create" />
</properties>
</persistence-unit>
</persistence>
I add a schema "test" with all privileges for user test and password test in my local mysql database system
in the Activator.start method I add code:
Map<String, Object> properties = new HashMap<String, Object>();
properties.put("jakarta.persistence.provider", PersistenceProvider.class);
properties.put("jakarta.persistence.jdbc.driver", Driver.class);
properties.put("jakarta.persistence.jdbc.url", "jdbc:mysql://localhost:3306/test");
properties.put("jakarta.persistence.jdbc.user", "test");
properties.put("jakarta.persistence.jdbc.password", "test");
EntityManagerFactory emf = Persistence.createEntityManagerFactory("test", properties);
EntityManager em = emf.createEntityManager();
em.close();
emf.close();
(the persistence.xml I put for getting shure).
When running I get the stacktrace:
!SESSION 2024-07-11 10:15:10.991 -----------------------------------------------
eclipse.buildId=unknown
java.version=21.0.1
java.vendor=Eclipse Adoptium
BootLoader constants: OS=macosx, ARCH=x86_64, WS=cocoa, NL=de_CH
Command-line arguments: -dev file:/Users/christian/Projekte/bidib/workspace/.metadata/.plugins/org.eclipse.pde.core/OSGi Framework/dev.properties -os macosx -ws cocoa -arch x86_64 -consoleLog -console
!ENTRY ch.eugster.persistence.plugin 4 0 2024-07-11 10:15:15.542
!MESSAGE FrameworkEvent ERROR
!STACK 0
org.osgi.framework.BundleException: Exception in ch.eugster.persistence.plugin.Activator.start() of bundle ch.eugster.persistence.plugin.
at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:854)
at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:775)
at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:1057)
at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:387)
at org.eclipse.osgi.container.Module.doStart(Module.java:639)
at org.eclipse.osgi.container.Module.start(Module.java:498)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel$2.run(ModuleContainer.java:2074)
at org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor$1$1.execute(EquinoxContainerAdaptor.java:143)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:2065)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:2007)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.doContainerStartLevel(ModuleContainer.java:1968)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1884)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1)
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:341)
Caused by: jakarta.persistence.PersistenceException: No Persistence provider for EntityManager named test
at jakarta.persistence.Persistence.createEntityManagerFactory(Persistence.java:86)
at ch.eugster.persistence.plugin.Activator.start(Activator.java:30)
at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:833)
at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:1)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:571)
at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:825)
... 14 more
Root exception:
jakarta.persistence.PersistenceException: No Persistence provider for EntityManager named test
at jakarta.persistence.Persistence.createEntityManagerFactory(Persistence.java:86)
at ch.eugster.persistence.plugin.Activator.start(Activator.java:30)
at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:833)
at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:1)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:571)
at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:825)
at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:775)
at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:1057)
at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:387)
at org.eclipse.osgi.container.Module.doStart(Module.java:639)
at org.eclipse.osgi.container.Module.start(Module.java:498)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel$2.run(ModuleContainer.java:2074)
at org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor$1$1.execute(EquinoxContainerAdaptor.java:143)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:2065)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:2007)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.doContainerStartLevel(ModuleContainer.java:1968)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1884)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1)
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:341)
____________________________
Welcome to Apache Felix Gogo
g! Juli 11, 2024 10:15:15 AM org.apache.aries.spifly.BaseActivator log
INFORMATION: Registered provider org.eclipse.parsson.JsonProviderImpl of service jakarta.json.spi.JsonProvider in bundle org.eclipse.parsson
Juli 11, 2024 10:15:15 AM org.apache.aries.spifly.BaseActivator log
INFORMATION: Registered provider org.eclipse.angus.activation.MailcapRegistryProviderImpl of service jakarta.activation.spi.MailcapRegistryProvider in bundle angus-activation
Juli 11, 2024 10:15:15 AM org.apache.aries.spifly.BaseActivator log
INFORMATION: Registered provider org.eclipse.angus.activation.MimeTypeRegistryProviderImpl of service jakarta.activation.spi.MimeTypeRegistryProvider in bundle angus-activation
Juli 11, 2024 10:15:15 AM org.apache.aries.spifly.BaseActivator log
INFORMATION: Registered provider org.eclipse.angus.mail.imap.IMAPProvider of service jakarta.mail.Provider in bundle org.eclipse.angus.mail
Juli 11, 2024 10:15:15 AM org.apache.aries.spifly.BaseActivator log
INFORMATION: Registered provider org.eclipse.angus.mail.imap.IMAPSSLProvider of service jakarta.mail.Provider in bundle org.eclipse.angus.mail
Juli 11, 2024 10:15:15 AM org.apache.aries.spifly.BaseActivator log
INFORMATION: Registered provider org.eclipse.angus.mail.smtp.SMTPProvider of service jakarta.mail.Provider in bundle org.eclipse.angus.mail
Juli 11, 2024 10:15:15 AM org.apache.aries.spifly.BaseActivator log
INFORMATION: Registered provider org.eclipse.angus.mail.smtp.SMTPSSLProvider of service jakarta.mail.Provider in bundle org.eclipse.angus.mail
Juli 11, 2024 10:15:15 AM org.apache.aries.spifly.BaseActivator log
INFORMATION: Registered provider org.eclipse.angus.mail.pop3.POP3Provider of service jakarta.mail.Provider in bundle org.eclipse.angus.mail
Juli 11, 2024 10:15:15 AM org.apache.aries.spifly.BaseActivator log
INFORMATION: Registered provider org.eclipse.angus.mail.pop3.POP3SSLProvider of service jakarta.mail.Provider in bundle org.eclipse.angus.mail
Juli 11, 2024 10:15:15 AM org.apache.aries.spifly.BaseActivator log
INFORMATION: Registered provider org.eclipse.angus.mail.util.MailStreamProvider of service jakarta.mail.util.StreamProvider in bundle org.eclipse.angus.mail
!ENTRY org.eclipse.osgi 4 0 2024-07-11 10:15:15.882
!MESSAGE Bundle ch.eugster.persistence.plugin_1.0.0.qualifier [1] is not active.
I do not understand, what I am doing wrong. Am I missing something? Any help is appreciated!
Christian
[Updated on: Thu, 11 July 2024 08:23]
Report message to a moderator