2012-11-18 2 views
5

OpenJPA의 경우 persistence.xml에서 사용자 이름과 비밀번호를 지정하지 않고 jta_datasource에서 JNDI 연결을 어떻게 지정합니까? jndi에 대한 persistence.xml 파일에 사용자 이름과 암호가 지정되어 있지 않으면 오류가 발생합니다.OpenJpa 및 JNDI

답변

1

큰 질문; 이것은 OpenJPA 문서에서 다루지 않습니다. "openjpa.ConnectionFactoryName"속성에 대한 특수 "java : comp/env/..."구문을 사용하여 OpenJPA에 JNDI에서 연결 매개 변수를 검색하도록 요청해야합니다. 예를 들어, 당신의 persistence.xml은 다음과 비슷한 모습이 될 것

<?xml version="1.0"?> 
<persistence> 
    <persistence-unit name="openjpa"> 
    <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider> 
    <class>tutorial.Animal</class> 
    <class>tutorial.Dog</class> 
    <class>tutorial.Rabbit</class> 
    <class>tutorial.Snake</class> 
    <properties> 
     <property name="openjpa.ConnectionFactoryName" value="java:comp/env/jdbc/myjndi"/> 
     <property name="openjpa.Log" value="DefaultLevel=WARN, Tool=INFO"/> 
    </properties> 
    </persistence-unit> 
</persistence> 

이 컨테이너에서 "myjndi"라는 JNDI 자원을 요청합니다.

<?xml version='1.0' encoding='UTF-8'?> 
<Context> 
    <Resource name="jdbc/myjndi" 
     auth="Container" 
     scope="Shareable" 
     type="javax.sql.DataSource" 
     maxActive="100" 
     maxIdle="30" 
     maxWait="10000" 
     removeAbandoned="true" 
     username="username" 
     password="password" 
     driverClassName="com.mysql.jdbc.Driver" 
     url="jdbc:mysql://localhost:3306/DBNAME?characterEncoding=UTF-8" 
     /> 
</Context> 

변경 데이터베이스에 필요한 위의 JNDI 매개 변수 : Tomcat을 사용하는 경우 다음과 같은 형태의 context.xml에있을 것입니다.

+0

감사합니다. 불행히도이 문제가 해결되지 않았습니다. ibm websphere에서 openjpa를 사용하고 있습니다. jndiname은 A/B입니다. 는 JDBC 드라이버 또는 데이터 소스 : 내가 얻을 다음과 같은 예외 : 지금 을 사용하고 있습니다 클래스 이름은 ConnectionDriverName 특성에 지정해야합니다. –

+0

ConnectionDriverName 속성을 지정하면 username과 password에 대한 예외가 발생하고 –

1

persistence.xml에서 jta-data-source 요소를 사용해보십시오. 코드를 통해

<jta-data-source>java:comp/env/jdbc/FooBarDataSourceJNDI</jta-data-source> 
0

구성 나를 위해 일한 :

Map<String, String> conf = new HashMap<>(); 
conf.put("javax.persistence.jtaDataSource", "java:comp/env/jdbc/myjndi"); 
return getEntityManagerFactory().createEntityManager(conf); 

내가 아직 적절한 위치에 persistence.xml을 배치하고 있지 않다 생각합니다.

+0

의 철자가 잘못되었습니다. ' ' – andy