對於OpenJPA,如何在jta_datasource中指定JNDI連接,而無需在persistence.xml中指定用戶名和密碼?當jndi的persistence.xml文件中沒有指定用戶名和密碼時,它會給我一個錯誤。OpenJpa和JNDI
5
A
回答
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資源。如果您正在使用Tomcat,你將有一個context.xml的,看起來是這樣的:
<?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參數需要爲你的數據庫之上。
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
它被拼寫錯誤。現在這也在工作:'
相關問題
- 1. JNDI和javax.sql.DataSource
- 2. servicemix 4.3.0和jndi
- 3. JNDI modifyAttributes和NameNotFoundError
- 4. Apache Wicket,OpenJPA和Spring/ROO
- 5. OpenJPA中
- 6. OpenJPA @FetchGroup
- 7. Oracle JNDI Tomcat和Spring
- 8. OpenJPA Eager Fetching
- 9. 使用在OpenJPA
- 10. OpenJPA Paging(setMaxResults/setFirstResult)
- 11. OpenJPA + MySQL問題
- 12. OpenJPA的記錄
- 13. OpenJPA的FetchType
- 14. openjpa拋出optimisticklockexception
- 15. JNDI不HornetQ的和Tomcat
- 16. Spring Jndi上下文和PropertyPlaceholderConfigurer
- 17. Jackrabbit OraclePersistenceManager和JNDI數據源
- 18. 沒有JMS和JNDI的HornetQ
- 19. 如何連接OpenJPA,Spring和PostgreSQL?
- 20. openjpa標準生成器和或
- 21. 命名和目錄(JNDI) - 什麼是使用JNDI
- 22. Glassfish EJB 3 OpenJPA 2
- 23. OpenJPA審計功能
- 24. openJPA日期格式
- 25. Java SE上的openJPA
- 26. OpenJPA的Maven原型
- 27. OpenJPA模式配置
- 28. openjpa:多列多列
- 29. openJPA的persistence.xml配置
- 30. Java(和JBoss)JNDI和RMI端口
謝謝聖殿騎士。不幸的是,這並沒有解決問題。我在ibm websphere上使用openjpa,我的jndiname是A/B。我現在使用 <屬性名= 「openjpa.ConnectionFactoryName」 值= 「java的:comp/env的/ A/B」/> 我出現以下情況例外: JDBC驅動程序或數據源類名稱必須在ConnectionDriverName屬性中指定。 –
當我指定ConnectionDriverName屬性時,它會拋出用戶名和密碼異常 –