代码之家  ›  专栏  ›  技术社区  ›  Jorge

如何在耳朵之间注射EntityManager

  •  0
  • Jorge  · 技术社区  · 16 年前

    我使用的是JBoss4.2.3,我部署了两个叫做 triad-1.0.ear reportservices-1.0.ear ,问题是我想在projectreportservices中使用projecttriad的实体管理器。JBoss的架构如下:

    triad-1.0.ear:
                 triad-core-1.0.jar:
                                    META-INF:
                                             MANIFEST.MF
                                             components.xml
                                             ejb-jar.xml
                                             jboss.xml 
                                             persistence.xml    
    reportservices-1.0.ear:
                  reportservices-core-1.0.jar:
                                              META-INF:
                                                      MANIFEST.MF
                                                      components.xml
                                                      ejb-jar.xml
                                                      jboss.xml
                                                      persistence.xml
    

    我尝试在persistence.xml中使entitymanager在ear之间成为全局的:

    <?xml version="1.0" encoding="UTF-8"?>
    <!--
         Attention: Generated code! Do not modify by hand!
         Generated by: persistence.xml.vsl in andromda-ejb3-cartridge.
    -->
    <persistence 
        xmlns="http://java.sun.com/xml/ns/persistence"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
                            http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
        version="1.0">
        <persistence-unit name="triad">
            <provider>org.hibernate.ejb.HibernatePersistence</provider>
            <jta-data-source>java:/jdbc/triad</jta-data-source>
            <properties>
                <property name="hibernate.hbm2ddl.auto" value="update"/>
                <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle9Dialect"/>
                <property name="jboss.entity.manager.jndi.name" value="java:/triadFactory"/>
                <property name="jboss.entity.manager.factory.jndi.name" value="java:/triadFactory"/>
            </properties>
        </persistence-unit>
    </persistence>
    
    2 回复  |  直到 16 年前
        1
  •  0
  •   Pascal Thivent    16 年前

    对不起,这个问题在我看来没有多大意义(我甚至不明白你的意思)

    • 在多个持久化单元中使用相同的数据源。
    • 在多个应用程序中(重新)使用一个持久性单元(只要打包使其成为可能)。

        2
  •  0
  •   Jorge    13 年前

    我最后解决了mi注入的问题,您需要在persistence.xml中设置这个属性,并在jboss jmx控制台中检查,在jdni视图的选项中,如果注入是正确的,这里的属性是persistence.xml的一个示例

    <persistence  xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence   http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0">
        <persistence-unit name="example">  
            <provider>org.hibernate.ejb.HibernatePersistence</provider>  
            <jta-data-source>java:/jdbc/example</jta-data-source>  
            <properties>  
                <property name="hibernate.hbm2ddl.auto" value="update"/>  
                <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle9Dialect"/>  
                <property name="jboss.entity.manager.jndi.name" value="java:/example"/>  
                <property name="jboss.entity.manager.factory.jndi.name" value="java:/example"/>  
            </properties>  
        </persistence-unit>  
    </persistence>`
    

    允许注入的属性是“jboss.entity.manager.jndi.name”和“jboss.entity.manager.factory.jndi.name”