El JPA 2.0 specification en la sección 8.2 establece los requisitos para el embalaje. Dice
Una unidad de persistencia se define mediante un archivo persistence.xml. El archivo jar o el directorio cuyo directorio META-INF contiene el archivo persistence.xml es denominado la raíz de la unidad de persistencia .
En entornos Java EE, la raíz de una unidad persistencia debe ser uno de los siguiente:
- un archivo EJB-JAR
- el/clases directorio WEB-INF de un archivo WAR [ 80]
- un archivo jAR en el directorio WEB-INF/lib de un archivo WAR
- un archivo jAR en el directorio de la biblioteca EAR
- un archivo jAR de cliente de aplicación
No se requiere que un EJB-JAR o archivo WAR que contiene una unidad de persistencia pueden envasar en un EAR menos que la unidad persistencia contiene persistencia clases además de las contenidas dentro del EJB-JAR o GUERRA. Ver la Sección 8.2.1.6.
Puede leer el resto del capítulo si lo considera necesario. En Eclipse eso significa que debe configurar las dependencias entre sus proyectos para garantizar que los archivos de implementación estén empaquetados adecuadamente. Normalmente lo configura en Proyecto-> Propiedades-> Ruta de compilación en la pestaña Proyectos.
Sin embargo, no estoy seguro de si Eclipse lo empaqueta según sea necesario para la implementación del servidor web. Sé que lo hace en un proyecto EAR.