使用JNDI連接Oracle數據庫步驟

1.創建數據庫

2.配置Tomcat中 文件夾爲conf中的context.xml   

          1.配置context.xml的內容爲:

<Context>
    <Resource name="jdbc/gsywjz"  auth="Container"
              type="javax.sql.DataSource"
              username="root"
              password="123456"
              driverClassName="oracle.jdbc.driver.OracleDriver"
              url="jdbc:oracle:thin:@xxx.xxx.xxx.xxx:31521:orcl"
              maxActive="100"
              maxIdle="30"
              maxWait="10000"/>
</Context>

        2.name:指定的Resource 的JNDI名字

        3.auth:  指定管理Resource的Manager,他有兩個可選值:Container和Application。Container表示由容器創建    Resource,Appliction表示由Web應用創建和管理Resource

         4.type: 指定Resource所屬的java類型

        5.maxActive:指定數據連接池中處於活動狀態的數據連接的最大數目

        6.maxIdle:指定數據庫連接池中處於空閒狀態的數據庫連接的最大數目,取值爲0,表示不受限制

        7.waxWait:指定數據庫連接池中數據連接處於空閒狀態的最長時間(以毫秒爲單位),超出這一時間將會拋異常

        8.username:指定連接數據庫的用戶名

        9.password:指定數據庫連接的密碼

       10.driverClassName:指定連接數據庫的JDBC驅動名程序

       11.URL:指定連接數據庫的URL

 

 3導入jar包到Tomcat中lib文件夾下

  1.         jar名稱爲:ojdbc14.jar
  2. web.xml文件的位置在(MyEclipse)webapps/WebProject/WEB-INF/web.xml
  3. 配置的內容:
    	<resource-ref>
    		<description>news DataSource</description>
    		<res-ref-name>jdbc/Message</res-ref-name>
    		<res-type>javax.sql.DataSource</res-type>
    		<res-auth>Container</res-auth>
    	</resource-ref>

    description:對所引用資源的說明
    res-ref-name:指定所引用資源的JNDI名字,與<Resource> 元素中的name屬性對應
    res-type:指定所引用資源的的類名字,與<Resource> 元素中的type屬性對應
    res-auth:指定管理所引用資源的Manager,與<Resource> 元素中的auth屬性對應
    4.編寫代碼,使用lookup()方法獲得數據源對象

        /*
    	 * 功能:建立並返回數據庫聯接 Connection
    	 * 
    	 * @param 無
    	 */
    	public static java.sql.Connection getConnectionDB() throws SQLException {
    		Connection con = null;
    		try {
    			DataSource ds = null;
    			CCreateHome ch = new CCreateHome();
                // jndiName = "java:comp/env/jdbc/message";使用lookup方法查找數據源時,
                //沒有使用前綴("java:comp/env/")+數據源名稱則會報錯
    			String jndiName = GlobalNames.DB_JNDI_NAME;
    			ds = (DataSource) ch.getHomeByJNDI(jndiName);
    			con = ds.getConnection();
    			if (con == null) {
    				throw new Exception("連接爲空!");
    			}
    		} catch (Exception e) {
    			throw new SQLException("連接異常:" + e.toString());
    		}
    		return con;
    	}
    
    
        
    
        /*
    	 * 根據傳入的JNDI獲得接口對象
    	 * 
    	 * @param JNDI 名稱
    	 * 
    	 * @return HOME的對象
    	 */
    	public Object getHomeByJNDI(String jndiName) throws Exception {
    		if (jndiName == null || jndiName.trim().equals("")) {
    			throw new Exception("JNDI 名稱不能爲空!");
    		}
    		try {
    			Context context = new InitialContext();
    			Object ref = context.lookup(jndiName);
    			return ref;
    		} catch (Exception e) {
    			throw new Exception("查找接口錯誤:" + e.toString());
    		}
    	}
    
    
    

     

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章