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

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

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

    我的空間,寫我所寫,禪我所藏

    與我一起遨游吧

     

    在Tomcat 5.5.20中配置JNDI的體會

    The Context element represents a web application, which is run within a particular virtual host. Each web application is based on a Web Application Archive (WAR) file, or a corresponding directory containing the corresponding unpacked contents, as described in the Servlet Specification (version 2.2 or later).??

    從上述描述看出,Context元素代表的是一個web application。

    You may define as many Context elements as you wish. Each such Context MUST have a unique context path, which is defined by the path attribute. In addition, you MUST define a Context with a context path equal to a zero-length string. This Context becomes the default web application for this virtual host, and is used to process all requests that do not match any other Context's context path.

    從上面的描述可以看出Context的數量自己定,但是必須定義一個path屬性為空的Context,用來出來匹配不上其它path的用戶請求。

    In addition to nesting Context elements inside a Host element, you can also store them:

    • in the individual $CATALINA_HOME/conf/context.xml file: the Context element information will be loaded by all webapps
    • in the individual $CATALINA_HOME/conf/[enginename]/[hostname]/context.xml.default file: the Context element information will be loaded by all webapps of that host
    • in individual files (with a ".xml" extension) in the $CATALINA_HOME/conf/[enginename]/[hostname]/ directory
    • if the previous file was not found for this application, in individual file at /META-INF/context.xml inside the application files

    以上的文字,是我寫這篇文檔的根源。

    Context element的放置位置:有5個。

    1、conf/server.xml的host元素之下。

    2、conf/context.xml 中,被所有的應用共享。

    3、conf/[enginename]/[hostname]/context.xml中,被所有的應用共享。

    4、conf/[enginename]/[hostname]/ directory.xml中,就是以目錄名作為文件名的配置文件。

    5、/META-INF/context.xml 在應用的目錄中。

    其中:1、2、3都是全局共享的。

    4、5都是針對獨立應用的。

    最后一種5生效的唯一理由是前面的4的文件找不到,如果有4,則5的配置將會完全被屏蔽掉。

    This method allows dynamic reconfiguration of the web application, since the main conf/server.xml file cannot be reloaded without restarting Tomcat. Please note that for tomcat 5, unlike tomcat 4.x, it is NOT recommended to place <Context> elements directly in the server.xml file. Instead, put them in the META-INF/context.xml directory of your WAR file or the conf directory as described above.

    以上的描述可以發現,conf/server.xml file cannot be reloaded without restarting Tomcat。

    反之如果配置到其他地方卻可以自動reload。自動重載意味著什么我就不多說了。

    為了聯系配置JNDI,我安裝了mysql 5.0.18

    在其中建立了一個測試的庫,和一張表,插入了一點兒數據。

    JNDI的使用,分為兩種:全局和局部的。

    全局的:

    conf/server.xml中配置(注意,配置Resource的方法在Tomcat的以前版本中不是這樣的,需要按照這個簡化語法來改,否則就和我一樣折騰半死也不明白為什么了。)

    < GlobalNamingResources >
    ...
    ????
    < Resource
    ??????
    name ="student"
    ??????type
    ="javax.sql.DataSource"
    ??????driverClassName
    ="com.mysql.jdbc.Driver"
    ??????password
    ="1"
    ??????maxIdle
    ="2"
    ??????maxWait
    ="5000"
    ??????username
    ="root"
    ??????url
    ="jdbc:mysql://localhost:3306/schoolproject"
    ??????maxActive
    ="4" />

    ...
    ??
    </ GlobalNamingResources >

    配置完成之后,就是使用它了。

    有兩個地方,根據前文描述,選擇一個。

    建立META-INF/context.xml(使用方法5,在局部配置時掩飾使用方法4)

    <?xml version="1.0" encoding="UTF-8"?>
    ??? < Context? path ="/test_deploy" >
    ????
    < ResourceLink? name ="student" ?type ="javax.sql.DataSource" ?global ="student" />
    </ Context >

    其中的name是程序中引用,其中的global是在全局Resource中定義的name。

    寫個測試的jsp

    index.jsp

    <% @?page?language = " java " ? import = " javax.sql.*,java.sql.*,javax.naming.* " ?contentType = " text/html;charset=UTF-8 " %>
    < html >
    ????
    < head >
    ????????
    < title >
    ????????????test
    ????????
    </ title >
    ????
    < head >
    ????
    < body >
    ????????Hello?olojiang
    !< br />
    ????????
    <%
    ????????????Context?initCtx?
    = ? new ?InitialContext();
    ????????????DataSource?ds?
    = ?(DataSource)initCtx.lookup( " java:comp/env/student " );
    ????????????
    if (ds? != ? null ) {
    ????????????????Connection?conn?
    = ?ds.getConnection();
    ????????????????Statement?st?
    = ?conn.createStatement();
    ????????????????
    ????????????????ResultSet?rs?
    = ?st.executeQuery( " select?*?from?student " );
    ????????????????
    while (rs.next()) {
    ????????????????????out.print(rs.getString(
    1 )? + ? " ? " );
    ????????????????????out.print(rs.getString(
    2 )? + ? " ? " );
    ????????????????????out.print(rs.getString(
    3 )? + ? " ? " );
    ????????????????????out.println(rs.getInt(
    4 )? + ? " <br/> " );
    ????????????????}

    ????????????????st.close();
    ????????????????conn.close();
    ????????????}

    ????????
    %>
    ????
    </ body >
    </ html >

    ?完美輸出結果。

    局部的:

    conf\Catalina\localhost\DBTest.xml(使用方法4,前面演示了使用方法5)

    在其中書寫可以有動態重載的優勢,DBTest時目錄名稱。

    < Context? path ="/DBTest" ?docBase ="DBTest" ?debug ="5" ?reloadable ="true" ?crossContext ="true" >
    ????
    < Resource
    ????????
    name ="jdbc/TestDB"
    ????????type
    ="javax.sql.DataSource"
    ????????driverClassName
    ="com.mysql.jdbc.Driver"
    ????????password
    ="1"
    ????????maxIdle
    ="2"
    ????????maxWait
    ="5000"
    ????????username
    ="root"
    ????????url
    ="jdbc:mysql://localhost:3306/schoolproject"
    ????????maxActive
    ="4" />
    </ Context >

    配置好了之后,比前面多處一步:需要在應用的WEB-INF/web.xml中寫引用。(使用全局的配置不需要作這一部也能成功,這里不作這步我也好像成功了,但是很多地方都寫需要這步,不知為何?

    <? xml?version="1.0"?encoding="UTF-8" ?>
    < web-app? xmlns ="http://java.sun.com/xml/ns/j2ee"
    ????xmlns:xsi
    ="http://www.w3.org/2001/XMLSchema-instance"
    ????xsi:schemaLocation
    ="http://java.sun.com/xml/ns/j2ee
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"

    ????version
    ="2.4" >
    ??
    < description > MySQL?Test?App </ description >
    ??
    < resource-ref >
    ??????
    < description > DB?Connection </ description >
    ??????
    < res-ref-name > jdbc/TestDB </ res-ref-name >
    ??????
    < res-type > javax.sql.DataSource </ res-type >
    ??????
    < res-auth > Container </ res-auth >
    ??
    </ resource-ref >
    </ web-app >

    ?使用同樣的JSP測試之:

    <% @?page?language = " java " ? import = " javax.sql.*,java.sql.*,javax.naming.* " ?contentType = " text/html;charset=UTF-8 " %>
    < html >
    ????
    < head >
    ????????
    < title >
    ????????????test
    ????????
    </ title >
    ????
    < head >
    ????
    < body >
    ????????Hello?olojiang
    !< br />
    ????????
    <%
    ????????????Context?initCtx?
    = ? new ?InitialContext();
    ????????????DataSource?ds?
    = ?(DataSource)initCtx.lookup( " java:comp/env/jdbc/TestDB " );
    ????????????
    if (ds? != ? null ) {
    ????????????????Connection?conn?
    = ?ds.getConnection();
    ????????????????Statement?st?
    = ?conn.createStatement();
    ????????????????
    ????????????????ResultSet?rs?
    = ?st.executeQuery( " select?*?from?student " );
    ????????????????
    while (rs.next()) {
    ????????????????????out.print(rs.getString(
    1 )? + ? " ? " );
    ????????????????????out.print(rs.getString(
    2 )? + ? " ? " );
    ????????????????????out.print(rs.getString(
    3 )? + ? " ? " );
    ????????????????????out.println(rs.getInt(
    4 )? + ? " <br/> " );
    ????????????????}

    ????????????????st.close();
    ????????????????conn.close();
    ????????????}

    ????????
    %>
    ????
    </ body >
    </ html >

    運行完美。

    兩種方法都說了,自己走了很多彎路,配這么點兒東西折騰了一整天,忘后來者能順利些。

    不足處請多包涵。

    開心ing!~

    posted on 2007-03-29 11:21 imcb 閱讀(980) 評論(1)  編輯  收藏

    評論

    # re: 在Tomcat 5.5.20中配置JNDI的體會 2008-07-24 11:08 yanglu

    博主是不是在eclipse下面運行的呢?如果是的話關閉eclipse也能運行嗎?  回復  更多評論   


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


    網站導航:
    博客園   IT新聞   Chat2DB   C++博客   博問  
     

    導航

    統計

    常用鏈接

    留言簿(2)

    隨筆分類

    隨筆檔案

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 国产亚洲精品a在线无码| 国产偷窥女洗浴在线观看亚洲| 暖暖在线视频免费视频| 国产性爱在线观看亚洲黄色一级片| 免费看内射乌克兰女| 久久久无码精品亚洲日韩软件 | 亚洲国产精品人久久电影| 免费国产成人午夜在线观看| 亚洲va中文字幕无码久久不卡| 国产精品亚洲片在线va| 国产精品久久久久久久久免费| 亚洲精品国产情侣av在线| 91精品国产免费久久久久久青草 | 亚洲狠狠婷婷综合久久蜜芽| 啦啦啦www免费视频| 亚洲第一视频网站| 中文字幕在线免费观看| ww亚洲ww在线观看国产| 免费毛片网站在线观看| 亚洲视频免费在线播放| 两个人的视频www免费| 亚洲AV无码乱码国产麻豆穿越| 99爱在线精品视频免费观看9| 亚洲一区电影在线观看| 四虎www成人影院免费观看| 国产成人+综合亚洲+天堂| 免费99精品国产自在现线| 久久精品国产亚洲| 日韩欧毛片免费视频| 美女18一级毛片免费看| 久久精品亚洲综合专区| 岛国大片免费在线观看| 国产精品永久免费| 国产成人免费网站在线观看| fc2免费人成在线| 亚洲性猛交xx乱| 亚洲成?Ⅴ人在线观看无码| 久久精品视频免费播放| 亚洲国产精品无码中文lv| 国产亚洲精品一品区99热| 最新免费jlzzjlzz在线播放|