OpenJPA için, persistence.xml dosyasında kullanıcı adı ve parola belirtmeden jta_datasource'ta JNDI bağlantısını nasıl belirleyebilirim? Jndi için persistence.xml dosyasında kullanıcı adı ve parola belirtilmemişse bana bir hata verir.OpenJpa ve JNDI
cevap
Harika soru; Bu OpenJPA dokümantasyonunda iyi bir şekilde ele alınmamıştır. Yapmanız gereken, OpenJPA'nın JNDI bağlantı parametrelerini almasını istemek için "openjpa.ConnectionFactoryName" özelliği için özel "java: comp/env/..." sözdizimini kullanmaktır. Örneğin, persistence.xml bu gibi görünmelidir:
<?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>
Bu kaptan "myjndi" adlı bir jndi kaynak ister.
<?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>
Değiştir veritabanı için gerekli olan yukarıdaki Jndi parametreleri: Tomcat'i kullanıyorsanız, size şuna benzer bir context.xml olurdu.
persistence.xml sayfanızda jta-data-source
öğesini kullanmayı deneyin. kodu üzerinden
<jta-data-source>java:comp/env/jdbc/FooBarDataSourceJNDI</jta-data-source>
Yapılandırma benim için çalıştı:
Map<String, String> conf = new HashMap<>();
conf.put("javax.persistence.jtaDataSource", "java:comp/env/jdbc/myjndi");
return getEntityManagerFactory().createEntityManager(conf);
ben henüz doğru konumda persistence.xml
yerleştirerek değilim düşünüyorum.
için istisna atar, yanlış yazılmış. Şimdi bu da çalışıyor:
- 1. jndi
- 2. openJPA toplu güncelleştirme modeli
- 3. openJPA on Java SE
- 4. jera ve eclipselink ile jndi veritabanı bağlantısı
- 5. Glassfish 4: JNDI
- 6. EJB yapılandırmasıyla Java JNDI
- 7. autowire Jndi Kaynak Bahar
- 8. MongoDb via jndi
- 9. JBoss 7: JNDI araması
- 10. JNDI Dosya sistemi hizmet sağlayıcısı
- 11. JNDI Yok EJB alıcısı kullanabiliyor
- 12. JNDI adı bulunamadı WildFly 10
- 13. JNDI Active Directory ile PartialResultException
- 14. Yay Çerçevesinde İstisna Yönetimi JNDI
- 15. Hazırda bekletme için JNDI nasıl ve nerede eklenir?
- 16. Veritabanları ve JNDI ile ilgili bir validationQuery nedir?
- 17. OpenJPA Ebeveyn silme işlemi sırasında çocuğun silinmesi için yanlış ayar
- 18. Spring & JNDI: kaynak platformunu bağımsız olarak bulun
- 19. GWT + Maven + Tomcat + JNDI + Eclipse yapılandırması
- 20. JNDI aracılığıyla LDAP şifresi nasıl değiştirilir
- 21. Servlet 3.0 Spring Java Yapılandırması JNDI
- 22. JNDI araması bu JMS örneğinde nasıl çalışır?
- 23. İlkbahar için bir JNDI DataSource'ı programlı olarak oluşturma
- 24. Weblogic 10 üzerinde JNDI öğesine özel nesne ekleme
- 25. bahar JNDI günlüğe kaydedilmeden önce günlüğe kaydetme başlatıldı
- 26. Tüm JNDI girişlerini "java: global" ad alanında listeleme
- 27. Spring boot JNDI veri kaynağı hatası - Name comp/env/jdbc bağlamda bulunamadı "java:"
- 28. nasıl bu beni delirtiyor Ant + IntelliJ IDEA
- 29. VisualVM ve SSH kullanarak bir Tomcat 7 sunucusunun uzaktan izlenmesi
- 30. Yürütme yapılandırması VM arguments
Teşekkürler Templar. Ne yazık ki bu problemi çözmedi. IBM web sitesinde openjpa kullanıyorum, jndiname A/B. Bir JDBC sürücüsü veya DataSource: alıyorum şu istisna: "comp/env/A/B java" özellik adı = "openjpa.ConnectionFactoryName" value => Şimdi kullanıyorum sınıf adı, ConnectionDriverName özelliğinde belirtilmelidir. –
ConnectionDriverName özelliğini belirttiğimde, kullanıcı adı ve parola –