<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Tomcat6.x+struts1.x+MySQL5.x連接池問題

    Posted on 2009-06-13 09:21 BBT_soft 閱讀(1179) 評論(5)  編輯  收藏

    1.在項目的WebRoot/META-INF下建context.xml文件,注意必須在該目錄下,Tomcat會自動找這個文件,Tomcat6.0以后就不用在web.xml中配置了:

    <?xml version="1.0" encoding="UTF-8"?>
    <Context reloadable="true" crossContext="true">

    <Resource
    name="jdbc/test" ----------注意:test為項目名
    auth="Container"----------該項為不變項
    type="javax.sql.DataSource"----------該項為不變項
    driverClassName="com.mysql.jdbc.Driver"----------數(shù)據(jù)庫驅(qū)動名
    url="jdbc:mysql://localhost:3306/haotian?autoReconnect=true"-------url
    username="root"-----用戶名
    password="root"------密碼
    maxActive="10"   ------最大連接數(shù)
    maxIdle="5"     --------最大空閑連接數(shù)
    maxWait="-1"/>   ------最大等待毫秒數(shù),-1為無限等待

    </Context>

    2.連接類:

    public class DBConnection {
    private Connection conn=null;
    public Connection getConnection(){
      
        //生成上下文對象,通過它可以向容器發(fā)送別名.
        Context context;
        try {
         context = new InitialContext();
         //查找對象
         DataSource ds=(DataSource)context.lookup("java:comp/env/jdbc/test");//jdbc/test為配置文件中的name
         //得到連接
         try {
          conn=ds.getConnection();
         } catch (SQLException e) {
          e.printStackTrace();
         }
        } catch (NamingException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
        }
       
       
       return conn;
    }

    3.把MySQL5.0的驅(qū)動包放到Tomcat的lib目錄下,注意:是Tomcat的lib,而不是項目的lib。(不知道為什么會這樣,之前不用這種連接池的時候放在項目的lib中就可以連接成功,但是現(xiàn)在就不可以,個人認為可能是context.xml使得Tomcat找自身lib中的驅(qū)動包,而不是項目中的驅(qū)動包)

    4.測試:

    這里并非是在連接類里面寫個main()就可以測試成功的,如果這樣會出現(xiàn)下面的錯誤:

    javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
    at javax.naming.spi.NamingManager.getInitialContext(Unknown Source)
    at javax.naming.InitialContext.getDefaultInitCtx(Unknown Source)
    at javax.naming.InitialContext.getURLOrDefaultInitCtx(Unknown Source)
    at javax.naming.InitialContext.lookup(Unknown Source)
    at util.DBConnection.getConnection(DBConnection.java:26)
    at util.DBConnection.main(DBConnection.java:49)

    所以,只有通過和前臺結合才能測試連接是否成功。

    總結:

    context.xml必須在項目的WebRoot/META-INF,Tomcat會自動找這個文件;

    數(shù)據(jù)庫驅(qū)動包必須放在Tomcat的lib目錄下(可能是Tomcat會根據(jù)context.xml在自身的lib目錄下找驅(qū)動包);

    不可以直接在連接類中寫main()測試,必須和前臺結合;

    Feedback

    # re: Tomcat6.x+struts1.x+MySQL5.x連接池問題  回復  更多評論   

    2009-06-13 10:59 by 天堂露珠
    Tomcat配置JNDI數(shù)據(jù)源:
    http://m.tkk7.com/wintys/archive/2009/06/12/java_tomcat_jndi_datasource.html

    # re: Tomcat6.x+struts1.x+MySQL5.x連接池問題  回復  更多評論   

    2009-06-13 14:14 by 隔葉黃鶯
    1. 驅(qū)動包放在哪里是由 Tomcat 中的類加載器層次決定的,雖然是配置在項目的 context.xml 中,但它的初始化是由 Tomcat 的 common 類加載器加載的,所以必須放在 Tomcat 的 lib 目錄中。

    2. 想在 main 方法中找到 jndi 資源,你需要考慮兩方面的事情:
    首先,那個連接池資源,未經(jīng) Tomcat 來初始化,也就沒有 bind 到 jndi 上,所以你查詢到。當然你可以手工用代碼來 bind,不需要啟動 Tomcat

    其次你在查詢連接池資源的時候,使用 InitialContext() 必須指定一個 Hashtable 參數(shù),里面包含具體的 jndi 實現(xiàn),例如 Tomcat 的 naming,具體如何指定請 google。因為在 Tomcat 容器中這些有關 JNDI 的環(huán)境變量是自動配置上的。

    3. 還有一種情況,即使由 Tomcat 來初始化的連接池,在外部單獨用 main 方法也未必能取到 Tomcat 中的 JNDI 資源,這要取決于 Tomcat 是否把資源暴露在外供其他應用程序使用。

    所以樓主還有很多東西需要深入了解,ClassLoader 和 JNDI

    # re: Tomcat6.x+struts1.x+MySQL5.x連接池問題  回復  更多評論   

    2009-06-14 00:26 by BBT_soft
    @天堂露珠
    謝謝您的指點

    # re: Tomcat6.x+struts1.x+MySQL5.x連接池問題  回復  更多評論   

    2009-06-14 00:26 by BBT_soft
    @隔葉黃鶯
    非常感謝您的指點,我是新手,還有很多東西要學

    # re: Tomcat6.x+struts1.x+MySQL5.x連接池問題  回復  更多評論   

    2009-06-16 08:59 by asdfsd
    啟動main當然會失敗,tomcat沒有啟動,數(shù)據(jù)源是tomcat提供的,所以失敗,如果你有專門的jndi服務器綁定,那就令當別論!!

    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導航:
     
    主站蜘蛛池模板: 97国产免费全部免费观看| 永久免费视频v片www| 日韩亚洲产在线观看| 亚洲国产精品日韩| 无码国产精品一区二区免费3p| 亚洲国产精品久久网午夜 | 久久久久国产精品免费免费搜索| 亚洲国产精品网站在线播放 | 24小时日本在线www免费的| 免费VA在线观看无码| 中文字幕亚洲综合久久2| 国产精品免费视频播放器| 久久免费国产精品一区二区| 亚洲人成电影网站色| 久久亚洲国产精品一区二区| 成人免费午间影院在线观看| 国产日韩AV免费无码一区二区| 亚洲AV无码专区亚洲AV桃| 国产精品亚洲片在线| 白白国产永久免费视频| 久热免费在线视频| 免费国产黄网站在线观看动图| 久久精品国产亚洲AV麻豆网站| 亚洲另类激情专区小说图片| A在线观看免费网站大全| 成全在线观看免费观看大全 | 亚洲AV无码一区二区三区电影 | 两个人的视频www免费| 亚洲欧好州第一的日产suv| 亚洲成a人片在线观看中文动漫| 国产一级淫片a视频免费观看| 91福利免费视频| 亚欧国产一级在线免费| 亚洲欧美自偷自拍另类视| 亚洲一区二区电影| 亚洲精品无码成人AAA片| 免费A级毛片在线播放不收费| 成人男女网18免费视频| 中国xxxxx高清免费看视频| 叮咚影视在线观看免费完整版 | 国产精品国产自线拍免费软件|