Как разделить файл Persistence.xml между модулем ejb и веб-модулем в EAR? - PullRequest
2 голосов
/ 08 апреля 2011

У нас есть одно приложение EAR с одним модулем ejb, которое содержит все bean-компоненты enity и несколько сессионных bean-компонентов и pojos.У него есть один файл persistence.xml.Теперь есть другой веб-модуль, который представляет собой приложение Spring mvc и использует бины сущностей в модулях ejb.Теперь, чтобы использовать jpa, мне нужно создать один файл persistence.xml в веб-модуле.Но он дублируется, как у нас уже есть в модуле ejb.Есть ли способ, которым я могу держать только один файл persistence.xml в ухе и будет использоваться как в ejb, так и в веб-модуле.Может кто-нибудь дать мне простую структуру проекта в качестве примера.Просто для знания мы используем maven.

Спасибо

Ответы [ 3 ]

3 голосов
/ 08 апреля 2011


Вы можете поместить ваш файл persistence.xml вместе с вашими классами сущностей в отдельный jar-файл, который вы поместите в папку / lib вашего EAR.

yourEar.ear
    |
    |_ yourEjb.jar
    |
    |_ yourWeb.war
    |
    |_ lib
        |
        |_ yourPersistence.jar
               |
               |_ META-INF/persistence.xml
               |
               |_ yourEntity.class
0 голосов
/ 28 октября 2014

Мне было трудно реализовать это с Maven.Если вы будете использовать Maven для упаковки своего проекта, следующий параметр поместит зависимости модулей shared -ween-ejb-and-web (что-либо из зависимостей ear-pom, определенных как <type>jar</type>) в каталог / lib вашего файла ear:

<plugin>
    <artifactId>maven-ear-plugin</artifactId>
    <configuration>
        <defaultLibBundleDir>lib/</defaultLibBundleDir>
    …
</plugin>
0 голосов
/ 15 апреля 2011

Вот пример моего файла 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" />

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...