2010-11-28 14 views
12

Estoy tratando de configurar y proyectar varios módulos con Spring/JPA. Aquí está el diseño general. Tengo un módulo raíz con 5 módulos para niños.DDD, JPA y Multi-Module Maven

 
backoffice (root maven module) 
| 
-(maven module)-----core (this is where persistence.xml and entityManager stuff resides). 
| 
-(maven module)-----employee (employee related entities, controllers, etc.) 
| 
-(maven module)-----vendor (vendor related entities, controllers, etc.) 
| 
-(maven module)-----customer (customer related entities, controllers, etc.) 
| 
-(maven module)-----web (contains all the web stuff). 

tengo toda la materia de la APP en núcleo/src/main/recursos/META-INF (persistence.xml, primavera-contexto w/EntityManagerFactory, dataSource, etc.). La idea es que quiero compartir el material de persistencia en todos los submódulos (empleado, proveedor y cliente).

El problema es que cuando se inicia la aplicación web, no puede encontrar EntityMangerFactory. Si configuro las cosas de JPA en cada submódulo (empleado, proveedor y cliente), entonces funciona.

¿Cómo configuro todas las cosas relacionadas con la persistencia en el núcleo y luego las comparto en los otros módulos?

Gracias de antemano.

+1

¿Ha agregado una dependencia al núcleo de los módulos de empleado, proveedor y cliente? Honestamente no estoy seguro de que los haría como módulos separados, incluso – willcodejavaforfood

+0

Bueno, olvidé agregar el archivo de contexto desde el núcleo a mi web.xml. Ahora que lo he hecho, la aplicación web se inicia, pero no puede encontrar las entidades en los otros módulos. – user523078

+0

¿Qué quiere decir con: "pero no puede encontrar las entidades en los otros módulos"? – Ralph

Respuesta

3

Bueno, aquí está la solución que terminé usando por si alguien está interesado.

http://labs.bsb.com/2010/11/configuring-modular-jpa-applications-with-spring/

Algunos de los que respondieron preguntó por qué iba a querer configurar el proyecto de esta manera en el primer lugar. Bueno, la razón es la modularidad. Quiero todo en unidades pequeñas comprobables y desplegables. En última instancia, tejeremos OSGI en la mezcla para que el cliente pueda elegir qué módulos quiere instalar. Cada módulo debe tener la capacidad de ejecutarse por sí mismo.

-3

Si las entidades y controladores de empleados, proveedores y clientes están tan lógicamente separados que los necesitan en módulos separados, entonces diría que claramente deberían tener su propio entityManager.

Si quiere tener una sola aplicación web y un solo administrador de entidades, ¿por qué quiere tener módulos separados para cada porción de entidades? Simplemente incluya empleados, proveedores y clientes en el núcleo, con el administrador de la entidad, y listo.

O, dar a cada uno su propio EntityManager, (y probablemente cada uno su propia aplicación web)

+0

esto no responde la pregunta en absoluto, no es lo que se espera en SO. No cuestione el motivo de la pregunta si no conoce el anser. – Panthro