Hello again,
I'm not familiar with the class resolver plugin but I did the following:
- I created a resolver (code is at the end of the mail)
- I configured my persistence.xml to use that resolver (persistence.xml at
the end of the mail)
The above does not throw any exceptions on startup. On the other hand, I'm
not sure whether it's used. I added a System.out logging in
the getClassLoader() method but the output never shows up in runtime but it
does seem to show up during build time when I run the PCEnhancer ant task.
I then tried to move my resolver into a package that I do not export (in
OSGi). I thought that even if the getClassLoader() method wasn't called,
OpenJPA might still want to find the class and then fail. But I still get no
errors regarding the class resolver in runtime (under OSGi). Note that at
this point I'm not really using OpenJPA in the container, I'm just loading
and initalising it.
Not sure if this proves your point Pinaki - you be the judge.
/Bengt
*MyClassResolver.java*
> *package se.digia.maia.resolver;
> import org.apache.openjpa.util.ClassResolver;
> public class MyClassResolver implements ClassResolver {
> @Override
> public ClassLoader getClassLoader(Class<?> theArg0, ClassLoader theArg1)
> {
> System.out.println("***Calling MyClassResolver***");
> return null;
> }
> }*
*persistence.xml*
> *<?xml version="1.0" encoding="UTF-8"?>
> <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="maiaPU" transaction-type="JTA">
>
> <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
> <jta-data-source>osgi:service/javax.sql.DataSource/(
> osgi.jndi.service.name=jdbc/maiajta)</jta-data-source>
> <class>se.digia.maia.common.persistence.EntityBase</class>
> <class>se.digia.maia.common.security.domain.User</class>
> <class>se.digia.maia.common.auditlog.domain.AuditLogEntry</class>
> <class>se.digia.maia.core.bu.domain.BusinessUnit</class>
> <exclude-unlisted-classes>true</exclude-unlisted-classes>
> <validation-mode>NONE</validation-mode>
> <properties>
> <property name="openjpa.ClassResolver"
> value="se.digia.maia.resolver.MyClassResolver" />
> <property name="openjpa.ConnectionFactoryMode" value="managed" />
> <property name="openjpa.jdbc.SynchronizeMappings"
> value="buildSchema(ForeignKeys=true)" />
> <property name="openjpa.jdbc.DBDictionary"
> value="org.apache.openjpa.jdbc.sql.MySQLDictionary" />
> <property name="openjpa.jdbc.UpdateManager" value="operation-order"
> />
> <property name="openjpa.Log" value="DefaultLevel=WARN, Tool=INFO" />
> <!-- <property name="openjpa.Auditor"
> value="se.digia.maia.common.auditlog.impl.MaiaAuditor" />-->
> <!-- <property name="openjpa.InitializeEagerly" value="true" />-->
> <!--property name="openjpa.Auditor" value="default"/-->
> </properties>
> </persistence-unit>
> </persistence>*
2011/9/7 Pinaki Poddar <[email protected]>
> The auditor is plugged-in in an unusual way than other plug-ins. So that
> might be causing this failure. But please do the following:
> 1. Configure any other OpenJPA plugin that takes a fully-qualified class
> name as property value e.g. [1]
> 2. Supply a org.acme.Foo class for it and package exactly the way you have
> packaged the Auditor implementation class.
> 3. Verify if the plugged-in class is loaded
>
> We will know whether it is a generic failure with loading plug-in in OSGi
> environment or specific to Auditor.
>
> [1]
>
> http://openjpa.apache.org/builds/latest/docs/manual/manual.html#openjpa.ClassResolver
>
> -----
> Pinaki Poddar
> Chair, Apache OpenJPA Project
> --
> View this message in context:
> http://openjpa.208410.n2.nabble.com/Auditor-and-OSGi-tp6759170p6769605.html
> Sent from the OpenJPA Users mailing list archive at Nabble.com.
>