Ⅰ 求助:Java數據源怎麼配置
一 首先要配置Tomcat的server.xml文件,在對應的web應用的<Context>中加入<Resource>元素,比如:
<Context path="/Manager" reloadable="true">
<Resource
name="hello"
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
username="root"
password="123456"
maxIdle="4"
maxActive="4"
maxWait="5000"
url="jdbc:mysql://127.0.0.1/jspdev"
/>
</Context>
其中:
name:指定Resource的JNDI名字
type:指定Resource所屬的Java類名
driverClassName:指定連接資料庫的JDBC驅動程序
username:指定連接資料庫的用戶名
password:指定連接資料庫的口令
maxIdle:指定資料庫連接池中的最大空閑連接數目,0表示不受限制
maxActive:指定資料庫連接池中的最大活動連接數目,0表示不受限制
maxWait:指定連接池中連接處於空閑狀態的最長時間,超過會拋出異常,-1表示無限
url:指定連接資料庫的URL
二 在Web應用中使用數據源:
javax.naming.Context提供了查找JNDI Resource的介面,可以通過三個步驟來使用數據源對象:
A.獲得對數據源的引用:
Context ctx = new InitalContext();
DataSource ds =
(DataSource)ctx.lookup("java:comp/env/hello");
B.獲得資料庫連接對象:
Connection con = ds.getConnection();
C.返回資料庫連接到連接池:
con.close();
在連接池中使用close()方法和在非連接池中使用close()方法的區別是:前者僅僅是把資料庫連接對象返回到資料庫連接池中,是連接對象又恢復到空閑狀態,而非關閉資料庫連接,而後者將直接關閉和資料庫的連接。
三 如果通過數據源訪問資料庫,由於數據源由Servlet容器創建並維護,所以必須把JDBC驅動程序拷貝到Tomcat安裝目錄下的common/lib目錄下,確保Servlet容器能夠訪問驅動程序。
Ⅱ javaweb怎麼連接mysql資料庫
用jdbc的方法去連接:
String url = "jdbc:mysql://localhost:3306/javabase";
String username = "java";
String password = "password";
System.out.println("Connecting database...");
try (Connection connection = DriverManager.getConnection(url, username, password)) {
System.out.println("Database connected!");
} catch (SQLException e) {
throw new IllegalStateException("Cannot connect the database!", e);
}
Ⅲ 在java web 開發中 怎麼搭建與資料庫的連接
一般設置 jdbc 或者 資料庫連接池,跟具體的資料庫 關系不大,只是更改方言等具體細節而已
下載個jdbc的包,放到lib路徑裡面
#b2bplatform.dialect=org.hibernate.dialect.MySQLDialect 此處改為sqlserver的方言即可
b2bplatform.show_sql=true
b2bplatform.generateDdl=true
b2bplatform.minPoolSize=1
b2bplatform.maxPoolSize=10
b2bplatform.connection.url=jdbc:mysql://127.0.0.1:3306/b2b?characterEncoding=UTF-8 這個地方要改下埠什麼的
b2bplatform.connection.username=root
b2bplatform.connection.password=123456
b2bplatform.connection.driver_class=com.mysql.jdbc.Driver //這個地方改下驅動名稱
Ⅳ Java web項目中tomcat中配置jndi數據源配置失敗
//localhost/pubs
替換成完整的tns看看
Ⅳ javaweb多數據源問題求解
很久沒用了,ssh的本機線程棧 creteria能localthreadd 里取的。大概就是這樣,要在xml裡面打開一個東西 把它變成全局的,記不清了,你試試吧
Ⅵ JAVA WEB一定要配置數據源嗎
不一定,你也可以直接從資料庫讀取數據,但是配置了一個數據源了,你就不用重復進行打開關閉資料庫的操作,這都是很浪費時間的操作
Ⅶ JAVA EE web。xml配置局部數據源的問題~
你創建的是基於servlet3.0的項目,沒選擇生成web.xml文件吧。servlet3.0支持註解,可以用註解取代web.xml文件,你可以選擇重新新建項目,注意在這里最好選2.5及以下版本,也可以選擇3.0,但要注意在之後選擇生成web.xml.,如果選擇不生成xml就用servlet3.0註解吧。當然你也可以把你之前新建好的servlet3.0的項目改成2.0的,需要手動修改一個配置文件,和添加web.xml,這里不作詳解
Ⅷ Java web點擊按鈕切換數據源
如果要在Javaweb切換數據源,首先你需要新建數據源常量類,此類中的常量是通過spring-db.xml映射對應的,然後配置spring-db.xml,這個是spring鏈接資料庫的配置文件,再進行動態數據源設置,這個類是用來切換數據源,再獲取jdbcTemplate的管理類。最後測試動態數據源,一般會用Junit4做單元測試。
總結:這種切換比較規范和簡單,麻煩的是必須先配置多個數據源,以前是參考網上資料,自己修改的,希望對你有參考作用!
Ⅸ java web中怎麼配置資料庫池
使用proxool資料庫連接池步驟:
在WEB-INF的lib中導入proxool-0.9.0RC3.jar
在WEB-INF中新建一個XML文件,取名為proxool.xml
在proxool.xml中的內容如下:
[html] view plain
<?xml version="1.0" encoding="UTF-8"?>
<!--
the proxool configuration can be embedded within your own application's. Anything outside the "proxool"
tag is ignored.
-->
<something-else-entirely>
<proxool>
<alias>smms</alias> <!--數據源的別名-->
<driver-url>jdbc:mysql://127.0.0.1:3306/smms</driver-url><!--url連接串-->
<driver-class>com.mysql.jdbc.Driver</driver-class><!--驅動類-->
<driver-properties>
<property name="user" value="root" /><!--用戶名-->
<property name="password" value="root" /><!--密碼-->
</driver-properties>
<!--最大連接數(默認 5個),超過了這個連接數,再有請求時,就排在隊列中等候,最大的等待請求數由
maximum-new-connections決定-->
<maximum-connection-count>100</maximum-connection-count>
<!--最小連接數(默認2個)-->
<minimum-connection-count>10</minimum-connection-count>
<!--proxool自動偵察各個連接狀態的時間間隔(毫秒),偵察到空閑的連接就馬上回收,超時的銷毀 默
認30秒-->
<house-keeping-sleep-time>90000</house-keeping-sleep-time>
<!--沒有空閑連接可以分配而在隊列中等候的最大請求數,超過這個請求數的用戶連接就不會被接受-
->
<maximum-new-connections>10</maximum-new-connections>
<!--最少保持的空閑連接數(默認2個)-->
<prototype-count>5</prototype-count>
<!--在使用之前測試-->
<test-before-use>true</test-before-use>
<!--用於保持連接的測試語句 -->
<house-keeping-test-sql>select id from t_sysadmin</house-keeping-test-sql>
</proxool>
</something-else-entirely>
在web.xml中添加以下節點:
[html] view plain
<servlet>
<servlet-name>ServletConfigurator</servlet-name>
<servlet-class>
org.logicalcobwebs.proxool.configuration.ServletConfigurator</servlet-class>
<init-param>
<param-name>xmlFile</param-name>
<param-value>WEB-INF/proxool.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
t;/servlet>
資料庫操作類如下:
[java] view plain
package cn.e.hbcit.smms..database;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.apache.log4j.Logger;
import org.logicalcobwebs.proxool.ProxoolException;
import org.logicalcobwebs.proxool.ProxoolFacade;
import org.logicalcobwebs.proxool.admin.SnapshotIF;
/**
* 資料庫操作類
* @author lw
*
*/
public class DBConn {
private static Connection conn;
private static ResultSet rs;
private static PreparedStatement ps;
private static String driverClass = "org.logicalcobwebs.proxool.ProxoolDriver";//proxool驅動類
//private static String url = "jdbc:mysql://localhost:3306/bbs?user=root&password=123";
private static int activeCount = 0; //活動連接數
protected final Logger log = Logger.getLogger(DBConn.class.getName());
/**
* 獲取資料庫連接
* @return Connection
*/
public Connection getConn() {
try {
Class.forName(driverClass);
conn = DriverManager.getConnection("proxool.smms"); //此處的smms是在proxool.xml中配置的連接池別名
this.showSnapshotInfo(); //查看連接池信息
} catch (Exception e) {
log.error(e.getMessage());
log.debug("資料庫連接錯誤!");
//System.out.println(e.getMessage());
//System.out.println("資料庫連接錯誤!");
}
return conn;
}
/**
* 釋放連接
* freeConnection
* @param conn
*/
public void freeConnection(Connection conn){
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
/**
* 獲取連接池中的連接信息
*/
private void showSnapshotInfo(){
try{
SnapshotIF snapshot = ProxoolFacade.getSnapshot("smms", true);
int curActiveCount=snapshot.getActiveConnectionCount();//獲得活動連接數
int availableCount=snapshot.getAvailableConnectionCount();//獲得可得到的連接數
int maxCount=snapshot.getMaximumConnectionCount() ;//獲得總連接數
if(curActiveCount!=activeCount)//當活動連接數變化時輸出的信息
{
log.debug("活動連接數:"+curActiveCount+"(active);可得到的連接數:"+availableCount+"(available);總連接數:"+maxCount+"(max)");
//System.out.println("活動連接數:"+curActiveCount+"(active);可得到的連接數:"+availableCount+"(available);總連接數:"+maxCount+"(max)");
activeCount=curActiveCount;
}
}catch(ProxoolException e){
e.printStackTrace();
}
}
}
Ⅹ JAVA web 與資料庫的連接到底是怎樣連的啊
JAVA Web開發中與資料庫的連接操作,配置:
1、新建資料庫。
新建登錄角色,在新建資料庫的時候把資料庫的所有權交給你新建的角色。用用戶和密碼控制資料庫。保證資料庫的安全。
2、編寫context.xml文件 Xml文件的目的是封裝用戶和密碼,也是封裝的一種,方便操作。
以下為context.xml文件樣例:
<?xml version="1.0" encoding="utf-8"?>
<Context reloadable = "true">
<Resource
name="jdbc/sampleHS"
type="javax.sql.DataSource"
maxActive="14"
maxIdle="10"
username="hstaoshu"
maxWait="5000"
driverClassName="org.postgresql.Driver"
password="hstaoshu"
url="jdbc:postgresql://localhost:5432/hstaoshu"/>
</Context>
詳細說明:
name="jdbc/sampleHS"裡面的ssampHS是可改名稱,建議根據需要自己命名;
username="hstaoshu"
password="hstaoshu"此兩項為你新建的資料庫登錄角色用戶名和密碼信息,只有匹配 了才能訪問。這里簡單為了表示,把用戶名和密碼弄成了跟資料庫名字一樣。其實這是很不安全的。
url="jdbc:postgresql://localhost:5432/hstaoshu"/>
這是連接資料庫的URl,就像訪問網站的地址一樣。沒有這個是無法訪問資料庫的。localhost:5432表示本地埠。一般不需要改動,如果你在配置資料庫的時候改動過埠,那麼你需要把它改回來。/hstaoshu是你的資料庫名稱。
其他選項請勿擅自改動。
3、編寫DAO類。
DAO類的作用是與數據連接後,對資料庫的一些操作的封裝。封裝的作用。為了更好的數據管理。
DAO是真正如何使用資料庫的關鍵步驟,前兩步只是部署和配置。
private static InitialContext context = null;
private DataSource dataSource = null;
//一般把跟資料庫的連接放在DAO類的構造函數里,只要被實例化,就能和資料庫連接。
public BookDAO() {
try {
if (context == null) {
context = new InitialContext();
}
dataSource = (DataSource) context.lookup("java:comp/env/jdbc/sampleHS");
// 連接資料庫,前面在context.xml文件配置里的URl
} catch (NamingException e2) {
e2.printStackTrace();
}
}
public Connection getConnection() {
Connection conn = null;
try {
conn = dataSource.getConnection();// 獲得數據源的連接對象
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
做完上面的三步操作,開發環境已經完全和資料庫連接OK,可以開始資料庫的操作了。一般來說,對資料庫的操作語句都是提前封裝好的。這樣修改起來會對下面的代碼影響降到最小。
如下:
// ------------------資料庫操作語句代碼封裝------------------
/* 查看所有圖書 */
private static final String SELECT_ALL_SQL = "SELECT * FROM book";
那麼在使用的時候只要直接調用:
pstmt = conn.prepareStatement(SELECT_ALL_SQL);