數據庫連接的數據應該在你的JNDI數據源,如果你使用一個類中的連接池,但從未它會更好。由於您的Web應用程序,請注意,連接池配置在很大程度上取決於Web應用程序服務器。例如,在Tomcat 7 Database Connection Pool configuration和JBoss 7 Database Connection Pool configuration(還有其他步驟可以在GlassFish和其他Web應用程序服務器上配置數據庫連接池,請注意,每個服務器上的這一點不同)中對此進行了很好的說明。
從這兩個例子中,你可以看到,你將有你把連接一個XML文件屬性:數據庫URL,用戶名,密碼,最小和最大池連接尺寸(多少與數據庫的連接將開放)
Tomcat的方式:
<Resource name="jdbc/ProjectX" auth="Container"
type="javax.sql.DataSource" driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/projectx"
username="user" password="password" maxActive="20" maxIdle="10" maxWait="-1"/>
JBoss的方式:
<datasource jndi-name="jdbc/ProjectX" pool-name="MySqlDS">
<connection-url>jdbc:mysql://localhost:3306/projectx</connection-url>
<driver>com.mysql</driver>
<transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation>
<pool>
<min-pool-size>10</min-pool-size>
<max-pool-size>100</max-pool-size>
<prefill>true</prefill>
</pool>
<security>
<user-name>user</user-name>
<password>password</password>
</security>
<statement>
<prepared-statement-cache-size>32</prepared-statement-cache-size>
<share-prepared-statements/>
</statement>
</datasource>
<drivers>
<driver name="com.mysql" module="com.mysql">
<xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
</driver>
</drivers>
最後,如果您配置了數據庫連接池並且它可以正常工作,那麼在代碼中恢復連接所需的所有操作都是調用InitialContext#lookup
以使用其JNDI資源名稱恢復資源。
知道了這一點,配置JNDI資源與名稱爲「jdbc/projectX創建」連接到MySQL數據庫後,您可以用於恢復Connection
像這樣一類:
public class DatabaseConnectivity {
public static Connection getConnection() throws NamingException, SQLException {
InitialContext cxt = new InitialContext();
DataSource ds = (DataSource) cxt.lookup("java:/comp/env/jdbc/ProjectX");
return ds.getConnection();
}
}
順便說一句,我會使用不同的包名稱來知道類的功能組。例如:
src
- edu.home.controller.servlet
+ CoreServlet.java
- edu.home.controller.filter
+ SessionFilter.java
- edu.home.model.entity
+ AnEntity.java
+ AnotherEntity.java
- edu.home.model.database
+ DatabaseConnectivity.java
- edu.home.model.service
+ AnEntityService.java
+ AnotherEntityService.java
(and on and on...)
1)你的包應該是反向鏈接格式,例如'com.techdon'。 2)按照命名約定,您的課程應以大寫字母開頭。 3)這不是一個真正的問題,這個網站是針對具體問題而不是開放式問題。 –
@ bmorris591不是一個開放式問題。 –
@ bmorris591,@ Luiggi我做了必要的修改,希望能從你那裏得到答案...... – Anshul