我们有一个EAR应用程序,其中包含一个ejb模块,其中包含所有enity bean以及很少的会话bean和pojos。它有一个persistence.xml。现在还有其他的web模块是spring mvc app,它在ejb模块中使用实体bean。现在使用jpa我也必须在web模块中创建一个persistence.xml。但它与我们在ejb模块中已有的重复。有什么方法可以只保留一个persistence.xml,并将在ejb和web模块中使用。有人可以给我一个简单的项目结构作为例子。只是为了知识,我们正在使用maven。
由于
答案 0 :(得分:3)
您可以将persistence.xml与实体类一起放入一个单独的jar中,该jar放在EAR的/ lib文件夹中。
yourEar.ear
|
|_ yourEjb.jar
|
|_ yourWeb.war
|
|_ lib
|
|_ yourPersistence.jar
|
|_ META-INF/persistence.xml
|
|_ yourEntity.class
答案 1 :(得分:0)
以下是我的persistence.xml和applicationContext.xml的示例 http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd” 版本= “1.0” >
<persistence-unit name="acme" transaction-type="JTA">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>java:/acmeDS</jta-data-source>
<properties>
<property name="hibernate.hbm2ddl.auto" value="none" />
<property name="hibernate.show_sql" value="true" />
<property name="jboss.entity.manager.factory.jndi.name" value="persistence-units/acmeManager"/>
<property name="jboss.entity.manager.jndi.name" value="persistence-units/acme"/>
</properties>
</persistence-unit>
和Spring context.xml
<jee:jndi-lookup id="entityManagerFactory" jndi-name="persistence-units/acme" />
<bean
class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />
答案 2 :(得分:0)
我很难用Maven实现这个。如果您将使用Maven打包您的项目,则以下设置将共享ejb和Web模块之间的依赖关系(耳朵中的任何内容的依赖关系定义为<type>jar</type>
)在您的ear文件的/ lib目录中:
<plugin>
<artifactId>maven-ear-plugin</artifactId>
<configuration>
<defaultLibBundleDir>lib/</defaultLibBundleDir>
…
</plugin>