Community
Participate
Working Groups
I developed a simple test application, based on EclipseLink/JPA. It works fine when I launch the app inside Eclipse, but it doesn't work outside it. I'm using this deploy structure: configuration\ plugins\ org.eclipse.equinox.common_3.6.0.v20110523.jar org.eclipse.osgi_3.7.1.R37x_v20110808-1106.jar org.eclipse.update.configurator_3.3.100.v20100512.jar osgi.tkdata.bundle.impl.starter_1.0.0.201001141858.jar start_5555.bat starter.sequence I start org.eclipse.osgi_3.7.1.R37x_v20110808-1106.jar using this start_5555.bat script: java -jar org.eclipse.osgi_3.7.1.R37x_v20110808-1106.jar -console 5555 It loads this configuration\config.ini file after startup: osgi.bundles=org.eclipse.equinox.common@2:start,org.eclipse.update.configurator@3:start, osgi.tkdata.bundle.impl.starter@5:start eclipse.ignoreApp=true osgi.clean=true osgi.framework.activeThreadType=normal osgi.noShutdown=true The osgi.tkdata.bundle.impl.starter is a simple bundle that after start send the start command to all bundles installed by org.eclipse.update.configurator; this is the sequence used: # START LEVEL:-1 org.eclipse.osgi # LEVEL:1 javax.persistence org.apache.log4j org.eclipse.equinox.cm org.eclipse.equinox.log # LEVEL:2 org.eclipse.persistence.jpa # LEVEL:default javax.xml ojdbc14 org.apache.commons.logging org.eclipse.osgi.services org.eclipse.persistence.antlr org.eclipse.persistence.asm org.eclipse.persistence.core org.eclipse.persistence.jpa.osgi org.eclipse.soda.sat.core org.eclipse.soda.sat.equinox.console.cmdprov osgi.tkdata.services.api.bundletester osgi.tkdata.services.api.configloader osgi.tkdata.services.api.usermanager.api osgi.tkdata.services.api.usermanager.model osgi.tkdata.services.impl.bundletester osgi.tkdata.services.impl.configloader osgi.tkdata.services.impl.log4jlistener osgi.tkdata.services.impl.usermanager osgi.tkdata.utils.globalutils.jpaglobalutils osgi.tkdata.utils.globalutils My model is stored into osgi.tkdata.services.api.usermanager.model bundle; in its META-INF package there are this persistence.xml <?xml version="1.0" encoding="UTF-8"?> <persistence version="2.0" 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"> <persistence-unit name="osgi.tkdata.services.api.usermanager.model"> <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> <class>osgi.tkdata.services.api.usermanager.model.Group</class> <class>osgi.tkdata.services.api.usermanager.model.User</class> <class>osgi.tkdata.services.api.usermanager.model.Context</class> <class>osgi.tkdata.services.api.usermanager.model.Property</class> <class>osgi.tkdata.services.api.usermanager.model.Operation</class> <class>osgi.tkdata.services.api.usermanager.model.LogOperation</class> <properties> <property name="javax.persistence.jdbc.driver" value="oracle.jdbc.OracleDriver"/> <property name="javax.persistence.jdbc.url" value="jdbc:oracle:thin:@localhost:1521:XE"/> <property name="javax.persistence.jdbc.user" value="TKDATA_USER01"/> <property name="javax.persistence.jdbc.password" value="tkdata"/> <property name="eclipselink.cache.shared" value="false"/> <property name="eclipselink.cache.type.default" value="NONE"/> <!-- questo per scrivere a video l'output di eclispe link <property name="eclipselink.logging.level" value="FINE"/> --> <!-- Data model creation <property name="eclipselink.ddl-generation" value="drop-and-create-tables" /> <property name="eclipselink.ddl-generation.output-mode" value="sql-script" /> <property name="eclipselink.application-location" value="D:\temp\"/> --> </properties> </persistence-unit> </persistence> and this MANIFEST.MF: Manifest-Version: 1.0 Export-Package: osgi.tkdata.services.api.usermanager.model Bundle-ActivationPolicy: lazy Bundle-Version: 1.0.0.201110211248 Bundle-Name: osgi.tkdata.services.api.usermanager.model Bundle-ManifestVersion: 2 Import-Package: javax.persistence, org.eclipse.persistence.config Bundle-SymbolicName: osgi.tkdata.services.api.usermanager.model Bundle-RequiredExecutionEnvironment: JavaSE-1.6 JPA-PersistenceUnits: osgi.tkdata.services.api.usermanager.model After the start, I obtain this error message: 2011-10-21 17:25:05,078 ERROR - [osgi.tkdata.services.impl.usermanager] UserManagerImpl activation error: Exception Description: An exception was thrown while trying to load persistence unit at url: bundleresource://25.fwk11625173 Internal Exception: Exception [EclipseLink-30004] (Eclipse Persistence Services - 2.3.0.v20110604-r9504): org.eclipse.persistence.exceptions.PersistenceUnitLoadingException Exception Description: An exception was thrown while processing persistence.xml from URL: bundleresource://25.fwk11625173 Internal Exception: java.net.MalformedURLException org.eclipse.persistence.exceptions.PersistenceUnitLoadingException.exceptionLoadingFromUrl(PersistenceUnitLoadingException.java:99) org.eclipse.persistence.internal.jpa.deployment.PersistenceUnitProcessor.processPersistenceArchive(PersistenceUnitProcessor.java:538) org.eclipse.persistence.internal.jpa.deployment.PersistenceUnitProcessor.getPersistenceUnits(PersistenceUnitProcessor.java:444) org.eclipse.persistence.internal.jpa.deployment.JPAInitializer.initPersistenceUnits(JPAInitializer.java:282) org.eclipse.persistence.internal.jpa.deployment.JPAInitializer.initialize(JPAInitializer.java:265) org.eclipse.persistence.jpa.osgi.PersistenceProvider.getInitializer(PersistenceProvider.java:91) org.eclipse.persistence.jpa.PersistenceProvider.createEntityManagerFactory(PersistenceProvider.java:71) org.eclipse.persistence.jpa.osgi.EMFServiceProxyHandler.createEMF(EMFServiceProxyHandler.java:107) org.eclipse.persistence.jpa.osgi.EMFBuilderServiceProxyHandler.invoke(EMFBuilderServiceProxyHandler.java:76) $Proxy1.createEntityManagerFactory(Unknown Source) org.eclipse.persistence.javax.persistence.osgi.OSGiProviderResolver.lookupEMFBuilder(Unknown Source) org.eclipse.persistence.javax.persistence.osgi.OSGiProviderResolver.createEntityManagerFactory(Unknown Source) javax.persistence.Persistence.createEntityManagerFactory(Unknown Source) osgi.tkdata.utils.globalutils.jpa.JpaBaseManager.initializeEntityManagerFactory(JpaBaseManager.java:70) osgi.tkdata.utils.globalutils.jpa.JpaBaseManager.initializeEntityManagerFactory(JpaBaseManager.java:55) osgi.tkdata.services.impl.usermanager.Activator.activate(Activator.java:35) org.eclipse.soda.sat.core.framework.BaseBundleActivator$1.activate(BaseBundleActivator.java:435) org.eclipse.soda.sat.core.internal.framework.bundle.BundleActivationManager.activate(BundleActivationManager.java:290) org.eclipse.soda.sat.core.internal.framework.bundle.BundleActivationManager.performActivation(BundleActivationManager.java:1589) org.eclipse.soda.sat.core.internal.framework.bundle.BundleActivationManager.access$2(BundleActivationManager.java:1574) org.eclipse.soda.sat.core.internal.framework.bundle.BundleActivationManager$3.acquired(BundleActivationManager.java:573) org.eclipse.soda.sat.core.internal.record.container.ImportServiceRecordContainer.serviceAcquired(ImportServiceRecordContainer.java:582) org.eclipse.soda.sat.core.internal.record.container.ImportServiceRecordContainer.access$1(ImportServiceRecordContainer.java:566) org.eclipse.soda.sat.core.internal.record.container.ImportServiceRecordContainer$5.serviceAcquired(ImportServiceRecordContainer.java:352) org.eclipse.soda.sat.core.internal.record.ImportServiceRecord.acquire(ImportServiceRecord.java:116) org.eclipse.soda.sat.core.internal.record.container.ImportServiceRecordContainer$1.execute(ImportServiceRecordContainer.java:64) org.eclipse.soda.sat.core.internal.record.container.ServiceRecordContainer.doForService(ServiceRecordContainer.java:363) org.eclipse.soda.sat.core.internal.record.container.ServiceRecordContainer.doForEach(ServiceRecordContainer.java:330) org.eclipse.soda.sat.core.internal.record.container.ImportServiceRecordContainer.acquire(ImportServiceRecordContainer.java:303) org.eclipse.soda.sat.core.internal.framework.bundle.BundleActivationManager.acquireImportedServices(BundleActivationManager.java:234) org.eclipse.soda.sat.core.internal.framework.bundle.BundleActivationManager.acquireImportServiceRecords(BundleActivationManager.java:250) org.eclipse.soda.sat.core.internal.framework.bundle.BundleActivationManager.startSync(BundleActivationManager.java:2054) org.eclipse.soda.sat.core.internal.framework.bundle.BundleActivationManager.start(BundleActivationManager.java:2023) org.eclipse.soda.sat.core.framework.BaseBundleActivator.start(BaseBundleActivator.java:1371) org.eclipse.osgi.framework.internal.core.BundleContextImpl$1.run(BundleContextImpl.java:711) java.security.AccessController.doPrivileged(Native Method) org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:702) org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:683) org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:381) org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:299) org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:291) osgi.tkdata.bundle.impl.starter.BundleStarter.execStartSequence(BundleStarter.java:102) osgi.tkdata.bundle.impl.starter.Activator.start(Activator.java:16) org.eclipse.osgi.framework.internal.core.BundleContextImpl$1.run(BundleContextImpl.java:711) java.security.AccessController.doPrivileged(Native Method) org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:702) org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:683) org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:381) org.eclipse.osgi.framework.internal.core.AbstractBundle.resume(AbstractBundle.java:389) org.eclipse.osgi.framework.internal.core.Framework.resumeBundle(Framework.java:1131) org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:559) org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:544) org.eclipse.osgi.framework.internal.core.StartLevelManager.incFWSL(StartLevelManager.java:457) org.eclipse.osgi.framework.internal.core.StartLevelManager.doSetStartLevel(StartLevelManager.java:243) org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.java:438) org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.java:1) org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340) Last 2 things: - Again, inside Eclipse the same configuration works fine - I used this deploy structure for many other systems based on EclipseLink 1.2.0 and it always worked Now i have to port my old projects on new EclipseLink, but i'm unable to solve this problem. Thanks for any help.
I found a (partial) workaround: using this deploy configuration configuration\ plugins\ service_wrapper\ org.eclipse.equinox.common_3.6.0.v20091203.jar org.eclipse.osgi_3.6.0.v20091204.jar org.eclipse.update.configurator_3.3.0.v20090312.jar osgi.tkdata.bundle.impl.starter_1.0.0.201001141858.jar start_5555.bat start_hps.bat starter.sequence the MalformedURLException disappears, and all works. It seems a problem of Equinox 3.7......
Ok, changing manually the bundle, i found that the problem depends by Equinox 3.7. Using org.eclipse.osgi bundle version 3.7 i obtain the error; using org.eclipse.osgi bundle version 3.6 all works. I move this problem from EclipseLink to Equinox.
*** This bug has been marked as a duplicate of bug 355484 ***