Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

what is the right path to refer a jar file in jpa persistence.xml in a web app?

persistence.xml looks like this:

<persistence-unit name="testPU" transaction-type="RESOURCE_LOCAL">     <provider>org.hibernate.ejb.HibernatePersistence</provider>     <non-jta-data-source>jdbc/test</non-jta-data-source>     <jar-file>../../lib/app-services-1.0.jar</jar-file>     <exclude-unlisted-classes>false</exclude-unlisted-classes> </persistence-unit> 

It is a web project, so the deployment unit is a war file. The jar file I tried to refer is in WEB-INF/lib/ folder , persistence.xml is in WEB-INF/classes/META-INF folder. When being deployed, it simply tells me

"WARNING: Unable to find file (ignored): file:.../../lib/app-services-1.0.jar".

I also tried every possible path I could think of, i.e. ../lib/app-services-1.0.jar, lib/app-services-1.0.jar.

What is the right path to do this?

like image 678
Bobo Avatar asked Dec 13 '10 20:12

Bobo


People also ask

Where should I put persistence xml?

xml should be put in the EJB JAR's META-INF directory. If you package the persistence unit as a set of classes in a WAR file, persistence. xml should be located in the WAR file's WEB-INF/classes/META-INF directory.

In which location of Java project does persistence xml should be present in order to read all database configuration?

Programmers can achieve persistence in their application by introducing the persistence. xml in their code, which has to be located in the META-INF directory in the project classpath.

Which are the following properties are configured in persistence xml in JPA?

The properties element allows you to define JPA or JPA provider-specific properties to configure: the Hibernate Dialect. the JTA transaction platform (e.g., GlassFish, JBoss, Bitronix, Atomikos) whether the database schema should be auto-generated.

Which elements belong to persistence unit in persistence xml?

xml file. This file defines a persistence unit named OrderManagement, which uses a JTA-aware data source jdbc/MyOrderDB. The jar-file and class elements specify managed persistence classes: entity classes, embeddable classes, and mapped superclasses.


Video Answer


1 Answers

Taking a look at jsr always works!

8.2.1.6.3 Jar Files

One or more JAR files may be specified using the jar-file elements instead of, or in addition to the mapping files specified in the mapping-file elements. If specified, these JAR files will >be searched for managed persistence classes, and any mapping metadata annotations found on them will be pro-cessed, or they will be mapped using the mapping annotation defaults defined by this specification. Such JAR files are specified relative to the directory or jar file that contains the root of the persis-tence unit.

The following examples illustrate the use of the jar-file element to reference additional persistence classes. These examples use the convention that a jar file with a name terminating in “PUnit” contains the persistence.xml file and that a jar file with a name terminating in “Entities” contains additional persistence classes.

Example 1: app.ear      lib/earEntities.jar      earRootPUnit.jar (with META-INF/persistence.xml )   persistence.xml contains:      <jar-file>lib/earEntities.jar</jar-file>    Example 2: app.ear    lib/earEntities.jar    lib/earLibPUnit.jar (with META-INF/persistence.xml ) persistence.xml contains:    <jar-file>earEntities.jar</jar-file>  Example 3: app.ear    lib/earEntities.jar    ejbjar.jar (with META-INF/persistence.xml ) persistence.xml contains:    <jar-file>lib/earEntities.jar</jar-file>  Example 4: app.ear     war1.war        WEB-INF/lib/warEntities.jar        WEB-INF/lib/warPUnit.jar (with META-INF/persistence.xml ) persistence.xml contains:     <jar-file>warEntities.jar</jar-file>  Example 5: app.ear    war2.war       WEB-INF/lib/warEntities.jar       WEB-INF/classes/META-INF/persistence.xml persistence.xml contains:    <jar-file>lib/warEntities.jar</jar-file>  Example 6: app.ear     lib/earEntities.jar     war2.war     WEB-INF/classes/META-INF/persistence.xml  persistence.xml contains:     <jar-file>../../lib/earEntities.jar</jar-file>  Example 7: app.ear    lib/earEntities.jar    war1.war    WEB-INF/lib/warPUnit.jar (with META-INF/persistence.xml ) persistence.xml contains:    <jar-file>../../../lib/earEntities.jar</jar-file> 

As you see there is no example for war files, all war files in the examples above are inside ear files!
But I tested in war files and it works just when I specify the absolute path of jar files and it is not a good approach for production environment!

like image 185
Mehdi Avatar answered Oct 11 '22 08:10

Mehdi