Howdy.

The 3.0 persistence spec, section 6.2.1.6, indicates that <jar-file>
elements in the persistence.xml should be relative to the root of the
persistence unit.  However, I've found that it's digging from the root
of the tomcat installation.  I think the PersistenceUnitInfoImpl.java
file is the location of the bug.

For instance, if I put this in my persistence.xml file:

    <jar-file>../../lib/first.jar</jar-file>
    <jar-file>../../lib/second.jar</jar-file>

It looks for the jars in
/Users/alex/dev/apache-tomcat-6.0.14/bin/../../lib/first.jar
and
/Users/alex/dev/apache-tomcat-6.0.14/bin/../../lib/second.jar

Here's a stack trace to illustrate that:

javax.ejb.EJBException: The bean encountered a non-application
exception.; nested exception is:
        <openjpa-1.0.1-r420667:592145 nonfatal general error>
org.apache.openjpa.persistence.PersistenceException:
/Users/alex/dev/apache-tomcat-6.0.14/bin/../../lib/second.jar (No such
file or directory)
        
org.apache.openejb.core.ivm.BaseEjbProxyHandler.convertException(BaseEjbProxyHandler.java:366)
        
org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java:323)
        
org.apache.openejb.util.proxy.Jdk13InvocationHandler.invoke(Jdk13InvocationHandler.java:49)
        $Proxy31.persist(Unknown Source)
        ExampleServlet.doGet(ExampleServlet.java:26)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

Reply via email to