[如何JSP]為什麼取得datasource時總是要 lookup("java:comp/env/jdbc/....")


後端與資料庫連線的DAO中,我們經常要透過JNDI查找,取得javax.sql.DataSource物件來和資料庫連線,例如:



            DataSource dataSource=null;
            try {
               Context ctx = new InitialContext();
               dataSource = (DataSource) ctx.lookup("java:comp/env/jdbc/xxx");
   } catch (NamingException e) {
                e.printStackTrace();
   }
            Connection conn = datasource.getConnection();
......


取得JDBC資源的查找名稱在JAVA規格中明訂如下:"java:comp/env/jdbc/xxx"
xxx的部分,以Tomcat Server為例,可以自行在META-INF/context.xml的<Resource>標籤的name屬性定義,如:

<Resource name="jdbc/SQLserver" type=javax.sql.DataSource username="sa" password="12345678" ......>

其他資源的JNDI NAME可以參考下圖,來自Oracle官網

後端與資料庫連線的DAO中,我們經常要透過JNDI查找,取得javax.sql.DataSource物件來和資料庫連線,例如:



            DataSource dataSource=null;
            try {
               Context ctx = new InitialContext();
               dataSource = (DataSource) ctx.lookup("java:comp/env/jdbc/xxx");
   } catch (NamingException e) {
                e.printStackTrace();
   }
            Connection conn = datasource.getConnection();
......


取得JDBC資源的查找名稱在JAVA規格中明訂如下:"java:comp/env/jdbc/xxx"
xxx的部分,以Tomcat Server為例,可以自行在META-INF/context.xml的<Resource>標籤的name屬性定義,如:

<Resource name="jdbc/SQLserver" type=javax.sql.DataSource username="sa" password="12345678" ......>

其他資源的JNDI NAME可以參考下圖,來自Oracle官網

留言