2011-09-28 2 views
1

다음 구성은 WebLogic에서는 좋지만 OpenEJB에서는 "javax.naming.NameNotFoundException : Name"AppDB를 찾을 수 없습니다 "라는 오류가 발생합니다.OpenEJB는 javax.persistence.jtaDataSource를 사용할 수 없습니다

그리고 javax.persistence.jtaDataSource 속성을 제거하면 작동합니다. 왜 2 개의 중복 된 데이터 소스를 설정해야합니까? 이 Eclipselinks의 버그이기 때문에 다음

<persistence-unit name="app1" transaction-type="JTA"> 
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> 
    <jta-data-source>AppDB</jta-data-source> 

    <properties> 
    <property name="javax.persistence.jtaDataSource" value="AppDB" /> 
    </properties>  
</persistence-unit> 

을 (http://bugs.eclipse.org/246126를 참조)이 다른 팀에 의해 포장 항아리이기 때문에, 나는이 내용을 변경할 수 없습니다하지만 난 여전히 원하는 jndi.properties

java.naming.factory.initial=org.apache.openejb.client.LocalInitialContextFactory 
openejb.validation.output.level=VERBOSE 
openejb.nobanner=false 
jdbc/AppDB = new://Resource?type=DataSource 
jdbc/AppDB.provider = org.eclipse.persistence.jpa.PersistenceProvider 
jdbc/AppDB.JdbcDriver = oracle.jdbc.OracleDriver 
jdbc/AppDB.JdbcUrl = jdbc:oracle:thin:@xx.xx.xx.xx:xxxx:xxxx 
jdbc/AppDB.JtaManaged = false 
jdbc/AppDB.UserName = xxxx 
jdbc/AppDB.Password = xxxx 

입니다 내 OpenEJB에서 그것을 사용하십시오, 어떤 제안? 감사.

답변

2

EclipseLink가 javax.persistence.jtaDataSource 속성을 처리하는 방법에 대해 전혀 알지 못합니다. JNDI 조회 일 것이라고 추측해야하지만, 어떻게 그렇게 할 지에 대한 의문의 여지가 있습니다. 예를 들어, 앞에 java:comp/env/을 붙이면 의미가 크게 변경됩니다.

데이터 소스에 대해 OpenEJB 전역 JNDI 이름을 사용하려면 javax.persistence.jtaDataSource을 재정의하십시오. 따라서 jndi.properties 파일에 다음을 추가하십시오.

app1.javax.persistence.jtaDataSource = openejb:Resource/jdbc/AppDB 

확실하게 알려주세요. 이 속성이 실제로 JPA 공급자에 의해 사용 되더라도 OpenEJB에 추가하는 것이 좋은 기능입니다. 잘못된 JNDI 이름을 수정하는 것이 편리 할 수 ​​있습니다.

'jdbc/AppDB.provider'는 데이터 소스에서 지원하는 속성이 아니라는 로깅 문이 있어야합니다. 그 속성을 삭제하는 것이 가장 좋을 것 같습니다.

+0

jndi.properties에 1 줄만 추가하면됩니다. 감사!!! – Dennys

관련 문제