2017-11-14 9 views
0

아래 코드를 사용하여 EntityManager를 조회하려고하는데 오류가 발생합니다. 내가 봤지만 그것에서 아무것도 얻을 수 없습니다. 이것은 모든 병 문제로 인한 것입니다. 제게 몇 가지 지침을 알려주십시오.weblogic에서 JPA EntityManager 조회에 대한 클래스 캐스트 예외

weblogic 버전 12.1.3을 사용하고 있습니다.

JNDI 트리에서

-> 내가 "jpaem을"JNDI 이름을 가지고, 또한 내가이 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

수동으로 EntityManager를 조회 할 특별한 이유가없는 경우 all the possible ways of acquiring an EntityManager에서, 나는 그것이의 name 속성을 참조하는 사용자들은 쉽게

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

참고로 가고 싶어 귀하의 persistence-unit 선언이 아니라 jta-data-source입니다. 엔티티 관리자가 아닌 데이터 소스가 반환됩니다.