W przypadku OpenJPA, jak mogę określić połączenie JNDI w jta_datasource bez określania nazwy użytkownika i hasła w pliku persistence.xml? Daje mi błąd, gdy w pliku persistence.xml dla jndi nie podano nazwy użytkownika i hasła.OpenJpa i JNDI
Odpowiedz
Świetne pytanie; nie jest to dobrze opisane w dokumentacji OpenJPA. Musisz użyć specjalnej składni "java: comp/env/..." dla właściwości "openjpa.ConnectionFactoryName", aby poprosić OpenJPA o pobranie parametrów połączenia z JNDI. Na przykład, persistence.xml powinien wyglądać mniej więcej tak:
<?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>
ten zażąda zasobu JNDI nazwie „myjndi” z pojemnika. Jeśli używasz Tomcat, to masz context.xml, który wygląda mniej więcej tak:
<?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>
zmienić parametry JNDI powyżej wymaganych dla bazy danych.
Spróbuj użyć elementu jta-data-source
w pliku persistence.xml.
<jta-data-source>java:comp/env/jdbc/FooBarDataSourceJNDI</jta-data-source>
Konfiguracja poprzez kod pracował dla mnie:
Map<String, String> conf = new HashMap<>();
conf.put("javax.persistence.jtaDataSource", "java:comp/env/jdbc/myjndi");
return getEntityManagerFactory().createEntityManager(conf);
myślę, że nie jestem umieszczenie persistence.xml
we właściwym miejscu, a jednak.
został on błędnie wpisany. Teraz to działa: '
- 1. Konfiguracja persistence.xml openJPA
- 2. Kolejność kolumn na OpenJPA
- 3. Jak skonfigurować logowanie SQL OpenJPA?
- 4. Różnica puli połączeń JDBC i JNDI
- 5. Jak i gdzie dodać JNDI dla Hibernacji?
- 6. EJB, JNDI i ENC - scenariusz prawdziwe życie
- 7. Źródło danych JNDI kontenera
- 8. Jaki jest cel JNDI
- 9. JBoss 7: Wyszukiwanie JNDI
- 10. WebSphere: kontekst JNDI Lookup Awaria
- 11. Źródło autodire JNDI na wiosnę
- 12. Jak zrobić ulepszenie OpenJPA z Ant + IntelliJ IDEA
- 13. Używanie VARCHAR lub TEXT jako domyślnego Mapowanie ciągów w OpenJPA
- 14. Czy JNDI OSGI pozwala na współistnienie z wywołania JNDI z kodu spoza OSGI?
- 15. Dostawca usług JNDI dla systemu plików
- 16. Nazwy JNDI - czy potrzebny jest prefiks "jdbc /"?
- 17. Co jest szybsze: JDBC lub JNDI?
- 18. Wyszukiwanie JNDI nie powiodło się (NameNotFoundException)
- 19. Tomcat 6/7 JNDI z wieloma datasources
- 20. Konfigurowanie JNDI źródła danych Oracle w Tomcat
- 21. Rejestrowanie JNDI wiosny przed zainicjowaniem rejestrowania danych
- 22. Jetty 7: konfigurowanie JNDI dla Start.java
- 23. Spring Boot ze źródłem danych JNDI
- 24. Znaczenie wszystkich nazw JNDI w JBoss 7
- 25. Servlet 3.0 Spring Java Config JNDI
- 26. Jak skonfigurować WZP, aby używać JNDI?
- 27. Powiąż źródło danych JNDI w tomcat?
- 28. Korzystanie JNDI źródła danych z wiosennej serii Administrator
- 29. Nazwa zasobu JNDI dołączona z __pm. Wdrażanie kończy się niepowodzeniem.
- 30. Hibernate 4.3 + Tomcat 7 Nie można wyszukać nazwy JNDI
Dzięki Templar. Niestety to nie rozwiązało problemu. Używam openjpa na ibm websphere, moim jndiname jest A/B. Jestem teraz używając Otrzymuję następujący wyjątek: JDBC kierowcy lub DataSource nazwa klasy musi być określona we właściwości ConnectionDriverName. –
, gdy określę właściwość ConnectionDriverName, wówczas zgłoszony zostanie wyjątek dla nazwy użytkownika i hasła –