2011-06-06 30 views
9

pregunta simple ...
Tengo algunos proyectos en Eclipse ambiente
MainApp (Proyecto Enterprise Application), que "incluye"
persistence.xml dónde colocar en el proyecto Eclipse

  1. Controlador Web (Proyecto EJB)
  2. WebModel (Proyecto APP)
  3. WebView (Dynamic web Project)


¿El problema es dónde poner el archivo persistance.xml?

Conseguir excepción: java.lang.IllegalStateException: No se puede recuperar EntityManagerFactory para unitName DataModel

Respuesta

14

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.

8

El archivo persistence.xml está presente normalmente en el directorio del proyecto src/META-INF persistencia (APP). Si el proyecto se creó con Eclipse, generalmente se crea y se coloca allí de forma predeterminada.

Cuestiones relacionadas