在weblogic

时间:2017-11-14 10:36:53

标签: jpa ejb weblogic

我正在尝试使用MDB中的以下代码查找EntityManager,但是我遇到了错误。我用谷歌搜索了它,但我无法从中得到任何东西。 这是由于任何罐子问题,请指导我一些指示。

我使用的是weblogic版本12.1.3。

在JNDI树中 - >我有JNDI的名字" jpaem",我也注意到了,对于这个JNDI - 它显示了类: weblogic.jdbc.common.internal.RmiDataSource_12130_WLStub

Exception in thread "main" java.lang.ClassCastException: weblogic.jdbc.common.internal.RmiDataSource_12130_WLStub cannot be cast to javax.persistence.EntityManager
    at JNDITest.main(JNDITest.java:33)

EntityManager entityManager = (EntityManager) context.lookup("jpaem");

My persistance.xml    

<?xml version="1.0" encoding="UTF-8"?>
    <persistence version="2.1"
        xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
        <persistence-unit name="Eclipselink_JPA" transaction-type="JTA">
            <jta-data-source>jpaem</jta-data-source>
            <class>jpa.Faxerror</class>
            <properties>
                <property name="eclipselink.target-database" value="Oracle" />
                <property name="eclipselink.target-server" value="WebLogic" />
    <property name="javax.persistence.jtaDataSource" value="jpaem"/>
            </properties>
        </persistence-unit>
    </persistence>

1 个答案:

答案 0 :(得分:0)

all the possible ways of acquiring an EntityManager开始,如果您没有特别的理由手动查找EntityManager,我会更轻松地使用

@PersistenceContext(unitName = "Eclipselink_JPA")
private EntityManager entityManager;

请注意,它引用了name声明的persistence-unit属性,而不是jta-data-source。当然,查找它将返回数据源,而不是实体管理器。