JNDI學習(一) Tomcat7 配置JNDI (JDBC datasource)

iteye_17429發表於2016-12-19

        第一步Tomcat上安裝JDBC驅動包,將jar包放到 $CATALINA_HOME/lib 目錄下。

        第二步配置專案的web.xml檔案,參考配置如下

<resource-ref>
	  <description>
	  </description>
	  <res-ref-name>
	    jdbc/lianDB
	  </res-ref-name>
	  <res-type>
	    javax.sql.DataSource
	  </res-type>
	  <res-auth>
	    Container
	  </res-auth>
	</resource-ref>

         第三步配置$CATALINA_HOME/conf目錄下的context.xml檔案

<Resource name="jdbc/lianDB"
            auth="Container"
            type="javax.sql.DataSource"
            username="root"
            password="root"
            driverClassName="com.mysql.jdbc.Driver"
            url="jdbc:mysql://127.0.0.1:3306/lian?autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=utf-8&amp;zeroDateTimeBehavior=convertToNull&amp;useSSL=false"
            maxActive="8"
            maxIdle="4"/>

         第四步 如何在Java中使用JNDI資料來源

public String login() throws Exception {
		Context initCtx = new InitialContext();
		Context envCtx = (Context) initCtx.lookup("java:comp/env");
		DataSource ds = (DataSource) envCtx.lookup("jdbc/lianDB");
		StringBuffer sql = new StringBuffer();
		/**
		 * select group_id , group_name from t_group where group_name='同事'
		 */
		sql.append("select group_id , group_name from t_group   ");
		sql.append("where group_name=? ");
		Connection conn = ds.getConnection();
		PreparedStatement ps = null;
		ResultSet rs = null;
		Group group = new Group();
		try {
			ps = conn.prepareStatement(sql.toString());
			ps.setString(1, "同事");
			rs = ps.executeQuery();
			if (rs.next()) {
				group.setGroupId(rs.getString(1));
				group.setGroupName(rs.getString(2));
			}

		} finally {
			if (rs != null)
				rs.close();
			if (ps != null)
				ps.close();
			conn.close();
		}
		Gson gson = new Gson();
		return gson.toJson(group);
	}

         說明: context.xml檔案 <Resource> 標籤中name屬性要和web.xml檔案中<res-ref-name>屬性保持一致。

相關文章