We are writing a sample application (consumer) to use DataNucleus with JPA implementation on plain OSGi (not the Eclipse plugin way) with MySQL. We have created our application data model classes based on the example given on DataNucleus website and it works fine in our environment without OSGi.

The application we created has three model classes as 'Car', 'Toy' and 'ToyShop'. 'Car' and 'Toy' have one-to-many cardinality. This is how my database schema is, and it is defined in orm.xml. I have a persistence.xml file which defines my persistence-unit, persistence provider and databases specific properties say connection URL, user/password etc. I also have MANIFEST.MF to handle the various run time dependencies.

Two points:

1. I build this application and build is successful. I enhance the model classes and enhancement is successful. I created the database schema (tables etc) and that is successful. Now when I deploy this on Equinox (Eclipse Virgo) container, it throws up the following error:

Caused by: javax.persistence.PersistenceException: No persistence providers available for "YetAnotherPersistenceUnit" after trying the following discovered implementations: NONE
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:182)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:72)

I have my persistence.xml well in my CLASSPATH, no issues.
I have my datanucleus core, api-jpa and rdbms bundles properly loaded on equinox container, no issues.
I have apache Geronimo bundles well in place (in CLASSPATH) but, this error is due to the fact that my consumer bundle is not able to get the persistence provider.

The reason could be, that the persistence provider on the OSGi is expected to be as service, at least Geronimo is expecting it to be exposed as an OSGi service, because it tries to get the persistence provider as:

Based on my understanding, it tries to locate the provider service (org.apache.geronimo.osgi.locator.ProviderLocator, I have this as well) and does not get the persistence provider exposed from datanucleus and hence it returns NONE.

At the same time, when I see on virgo admin-console to look at what are the published services from the datanucles bundles, I do not see any services published by datanucleus.api.jpa bundle, is this expected behavior?

With this approach I get the following error. I have org.datanucleus.enhancer in my CLASSPATH.

Caused by: org.eclipse.virgo.kernel.osgi.framework.ExtendedClassNotFoundException: org.datanucleus.enhancer.DataNucleusClassFileTransformer in KernelBundleClassLoader: [bundle=org.datanucleus.api.jpa_3.0.6]
at org.eclipse.virgo.kernel.userregion.internal.equinox.KernelBundleClassLoader.loadClass(KernelBundleClassLoader.java:138)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:186)
at org.datanucleus.api.jpa.JPAClassTransformer.<init>(JPAClassTransformer.java:41)
... 29 common frames omitted
Caused by: java.lang.ClassNotFoundException: org.datanucleus.enhancer.DataNucleusClassFileTransformer
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:513)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:429)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:417)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
at org.eclipse.virgo.kernel.userregion.internal.equinox.KernelBundleClassLoader.loadClass(KernelBundleClassLoader.java:134)
... 33 common frames omitted

What is it I am missing here, can you please help?

Also, ideally, I would love to have datanucleus publish the provider service which I can consume (point 1) as I am not sure how class loading may work in case of dOSGi environment which we plan to use in future.

We are writing a sample application (consumer) to use DataNucleus with JPA implementation on plain OSGi (not the Eclipse plugin way) with MySQL. We have created our application data model classes based on the example given on DataNucleus website and it works fine in our environment without OSGi.
The application we created has three model classes as 'Car', 'Toy' and 'ToyShop'. 'Car' and 'Toy' have one-to-many cardinality. This is how my database schema is, and it is defined in orm.xml. I have a persistence.xml file which defines my persistence-unit, persistence provider and databases specific properties say connection URL, user/password etc. I also have MANIFEST.MF to handle the various run time dependencies.
Two points:
1. I build this application and build is successful. I enhance the model classes and enhancement is successful. I created the database schema (tables etc) and that is successful. Now when I deploy this on Equinox (Eclipse Virgo) container, it throws up the following error:
Caused by: javax.persistence.PersistenceException: No persistence providers available for "YetAnotherPersistenceUnit" after trying the following discovered implementations: NONE
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:182)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:72)
I have my persistence.xml well in my CLASSPATH, no issues.
I have my datanucleus core, api-jpa and rdbms bundles properly loaded on equinox container, no issues.
I have apache Geronimo bundles well in place (in CLASSPATH) but, this error is due to the fact that my consumer bundle is not able to get the persistence provider.
The reason could be, that the persistence provider on the OSGi is expected to be as service, at least Geronimo is expecting it to be exposed as an OSGi service, because it tries to get the persistence provider as:
List<PersistenceProvider> providers = resolver.getPersistenceProviders()
List<Object> serviceProviders = ProviderLocator.getServices(PersistenceProvider.class.getName(), this.getClass(), cl);
The 'provider' comes out as 'null' and throws the above error.
Based on my understanding, it tries to locate the provider service (org.apache.geronimo.osgi.locator.ProviderLocator, I have this as well) and does not get the persistence provider exposed from datanucleus and hence it returns NONE.
At the same time, when I see on virgo admin-console to look at what are the published services from the datanucles bundles, I do not see any services published by datanucleus.api.jpa bundle, is this expected behavior?
2. Then I try to use the OSGi class loading mechanism to explicitly load the "org.datanucleus.api.jpa.PersistenceProviderImpl" class in somewhat similar manner as it is talked on http://www.datanucleus.org/servlet/wiki/display/USERS/HOWTO+Use+Datanucleus+with+OSGi+and+Spring+DM
Sample code snipped is:
DataNucleusOsgiLocalContainerEntityManagerFactoryBean dataNucleusEMFB =
new DataNucleusOsgiLocalContainerEntityManagerFactoryBean();
EntityManagerFactory emf = dataNucleusEMFB.createNativeEntityManagerFactory();
EntityManager em = emf.createEntityManager();
EntityTransaction tx = em.getTransaction();
...
...
And a bean definition with following properties:
<property name="persistenceXmlLocation"
value="classpath:META-INF/persistence.xml" />
<property name="datanucleus.plugin.pluginRegistryClassName"
value="org.datanucleus.plugin.OSGiPluginRegistry"/>
With this approach I get the following error. I have org.datanucleus.enhancer in my CLASSPATH.
Caused by: org.eclipse.virgo.kernel.osgi.framework.ExtendedClassNotFoundException: org.datanucleus.enhancer.DataNucleusClassFileTransformer in KernelBundleClassLoader: [bundle=org.datanucleus.api.jpa_3.0.6]
at org.eclipse.virgo.kernel.userregion.internal.equinox.KernelBundleClassLoader.loadClass(KernelBundleClassLoader.java:138)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:186)
at org.datanucleus.api.jpa.JPAClassTransformer.<init>(JPAClassTransformer.java:41)
... 29 common frames omitted
Caused by: java.lang.ClassNotFoundException: org.datanucleus.enhancer.DataNucleusClassFileTransformer
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:513)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:429)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:417)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
at org.eclipse.virgo.kernel.userregion.internal.equinox.KernelBundleClassLoader.loadClass(KernelBundleClassLoader.java:134)
... 33 common frames omitted
What is it I am missing here, can you please help?
Also, ideally, I would love to have datanucleus publish the provider service which I can consume (point 1) as I am not sure how class loading may work in case of dOSGi environment which we plan to use in future.
Note: I have tried above consumer application with datanucleus 3.0.0-m1, 3.0.0.release, 3.0.7, 3.0.9 and 3.1.0-m2.
Thanks and best regards,
Vivek Mehrotra
GE Global Research

The test case template mentioned at http://www.datanucleus.org/project/problem_jpa_testcase.html requires that test should have Main.java and should run on JDK, however, in our case, it does not have Main.java and runs on OSGi. In this case we may not be able to follow the exact template. Will it be fine if we zip and send the sample consumer application as is the way we worte?

To your point of defining the various loacations of persistence.xml in MANIFEST.MF, we have already tried that too. The current MANIFEST.MF also has "Meta-Persistence: META-INF/persistence.xml".

Vivek Mehrotra added a comment - 25/Apr/12 05:51 PM The test case template mentioned at http://www.datanucleus.org/project/problem_jpa_testcase.html requires that test should have Main.java and should run on JDK, however, in our case, it does not have Main.java and runs on OSGi. In this case we may not be able to follow the exact template. Will it be fine if we zip and send the sample consumer application as is the way we worte?
To your point of defining the various loacations of persistence.xml in MANIFEST.MF, we have already tried that too. The current MANIFEST.MF also has "Meta-Persistence: META-INF/persistence.xml".
-Vivek

Any test should obviously be minimal (i.e not someone's application, no dependencies on things like Spring). Main.java is a requirement for JRE testcases. For OSGi I'd expect an Activator, persistable class, and a (ordered) list of bundles that are loaded into the OSGi container.

Andy Jefferson added a comment - 25/Apr/12 07:09 PM Any test should obviously be minimal (i.e not someone's application, no dependencies on things like Spring). Main.java is a requirement for JRE testcases. For OSGi I'd expect an Activator, persistable class, and a (ordered) list of bundles that are loaded into the OSGi container.

Andy, one more point, when DataNucleus provides OSGI-INF/blueprint/blueprint.xml in the datanucleus-api-jpa.jar, then I should see "persistenceProvider" as published service on the api.jpa bundles which is loaded successfully. I am using virgo 3.0.2.RELEASE, do you know if it supports OSGi 4.2 specs which has blueprint container introduced?

Vivek Mehrotra added a comment - 26/Apr/12 01:36 PM Andy, one more point, when DataNucleus provides OSGI-INF/blueprint/blueprint.xml in the datanucleus-api-jpa.jar, then I should see "persistenceProvider" as published service on the api.jpa bundles which is loaded successfully. I am using virgo 3.0.2.RELEASE, do you know if it supports OSGi 4.2 specs which has blueprint container introduced?

I decided to use karaf instead as I found more clearer bluepring container support on karaf than virgo 3.0.2. I am using karaf 2.2.6. After going past multiple dependencies errors, which I resolved successfully, I see following:

karaf@root> ERROR: Bundle org.apache.aries.jpa.container [83] EventDispatcher: Error during dispatch. (java.lang.RuntimeException: org.datanucleus.enhancer.DataNucleusClassFileTransformer not found by org.datanucleus.api.jpa [86])
java.lang.RuntimeException: org.datanucleus.enhancer.DataNucleusClassFileTransformer not found by org.datanucleus.api.jpa [86]
at org.datanucleus.api.jpa.JPAClassTransformer.<init>(JPAClassTransformer.java:47)
at org.datanucleus.api.jpa.JPAEntityManagerFactory.<init>(JPAEntityManagerFactory.java:279)
at org.datanucleus.api.jpa.PersistenceProviderImpl.createContainerEntityManagerFactory(PersistenceProviderImpl.java:61)
at org.apache.aries.jpa.container.impl.EntityManagerFactoryManager.createEntityManagerFactories(EntityManagerFactoryManager.java:263)
at org.apache.aries.jpa.container.impl.EntityManagerFactoryManager.bundleStateChange(EntityManagerFactoryManager.java:153)
at org.apache.aries.jpa.container.impl.PersistenceBundleManager.modifiedBundle(PersistenceBundleManager.java:283)
at org.osgi.util.tracker.BundleTracker$Tracked.customizerModified(BundleTracker.java:453)
at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:237)
at org.osgi.util.tracker.BundleTracker$Tracked.bundleChanged(BundleTracker.java:413)
at org.apache.felix.framework.util.EventDispatcher.invokeBundleListenerCallback(EventDispatcher.java:807)
at org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:729)
at org.apache.felix.framework.util.EventDispatcher.fireBundleEvent(EventDispatcher.java:610)
at org.apache.felix.framework.Felix.fireBundleEvent(Felix.java:3761)
at org.apache.felix.framework.Felix.access$600(Felix.java:80)
at org.apache.felix.framework.Felix$FelixResolver.fireResolvedEvents(Felix.java:4299)
at org.apache.felix.framework.Felix$FelixResolver.resolve(Felix.java:4065)
at org.apache.felix.framework.Felix.resolveBundle(Felix.java:3439)
at org.apache.felix.framework.Felix.startBundle(Felix.java:1734)
at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:918)
at org.apache.felix.fileinstall.internal.DirectoryWatcher.startBundle(DirectoryWatcher.java:1232)
at org.apache.felix.fileinstall.internal.DirectoryWatcher.startBundles(DirectoryWatcher.java:1206)
at org.apache.felix.fileinstall.internal.DirectoryWatcher.process(DirectoryWatcher.java:491)
at org.apache.felix.fileinstall.internal.DirectoryWatcher.run(DirectoryWatcher.java:286)
Caused by: java.lang.ClassNotFoundException: org.datanucleus.enhancer.DataNucleusClassFileTransformer not found by org.datanucleus.api.jpa [86]
at org.apache.felix.framework.ModuleImpl.findClassOrResourceByDelegation(ModuleImpl.java:787)
at org.apache.felix.framework.ModuleImpl.access$400(ModuleImpl.java:71)
at org.apache.felix.framework.ModuleImpl$ModuleClassLoader.loadClass(ModuleImpl.java:1768)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:186)
at org.datanucleus.api.jpa.JPAClassTransformer.<init>(JPAClassTransformer.java:41)
... 22 more

I figured out that if I run it on Karaf, api-jpa exposes persistence provider service, may be because karaf is more neater implementation of blueprint container than virgo 3.0.2 (but not sure at this moment).

Now my consumer bundle gets active on karaf with rest of the datanucleus bundles, but, it does not do anything. I was trying to enable the datanucleus log on karaf, but wasn's successfull in doing so by the methods mentioned on the datanucleus web site. I tried using log4j and jdk logger but could not get that to work. Do you have some pointers to guide me on how to enable datanucleus logging on karaf (or osgi environment)?

Vivek Mehrotra added a comment - 26/Apr/12 07:08 PM Andy, Thanks.
I figured out that if I run it on Karaf, api-jpa exposes persistence provider service, may be because karaf is more neater implementation of blueprint container than virgo 3.0.2 (but not sure at this moment).
Now my consumer bundle gets active on karaf with rest of the datanucleus bundles, but, it does not do anything. I was trying to enable the datanucleus log on karaf, but wasn's successfull in doing so by the methods mentioned on the datanucleus web site. I tried using log4j and jdk logger but could not get that to work. Do you have some pointers to guide me on how to enable datanucleus logging on karaf (or osgi environment)?
Thanks

Andy, Further to this, when I try on Karaf I can see persistence provider service on karaf which my consumer now is able to find out. Untill I hit a few issues in MANIFEST.MF in org.datanucleus which after fixing it it moved further. The issues were as follows:

Caused by: org.datanucleus.exceptions.NucleusUserException: Persistence process has been specified to use a ClassLoaderResolver of name "" yet this has not been found by the DataNucleus plugin mechanism. Please check your CLASSPATH and plugin specification.

Trying to figure out why it is not able to find ClassLoaderResolver. Any hint would be helpful.

On the Datanucleus Logging on Karaf. I used log4j method and created a separate appender in org.ops4j.pax.logging.cfg

I can see my consumer bundle exceptions but DataNucleus wouldn't log and this is because of following I get on Karaf:

Vivek Mehrotra added a comment - 27/Apr/12 06:29 PM Andy, Further to this, when I try on Karaf I can see persistence provider service on karaf which my consumer now is able to find out. Untill I hit a few issues in MANIFEST.MF in org.datanucleus which after fixing it it moved further. The issues were as follows:
Caused by: java.lang.NoClassDefFoundError: javax/xml/parsers/ParserConfigurationException
at org.datanucleus.plugin.NonManagedPluginRegistry.registerExtensions(NonManagedPluginRegistry.java:207)
Caused by: java.lang.NoClassDefFoundError: org/w3c/dom/Element
at org.datanucleus.plugin.NonManagedPluginRegistry.registerExtensions(NonManagedPluginRegistry.java:207)
After fixing the above, I hit following on karaf:
Caused by: javax.persistence.PersistenceException: Explicit persistence provider error(s) occurred for "YetAnotherPersistenceUnit" after trying the following discovered implementations: org.datanucleus.api.jpa.PersistenceProviderImpl from provider: org.datanucleus.api.jpa.PersistenceProviderImpl
at javax.persistence.Persistence.createPersistenceException(Persistence.java:242)
Caused by: org.datanucleus.exceptions.NucleusUserException: Persistence process has been specified to use a ClassLoaderResolver of name "" yet this has not been found by the DataNucleus plugin mechanism. Please check your CLASSPATH and plugin specification.
Trying to figure out why it is not able to find ClassLoaderResolver. Any hint would be helpful.
On the Datanucleus Logging on Karaf. I used log4j method and created a separate appender in org.ops4j.pax.logging.cfg
I can see my consumer bundle exceptions but DataNucleus wouldn't log and this is because of following I get on Karaf:
2012-04-27 19:49:54,584 | DEBUG | rint Extender: 3 | ClassLoading | org.datanucleus.util.Log4JLogger 58 | 106 - org.datanucleus - 3.0.0.release | Class "org.eclipse.core.runtime.RegistryFactory" was not found in the CLASSPATH [Class resolver called from org.datanucleus.plugin.PluginRegistryFactory.newInstance (line=91)]
2012-04-27 19:49:54,586 | WARN | rint Extender: 3 | Plugin | org.datanucleus.util.Log4JLogger 96 | 106 - org.datanucleus - 3.0.0.release | Could not find MANIFEST.MF file for plugin file "bundle://106.0:1/plugin.xml" so ignoring it
DataNucleus on karaf is trying to look for eclipse plugin registry and failing as above.
Any thoughts?
-Vivek

Andy, with no help, I progressed little further and now got stuck at following trace:

I am guessing what is happening here, but not sure, yo can comment better. My guess is:

Currently there is no property key with which I can specify orm.xml path the same was as I can do it for persistence.xml using "datanucleus.persistenceXmlFilename". I tried ising "datanucleus.Mapping" but no success.

Since I can not specify orm.xml other than what I can do in persistence.xml using <mapping-file> tag. Every time org.datanucleus refers to mapping file it refers to its own classpath and obviously do not get it. As a result I get the error below.

"org.datanucleus.ObjectManagerImpl@18bca2ea" closed
2012-04-29 20:30:13,021 | ERROR | rint Extender: 3 | BlueprintContainerImpl | container.BlueprintContainerImpl 358 | 10 - org.apache.aries.blueprint - 0.3.1 | Unable to start blueprint container for bundle com.ge.dsp.das.das-consumer-application
org.osgi.service.blueprint.container.ComponentDefinitionException: Unable to intialize bean dbAccess
at org.apache.aries.blueprint.container.BeanRecipe.runBeanProcInit(BeanRecipe.java:638)[10:org.apache.aries.blueprint:0.3.1]
at org.apache.aries.blueprint.container.BeanRecipe.internalCreate(BeanRecipe.java:724)[10:org.apache.aries.blueprint:0.3.1]
at org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:64)[10:org.apache.aries.blueprint:0.3.1]
at org.apache.aries.blueprint.container.BlueprintRepository.createInstances(BlueprintRepository.java:219)[10:org.apache.aries.blueprint:0.3.1]
at org.apache.aries.blueprint.container.BlueprintRepository.createAll(BlueprintRepository.java:147)[10:org.apache.aries.blueprint:0.3.1]
at org.apache.aries.blueprint.container.BlueprintContainerImpl.instantiateEagerComponents(BlueprintContainerImpl.java:640)[10:org.apache.aries.blueprint:0.3.1]
at org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:331)[10:org.apache.aries.blueprint:0.3.1]
at org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:227)[10:org.apache.aries.blueprint:0.3.1]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)[:1.7.0_02]
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)[:1.7.0_02]
at java.util.concurrent.FutureTask.run(FutureTask.java:166)[:1.7.0_02]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:178)[:1.7.0_02]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:292)[:1.7.0_02]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)[:1.7.0_02]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)[:1.7.0_02]
at java.lang.Thread.run(Thread.java:722)[:1.7.0_02]
Caused by: java.lang.IllegalArgumentException: Type ("com.ge.dsp.das.consumer.app.jpa.ToyShop") is not that of an entity but needs to be for this operation
at org.datanucleus.api.jpa.JPAEntityManager.assertEntity(JPAEntityManager.java:1312)
at org.datanucleus.api.jpa.JPAEntityManager.persist(JPAEntityManager.java:521)
at com.ge.dsp.das.consumer.app.jpa.DatabaseAccess.doWork(DatabaseAccess.java:120)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)[:1.7.0_02]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)[:1.7.0_02]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.7.0_02]
at java.lang.reflect.Method.invoke(Method.java:601)[:1.7.0_02]
at org.apache.aries.blueprint.utils.ReflectionUtils.invoke(ReflectionUtils.java:226)[10:org.apache.aries.blueprint:0.3.1]
at org.apache.aries.blueprint.container.BeanRecipe.invoke(BeanRecipe.java:824)[10:org.apache.aries.blueprint:0.3.1]
at org.apache.aries.blueprint.container.BeanRecipe.runBeanProcInit(BeanRecipe.java:636)[10:org.apache.aries.blueprint:0.3.1]
... 15 more
Caused by: org.datanucleus.exceptions.NoPersistenceInformationException: The class "com.ge.dsp.das.consumer.app.jpa.ToyShop" is required to be persistable yet no Meta-Data/Annotations can be found for this class. Please check that the Meta-Data/annotations is defined in a valid file location.
at org.datanucleus.ObjectManagerImpl.assertClassPersistable(ObjectManagerImpl.java:5447)
at org.datanucleus.api.jpa.JPAEntityManager.assertEntity(JPAEntityManager.java:1308)
... 24 more

JIRA is for specific issues with specific well-defined problems, requiring a testcase. It is not for question answering or debugging (this started as something on Virgo seemingly related to it not supporting blueprint, then went to something else, then something else). Please use the forum for that. If you have a specific problem then that represents a JIRA issue and requires a testcase. Thx

Andy Jefferson added a comment - 29/Apr/12 06:59 PM JIRA is for specific issues with specific well-defined problems, requiring a testcase. It is not for question answering or debugging (this started as something on Virgo seemingly related to it not supporting blueprint, then went to something else, then something else). Please use the forum for that. If you have a specific problem then that represents a JIRA issue and requires a testcase. Thx

Well, Thanks. I am able to make it work on plain OSGi (felix) with DataNucleus JPA with some of the issues in manifest.mf fixed by myself. The issue which I fixed is:

- In 3.0.0.release, I get "java.lang.ClassNotFoundException: javax.xml.parsers.ParserConfigurationException not found by org.datanucleus [63]" and ": java.lang.ClassNotFoundException: org.w3c.dom.Element not found by org.datanucleus [63]"

Vivek Mehrotra added a comment - 30/Apr/12 09:33 PM Well, Thanks. I am able to make it work on plain OSGi (felix) with DataNucleus JPA with some of the issues in manifest.mf fixed by myself. The issue which I fixed is:
- In 3.0.0.release, I get "java.lang.ClassNotFoundException: javax.xml.parsers.ParserConfigurationException not found by org.datanucleus [63]" and ": java.lang.ClassNotFoundException: org.w3c.dom.Element not found by org.datanucleus [63]"
-Vivek

Those 2 updates in MANIFEST.MF were added to SVN trunk some time ago (several releases ago), so mustn't be using a recent version. I see no other DataNucleus-specific problem in what was added to this issue. Raise as separate issues with testcases if you did have something (against latest release). Thx

Andy Jefferson added a comment - 19/May/12 01:37 PM Those 2 updates in MANIFEST.MF were added to SVN trunk some time ago (several releases ago), so mustn't be using a recent version. I see no other DataNucleus-specific problem in what was added to this issue. Raise as separate issues with testcases if you did have something (against latest release). Thx