我正在尝试使用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>
答案 0 :(得分:0)
从all the possible ways of acquiring an EntityManager开始,如果您没有特别的理由手动查找EntityManager,我会更轻松地使用
@PersistenceContext(unitName = "Eclipselink_JPA")
private EntityManager entityManager;
请注意,它引用了name
声明的persistence-unit
属性,而不是jta-data-source
。当然,查找它将返回数据源,而不是实体管理器。