JAVA的容器---List,Map,Set
Collection
├List
│├LinkedList
│├ArrayList
│└Vector
│ └Stack
└Set
Map
├Hashtable
├HashMap
└WeakHashMap
Collection接口
Collection是最基本的集合接口,一個(gè)Collection代表一組Object,即Collection的元素(Elements)。一些 Collection允許相同的元素而另一些不行。一些能排序而另一些不行。Java SDK不提供直接繼承自Collection的類,Java SDK提供的類都是繼承自Collection的“子接口”如List和Set。
所有實(shí)現(xiàn)Collection接口的類都必須提供兩個(gè)標(biāo)準(zhǔn)的構(gòu)造函數(shù):無(wú)參數(shù)的構(gòu)造函數(shù)用于創(chuàng)建一個(gè)空的Collection,有一個(gè) Collection參數(shù)的構(gòu)造函數(shù)用于創(chuàng)建一個(gè)新的Collection,這個(gè)新的Collection與傳入的Collection有相同的元素。后一個(gè)構(gòu)造函數(shù)允許用戶復(fù)制一個(gè)Collection。
如何遍歷Collection中的每一個(gè)元素?不論Collection的實(shí)際類型如何,它都支持一個(gè)iterator()的方法,該方法返回一個(gè)迭代子,使用該迭代子即可逐一訪問(wèn)Collection中每一個(gè)元素。典型的用法如下:
Iterator it = collection.iterator(); // 獲得一個(gè)迭代子
while(it.hasNext()) {
Object obj = it.next(); // 得到下一個(gè)元素
}
由Collection接口派生的兩個(gè)接口是List和Set。
List接口
List是有序的Collection,使用此接口能夠精確的控制每個(gè)元素插入的位置。用戶能夠使用索引(元素在List中的位置,類似于數(shù)組下標(biāo))來(lái)訪問(wèn)List中的元素,這類似于Java的數(shù)組。
和下面要提到的Set不同,List允許有相同的元素。
除了具有Collection接口必備的iterator()方法外,List還提供一個(gè)listIterator()方法,返回一個(gè) ListIterator接口,和標(biāo)準(zhǔn)的Iterator接口相比,ListIterator多了一些add()之類的方法,允許添加,刪除,設(shè)定元素,還能向前或向后遍歷。
實(shí)現(xiàn)List接口的常用類有LinkedList,ArrayList,Vector和Stack。
LinkedList類
LinkedList實(shí)現(xiàn)了List接口,允許null元素。此外LinkedList提供額外的get,remove,insert方法在 LinkedList的首部或尾部。這些操作使LinkedList可被用作堆棧(stack),隊(duì)列(queue)或雙向隊(duì)列(deque)。
注意LinkedList沒(méi)有同步方法。如果多個(gè)線程同時(shí)訪問(wèn)一個(gè)List,則必須自己實(shí)現(xiàn)訪問(wèn)同步。一種解決方法是在創(chuàng)建List時(shí)構(gòu)造一個(gè)同步的List:
List list = Collections.synchronizedList(new LinkedList(...));
ArrayList類
ArrayList實(shí)現(xiàn)了可變大小的數(shù)組。它允許所有元素,包括null。ArrayList沒(méi)有同步。
size,isEmpty,get,set方法運(yùn)行時(shí)間為常數(shù)。但是add方法開(kāi)銷為分?jǐn)偟某?shù),添加n個(gè)元素需要O(n)的時(shí)間。其他的方法運(yùn)行時(shí)間為線性。
每個(gè)ArrayList實(shí)例都有一個(gè)容量(Capacity),即用于存儲(chǔ)元素的數(shù)組的大小。這個(gè)容量可隨著不斷添加新元素而自動(dòng)增加,但是增長(zhǎng)算法并沒(méi)有定義。當(dāng)需要插入大量元素時(shí),在插入前可以調(diào)用ensureCapacity方法來(lái)增加ArrayList的容量以提高插入效率。
和LinkedList一樣,ArrayList也是非同步的(unsynchronized)。
Vector類
Vector非常類似ArrayList,但是Vector是同步的。由Vector創(chuàng)建的Iterator,雖然和ArrayList創(chuàng)建的 Iterator是同一接口,但是,因?yàn)?span lang="EN-US">Vector是同步的,當(dāng)一個(gè)Iterator被創(chuàng)建而且正在被使用,另一個(gè)線程改變了Vector的狀態(tài)(例如,添加或刪除了一些元素),這時(shí)調(diào)用Iterator的方法時(shí)將拋出ConcurrentModificationException,因此必須捕獲該異常。
Stack 類
Stack繼承自Vector,實(shí)現(xiàn)一個(gè)后進(jìn)先出的堆棧。Stack提供5個(gè)額外的方法使得Vector得以被當(dāng)作堆棧使用。基本的push和pop 方法,還有peek方法得到棧頂?shù)脑兀?span lang="EN-US">empty方法測(cè)試堆棧是否為空,search方法檢測(cè)一個(gè)元素在堆棧中的位置。Stack剛創(chuàng)建后是空棧。
Set接口
Set是一種不包含重復(fù)的元素的Collection,即任意的兩個(gè)元素e1和e2都有e1.equals(e2)=false,Set最多有一個(gè)null元素。
很明顯,Set的構(gòu)造函數(shù)有一個(gè)約束條件,傳入的Collection參數(shù)不能包含重復(fù)的元素。
請(qǐng)注意:必須小心操作可變對(duì)象(Mutable Object)。如果一個(gè)Set中的可變?cè)馗淖兞俗陨頎顟B(tài)導(dǎo)致Object.equals(Object)=true將導(dǎo)致一些問(wèn)題。
Map接口
請(qǐng)注意,Map沒(méi)有繼承Collection接口,Map提供key到value的映射。一個(gè)Map中不能包含相同的key,每個(gè)key只能映射一個(gè) value。Map接口提供3種集合的視圖,Map的內(nèi)容可以被當(dāng)作一組key集合,一組value集合,或者一組key-value映射。
Hashtable類
Hashtable繼承Map接口,實(shí)現(xiàn)一個(gè)key-value映射的哈希表。任何非空(non-null)的對(duì)象都可作為key或者value。
添加數(shù)據(jù)使用put(key, value),取出數(shù)據(jù)使用get(key),這兩個(gè)基本操作的時(shí)間開(kāi)銷為常數(shù)。
Hashtable通過(guò)initial capacity和load factor兩個(gè)參數(shù)調(diào)整性能。通常缺省的load factor 0.75較好地實(shí)現(xiàn)了時(shí)間和空間的均衡。增大load factor可以節(jié)省空間但相應(yīng)的查找時(shí)間將增大,這會(huì)影響像get和put這樣的操作。
使用Hashtable的簡(jiǎn)單示例如下,將1,2,3放到Hashtable中,他們的key分別是”one”,”two”,”three”:
Hashtable numbers = new Hashtable();
numbers.put(“one”, new Integer(1));
numbers.put(“two”, new Integer(2));
numbers.put(“three”, new Integer(3));
要取出一個(gè)數(shù),比如2,用相應(yīng)的key:
Integer n = (Integer)numbers.get(“two”);
System.out.println(“two = ” + n);
由于作為key的對(duì)象將通過(guò)計(jì)算其散列函數(shù)來(lái)確定與之對(duì)應(yīng)的value的位置,因此任何作為key的對(duì)象都必須實(shí)現(xiàn)hashCode和equals方法。hashCode和equals方法繼承自根類Object,如果你用自定義的類當(dāng)作key的話,要相當(dāng)小心,按照散列函數(shù)的定義,如果兩個(gè)對(duì)象相同,即obj1.equals(obj2)=true,則它們的hashCode必須相同,但如果兩個(gè)對(duì)象不同,則它們的hashCode不一定不同,如果兩個(gè)不同對(duì)象的hashCode相同,這種現(xiàn)象稱為沖突,沖突會(huì)導(dǎo)致操作哈希表的時(shí)間開(kāi)銷增大,所以盡量定義好的hashCode()方法,能加快哈希表的操作。
如果相同的對(duì)象有不同的hashCode,對(duì)哈希表的操作會(huì)出現(xiàn)意想不到的結(jié)果(期待的get方法返回null),要避免這種問(wèn)題,只需要牢記一條:要同時(shí)復(fù)寫equals方法和hashCode方法,而不要只寫其中一個(gè)。
Hashtable是同步的。
HashMap類
HashMap和Hashtable類似,不同之處在于HashMap是非同步的,并且允許null,即null value和null key。,但是將HashMap視為Collection時(shí)(values()方法可返回Collection),其迭代子操作時(shí)間開(kāi)銷和HashMap 的容量成比例。因此,如果迭代操作的性能相當(dāng)重要的話,不要將HashMap的初始化容量設(shè)得過(guò)高,或者load factor過(guò)低。
WeakHashMap類
WeakHashMap是一種改進(jìn)的HashMap,它對(duì)key實(shí)行“弱引用”,如果一個(gè)key不再被外部所引用,那么該key可以被GC回收。
總結(jié)
如果涉及到堆棧,隊(duì)列等操作,應(yīng)該考慮用List,對(duì)于需要快速插入,刪除元素,應(yīng)該使用LinkedList,如果需要快速隨機(jī)訪問(wèn)元素,應(yīng)該使用ArrayList。
如果程序在單線程環(huán)境中,或者訪問(wèn)僅僅在一個(gè)線程中進(jìn)行,考慮非同步的類,其效率較高,如果多個(gè)線程可能同時(shí)操作一個(gè)類,應(yīng)該使用同步的類。
要特別注意對(duì)哈希表的操作,作為key的對(duì)象要正確復(fù)寫equals和hashCode方法。
盡量返回接口而非實(shí)際的類型,如返回List而非ArrayList,這樣如果以后需要將ArrayList換成LinkedList時(shí),客戶端代碼不用改變。這就是針對(duì)抽象編程。
http://taoliyi.maifou.net/
http://www.kulego.com/shopex/
http://club.joyes.com/assort-2.html
摘要: 讀書筆記——《Ant – The Definitive Guide,2nd Edition》
????
選擇自 hopson 的 Blog
關(guān)鍵字
...
閱讀全文
???作者:江南白衣
?? 這篇文檔是專門寫給那些編程狂熱者,在Ant里編程時(shí)要留意的重要Task。
??? 不知為何,老外的各種腳本都寫得格外漂亮。從Appfuse里學(xué)到很多,在編寫SpringSide2.0
的構(gòu)件安裝腳本時(shí)又被迫自學(xué)了不少,這里作下總結(jié)。
??? 如果只說(shuō)一樣最重要的事情,就是ant-contrib
的<if> 和 <for>節(jié)點(diǎn),使Ant 擁有了完整的編程能力。
1. 變量
?? Ant里的變量有個(gè)詭異的特性----一旦被賦值就不會(huì)改變,這個(gè)特性有時(shí)候幫助很大,有時(shí)候讓人很苦惱,一定要注意。另一樣要注意的是,Ant里的變量和其他語(yǔ)言的變量一樣,有可效范圍。
?? 1.由命令行賦值
????? ant build.xml -Dtomcat.home=foo
?? 2.與用戶交互輸入--Input task
????? <input message="請(qǐng)選擇一個(gè)Target "
?????????????? validargs="compile,jar,test"
?????????????? addproperty="my.input"/>
?3.從propertis文件讀取并存盤 --
propertyfile task
????
????? <propertyfile file="my.properties">
??????????????<entry key="springside.home" default="."/>
??????</propertyfile>
????? 如果my.properties 不存在,生成my.properties文件,springside.home=.。有一個(gè)特別有用的地方:有些properties文件的屬性每個(gè)開(kāi)發(fā)者都不同,不想放入svn,但又想初始化數(shù)值,可以用該命令。
???? <propertyfile file="my.properties">
??????????????<entry key="springside.home" value="....."/>
??????</propertyfile>
????? 重新寫入配置文件。
2. 流程控制
???? 如果沒(méi)有ant-contrib 貢獻(xiàn)的<if> 和<for>節(jié)點(diǎn),Ant的可編程性是極低極低的。
?2.1 if task
?ant原來(lái)可以在target級(jí)進(jìn)行if判斷(unless,if 屬性),但實(shí)在太不方便了。
2.2 Conditions
但Ant預(yù)先封裝的一堆condition很是很方便的。這些condition完全從實(shí)際出發(fā),包括文件是否存在,http://localhost:8080
是否連通都可以作為條件,見(jiàn)Ant的參考手冊(cè)
。
2.3 For task
支持"a,b,c,d" 字符串?dāng)?shù)組的循環(huán)與文件目錄,F(xiàn)ileset的循環(huán)。
2.4 Parallel task
Parallel非常有用,比如我想一邊開(kāi)tomcat,一邊做別的,就需要使用它,否則就只有用spawn=true屬性把tomcat放在后臺(tái)運(yùn)行。spawn有很多不好的地方,比如不能即時(shí)在console看到信息,停止ant運(yùn)行不能把tomcat關(guān)掉等。
Parallel相當(dāng)于一個(gè)容器,放在里面的每個(gè)task都會(huì)被并行執(zhí)行。如果想把某幾個(gè)task順序執(zhí)行,用相當(dāng)于()的Sequential task
?包起來(lái)。
2.5 Waitfor task
暫停ant執(zhí)行直到條件符合,比如<waitfor><http url=http://localhost:8080/
></waitfor>就會(huì)等待tomcat啟動(dòng)后才會(huì)繼續(xù)往下執(zhí)行。Macrodef task
3. 代碼封裝
?ant 代碼最基本的封裝是
?1. ant? task:調(diào)用其他腳本的任務(wù),可設(shè)定dir 與是否繼承本腳本的變量。
?2. antcall task:調(diào)用本腳本內(nèi)其他task,可設(shè)置參數(shù)。
?3. import task :就像其他語(yǔ)言的include一樣,引入其他腳本內(nèi)容到本腳本里。
1. AntFetch
,? AntCallBack task
?? ant-contrib貢獻(xiàn),對(duì)應(yīng)于Ant 與 AntCall。原版只能向被調(diào)用函數(shù)傳遞變量,函數(shù)執(zhí)行后沒(méi)辦法return 值。antcallback的語(yǔ)法如下
???<antcallback target="mytarget" return="myresult1,myresult2"/>
2. Macrodef task
???作為最小的封裝單位,與以<target>封裝再<antcall target="xxx">調(diào)用差不太遠(yuǎn),細(xì)微之處自行體驗(yàn)了。個(gè)人比較喜歡用macrodef。
3. Java task
與 Exec task
直接執(zhí)行Java類或程序
???注意執(zhí)行目錄的定義。另在Windows下如果要直接運(yùn)行dos窗口中的命令,以下指令啟動(dòng)默認(rèn)瀏覽器訪問(wèn)localhost:
?? <exec executable="cmd.exe">
????? <arg line="/c start http://localhost:8080
"/>
???</exec>???
4. 擴(kuò)展Ant的Task
?? 擴(kuò)展ant task很簡(jiǎn)單,實(shí)現(xiàn)execute() 方法執(zhí)行task,實(shí)現(xiàn)setter接口讓ant框架執(zhí)行屬性注入。繼承Task 獲得一些ant的能力,比如查詢某個(gè)變量的值。
?? 稍微有點(diǎn)麻煩的是多層嵌套屬性的注入。詳細(xì)請(qǐng)看http://ant.apache.org/manual/developlist.html
?? SpringSide 2.0 里很簡(jiǎn)單的實(shí)現(xiàn)了一個(gè)XML File Merge的task,見(jiàn)XmlMergeTask.java。
???蛋蛋?說(shuō)擴(kuò)展Ant的最方便的方法還是在ANT里嵌套腳本。導(dǎo)入BSF庫(kù)以后,你就可以用BSF支持的腳本語(yǔ)言了(見(jiàn)Script Task)。接下來(lái)有機(jī)會(huì)嘗試一下。
?5. 文件操作
? 剛好springside里進(jìn)行了比較多的文件操作,隨便記一下。
? replace
與 copy 時(shí)加入filter
, 都可以進(jìn)行字符串替換.
??concat
在文件末添加其他文件的內(nèi)容。
? 好困,很多東西沒(méi)寫詳細(xì),明天再補(bǔ)充。
??
題外話,Ant
完整演示了如何編寫XML式的代碼,雖然對(duì)于開(kāi)發(fā)人員來(lái)說(shuō)XML編碼非常麻煩,遠(yuǎn)遠(yuǎn)沒(méi)有Ruby的rake以ruby代碼本身來(lái)構(gòu)建系統(tǒng)清晰,但對(duì)于
IDE,特別是希望圖形化編程的IDE來(lái)說(shuō),XML比普通代碼要容易渲染得多,所以普元EOS的圖形化編程也是序列成XML代碼。再另外,Ant的
task 和 普元的構(gòu)件也有相似。
?
tomcat5.5.9+sql2000數(shù)據(jù)庫(kù)連接池配置的一些心得體會(huì)
作者:chiefboy
版權(quán)聲明:本文可以自由轉(zhuǎn)載,轉(zhuǎn)載時(shí)請(qǐng)務(wù)必以超鏈接形式標(biāo)明文章原始出處和作者信息及本聲明
作者:葉楓
原
文:[http://www.matrix.org.cn/resource/article/44/44021_tomcat_sql2000.html]http://www.matrix.org.cn/resource/article/44/44021_tomcat_sql2000.html[/url]
關(guān)鍵字:tomcat sql2000
????
終于解決了困擾多天的連接池的問(wèn)題,寫下這編文章與大家一起分享。我是在tomcat5.5.9下配置的,tomcat5.5.X和以前的版本有一些差
別,所以配置上也有差別。我就說(shuō)一下在tomcat5.5.9配置的基本步驟:(確定你以安裝好tomcat5.5.9、sql2000)
1、把數(shù)據(jù)庫(kù)JDBC驅(qū)動(dòng)拷貝到%TOMCAT_HOME%/common/lib和%TOMCAT_HOME%/webapps/yourweb/WEB-INF/lib下(我的web文件夾名字叫quickstart)
這一步大家都知道,不然tomcat無(wú)法與數(shù)據(jù)庫(kù)連接。
2、修改%TOMCAT_HOME%/conf/server.xml文件,在??<GlobalNamingResources></GlobalNamingResources>之間
添加以下內(nèi)容:
????
<Resource
??????name="jdbc/quickstart"
??????type="javax.sql.DataSource"
??????password="123456"
??????driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
??????maxIdle="2"
??????maxWait="5000"
??????username="sa"
??????url="jdbc:microsoft:sqlserver://localhost;DatabaseName=quickstart"
??????maxActive="4"/>
以上內(nèi)容根據(jù)大家的具體情況進(jìn)行相應(yīng)修改,比如:把name="jdbc/quickstart"中的quickstart改成和你web文件夾名稱一樣,把password="123456"中的“123456”改成你數(shù)據(jù)庫(kù)的密碼。
3、在%TOMCAT_HOME%/conf/Catalina/localhost下新建一個(gè)與你web文件夾同名的xml文件(我的是quickstart.xml)
這一步非常重要,如果沒(méi)有這步就會(huì)出錯(cuò),會(huì)出現(xiàn)
org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'
這樣的錯(cuò)誤,在文件中加入第2步的內(nèi)容,如下:
<?xml version="1.0" encoding="UTF-8"?>
<Context>
???? <Resource
??????name="jdbc/quickstart"
??????type="javax.sql.DataSource"
??????password="123456"
??????driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
??????maxIdle="2"
??????maxWait="5000"
??????username="sa"
??????url="jdbc:microsoft:sqlserver://localhost;DatabaseName=quickstart"
??????maxActive="4"/>
</Context>
根據(jù)個(gè)人具體情況進(jìn)行相應(yīng)修改。
4、修改%TOMCAT_HOME%/webapps/yourweb/WEB-INF下的web.xml文件,在<web-app></web-app>之間添加以下內(nèi)容
<resource-ref>
????<description>sqlserverDB Connection</description>
????<res-ref-name>jdbc/quickstart</res-ref-name>
????<res-type>javax.sql.DataSource</res-type>
????<res-auth>Container</res-auth>
??</resource-ref>
把<res-ref-name>jdbc/quickstart</res-ref-name>中的quickstart改成你的web文件夾名稱。
5、測(cè)試,在quickstart下新建一個(gè)index.jsp文件
<%@ page contentType="text/html; charset=gb2312" %>
<%@ page import="javax.naming.*" %>
<%@ page import="javax.sql.*" %>
<%@ page import="java.sql.*" %>
<html>
<head>
<title>JDBC Test</title>
</head>
<body>
<%
????????Connection conn=null;
????????Statement stmt=null;
????????ResultSet rs=null;
????????ResultSetMetaData md=null;
????????try
????????{
????????????????Context initCtx=new InitialContext();
????????????????
????????????????DataSource ds=(DataSource)initCtx.lookup("java:comp/env/jdbc/quickstart");
????????????????if(ds!=null)
????????????????{
????????????????????????out.println("已經(jīng)獲得DataSource");
????????????????????????out.println(ds.toString());
????????????????????????conn=ds.getConnection();
????????????????????????stmt=conn.createStatement();
????????????????????????out.println("aa");
????????????????????????rs=stmt.executeQuery("select * from cat");
????????????????????????md=rs.getMetaData();
????????????????????????out.println("<table border=1>");
????????????????????????out.println("<tr>");
????????????????????????for(int i=0;i<md.getColumnCount();i++)
????????????????????????{
????????????????????????????????out.println("<td>"+md.getColumnName(i+1)+"</td>");
????????????????????????}
????????????????????????while(rs.next())
????????????????????????{
????????????????????????????????out.println("<tr>");
????????????????????????????????out.println("<td>"+rs.getString(1)+"</td>");
????????????????????????????????out.println("<td>"+rs.getString(2)+"</td>");
????????????????????????????????out.println("<td>"+rs.getString(3)+"</td>");
????????????????????????????????out.println("<td>"+rs.getString(4)+"</td>");
????????????????????????????????out.println("</tr>");
????????????????????????}
????????????????????????out.println("</table>");
????????????????????????conn.close();
????????????????}
????????????????
????????}
????????catch(Exception e)
????????{
????????????????out.println(e.toString());
????????????????System.out.println(e.toString());
????????}
%>
</body>
</html>
Tomcat5.x和Hibernate數(shù)據(jù)庫(kù)連接池配置方法
? 首先確保你的TOMCAT HIBERNATE SQLSERVER環(huán)境運(yùn)轉(zhuǎn)正常。
接著我們到TOMCAT安裝目錄找到/Conf/server.xml文件在你的標(biāo)簽內(nèi)部加入下面的紅色部分代碼
代碼內(nèi)容
<Context path="" docBase="" debug="0" >
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<Resource name="JNDI/gamvan" auth="Container"
type="javax.sql.DataSource" driverClassName="net.sourceforge.jtds.jdbc.Driver"
url="jdbc:jtds:sqlserver://127.0.0.1:1433;DatabaseName=GVclub_gamvan"
username="sa" password="123" maxActive="100" maxIdle="10"
maxWait="-1"/>
</Context>
其中net.sourceforge.jtds.jdbc.Driver應(yīng)該是你的數(shù)據(jù)庫(kù)驅(qū)動(dòng)類;jdbc:jtds:sqlserver://127.0.0.1:1433;DatabaseName=GVclub_gamvan 應(yīng)該是你的數(shù)據(jù)庫(kù)連接地址;
JNDI/gamvan 連接池名字
username="sa" password="123" 你的數(shù)據(jù)庫(kù)登陸ID和密碼
然后到你的網(wǎng)站根目錄/WEB-INF/ 打開(kāi)web.xml 在web-app標(biāo)簽內(nèi)部加上如下代碼
代碼內(nèi)容
<resource-ref>
<description>Oracle Datasource example</description>
<res-ref-name>JNDI/gamvan</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
TOMCAT部分我們配置完畢,記下來(lái)配置hibernate的配置文件hibernate.cfg.xml
代碼內(nèi)容
<!-- Datasource Start -->
<property name="connection.datasource">java:comp/env/JNDI/gamvan</property>
<property name="show_sql">false</property>
<property name="dialect">org.hibernate.dialect.SQLServerDialect</property>
<!-- Datasource END -->
將原來(lái)的數(shù)據(jù)庫(kù)連接標(biāo)簽部分注銷,比如SQLSERVER2000注銷以下部分
代碼內(nèi)容
<property name="connection.driver_class">net.sourceforge.jtds.jdbc.Driver</property>
<property name="dialect">org.hibernate.dialect.SQLServerDialect</property>
<property name="connection.url">
jdbc:jtds:sqlserver://127.0.0.1:1433;DatabaseName=GVclub_gamvan;
</property>
<property name="connection.username">sa</property>
<property name="connection.password">123</property>
接著重起TOMCAT就可以使用連接池了。TOMCAT5.5.9 HIBERNATE3.05版本上測(cè)試成功
Tomcat5.x和Hibernate數(shù)據(jù)庫(kù)連接池配置方法
來(lái)源:?今晚在線
??作者:我容易么我
??類別: 原創(chuàng)
??時(shí)間: 2005-11-8
??瀏覽:
首先確保你的TOMCAT HIBERNATE SQLSERVER環(huán)境運(yùn)轉(zhuǎn)正常。
接著我們到TOMCAT安裝目錄找到/Conf/server.xml文件在你的標(biāo)簽內(nèi)部加入下面的紅色部分代碼
代碼內(nèi)容
<Context path="" docBase="" debug="0" > <WatchedResource>WEB-INF/web.xml</WatchedResource> <Resource name="JNDI/gamvan" auth="Container" type="javax.sql.DataSource" driverClassName="net.sourceforge.jtds.jdbc.Driver" url="jdbc:jtds:sqlserver://127.0.0.1:1433;DatabaseName=GVclub_gamvan" username="sa" password="123" maxActive="100" maxIdle="10" maxWait="-1"/> </Context> |
其中net.sourceforge.jtds.jdbc.Driver應(yīng)該是你的數(shù)據(jù)庫(kù)驅(qū)動(dòng)類;jdbc:jtds:sqlserver://127.0.0.1:1433;DatabaseName=GVclub_gamvan 應(yīng)該是你的數(shù)據(jù)庫(kù)連接地址;
JNDI/gamvan 連接池名字
username="sa" password="123"? 你的數(shù)據(jù)庫(kù)登陸ID和密碼
然后到你的網(wǎng)站根目錄/WEB-INF/ 打開(kāi)web.xml?? 在web-app標(biāo)簽內(nèi)部加上如下代碼
代碼內(nèi)容 <resource-ref> <description>Oracle Datasource example</description> <res-ref-name>JNDI/gamvan</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref> |
TOMCAT部分我們配置完畢,記下來(lái)配置hibernate的配置文件hibernate.cfg.xml
代碼內(nèi)容 <!-- Datasource Start --> <property name="connection.datasource">java:comp/env/JNDI/gamvan</property> <property name="show_sql">false</property> <property name="dialect">org.hibernate.dialect.SQLServerDialect</property> <!-- Datasource END --> |
將原來(lái)的數(shù)據(jù)庫(kù)連接標(biāo)簽部分注銷,比如SQLSERVER2000注銷以下部分
代碼內(nèi)容 <property name="connection.driver_class">net.sourceforge.jtds.jdbc.Driver</property> <property name="dialect">org.hibernate.dialect.SQLServerDialect</property> <property name="connection.url"> jdbc:jtds:sqlserver://127.0.0.1:1433;DatabaseName=GVclub_gamvan; </property> <property name="connection.username">sa</property> <property name="connection.password">123</property> |
接著重起TOMCAT就可以使用連接池了。TOMCAT5.5.9? HIBERNATE3.05版本上測(cè)試成功。
如有什么疑問(wèn)可以到 http://club.GamVan.com 技術(shù)討論區(qū)內(nèi)提出,大家共同解決!
摘要: 使用JIRA搭建企業(yè)問(wèn)題跟蹤系統(tǒng)(轉(zhuǎn)自Judy Shen的專欄)
轉(zhuǎn)自:http://blog.csdn.net/judyxm/archive/2006/04/26/678456.asp
...
閱讀全文
http://kickjava.com/
摘要: 使用 Drools 規(guī)則引擎實(shí)現(xiàn)業(yè)務(wù)邏輯
使用聲明性編程方法編寫程序的業(yè)務(wù)邏輯
...
閱讀全文
在這里鄭重推薦
http://crackzplanet.com/
所有最新的,你想要的,你不想要的破解文件,注冊(cè)文件,你都可以在這里找到(當(dāng)然也有找不到
**
)。關(guān)鍵一個(gè)字新。這里的破解和注冊(cè)很可能就是你想要的。
摘要: Hibernate 開(kāi)發(fā)指南
Original Author: 夏昕<xiaxin@gmail.com>
本文是由筆者2003 年底一個(gè)咨詢項(xiàng)目中,為客戶做的持久層設(shè)計(jì)培訓(xùn)
文案整理而來(lái)。
其中的內(nèi)容涉及Hibernate 的使用,以及一部分筆者實(shí)際咨詢項(xiàng)目中的
經(jīng)驗(yàn)積累,另一方面,大部分是筆者在Hibernate 的官方論壇中與眾多
技術(shù)專家交流所得。
既來(lái)于斯,則歸于...
閱讀全文