2017-03-05 36 views
-1

是否有正確的方法來設置tomcat數據庫ip,用戶和密碼打開一個連接到數據庫?Tomcat和數據庫引用

我的情況是:我有一些在tomcat上運行的Servlet,並且幾乎所有這些Servlet都打開了一個到mySQL DB的連接並執行查詢。數據庫的IP地址,連接的用戶名和密碼總是相同的,所以我想要的是一個單獨的點來存儲這些信息,讓我可以輕鬆地修改這些信息,例如編輯一個簡單的txt文件或xml文件。

+0

你可以將它綁定到JNDI。 – Kayaman

+0

https://tomcat.apache.org/tomcat-8.0-doc/jndi-datasource-examples-howto.html –

+0

@ z10h22編寫連接到數據庫的代碼。是的,您可以在context.xml中將數據庫配置爲數據庫,例如,http://stackoverflow.com/questions/39724146/scada-lts-no-datasource-specified-error這是JNDI。 – Grzesiek

回答

0

是的,JNDI是解決方案。當被問及這個問題時,我已經閱讀了jndi,但是我有錯,所以我認爲解決方案不是那樣的。經過大量搜索後發現,錯誤是當我爲資源指定'url'時,它需要'mysql:'之後的兩個反斜槓,而不是像許多在線教程所說的那樣。我報告正確的方法來解決,我問的問題:
1)context.xml中已經成爲像

<Context> 
<Resource name="jdbc/DB_NAME" 
auth="Container" 
type="javax.sql.DataSource" 
username="db_user_to_interact_with_db" 
password="password_of_username" 
driverClassName="com.mysql.jdbc.Driver" 
url="jdbc:mysql://db_IP:3306/DB_NAME?useSSL=true" 
maxActive="100" 
maxIdle="3"/> 
</Context> 

2)可以獲取數據庫連接如下

Context initCtx = new InitialContext(); 
Context envCtx = (Context) initCtx.lookup("java:comp/env"); 
// Look up our data source 
DataSource ds = (DataSource)envCtx.lookup("jdbc/DB_NAME"); 
// Allocate and use a connection from the pool 
Connection conn = ds.getConnection();