1.web.xml
 
- 설정사항
=========================================
 <resource-ref>
        <res-ref-name>test</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
    </resource-ref>
=========================================
 - 설명 : resource-ref는 직접적인 리소스를 생성하는것이 아니라, 외부 자원에 대한 참조를 한다는 의미이다.
            위와 같은 경우에는 javax.sql.DataSource에 대한 사항을 Container에서 test라는 이름으로 찾게다는 의미이다.


 
2.jeus-web-dd.xml
 
- 설정사항
=========================================
     <res-ref>
      <jndi-info>
          <ref-name>test</ref-name>
          <export-name>jdbc/ora</export-name>
      </jndi-info>
     </res-ref>
============================== ===========
 - 설명 : 이 Context에서 사용할 자원에 대한 정의를 한다. export-name은 JEUSMain.xml에 정의된 DataSource의 export-name이다.
             ref-name은 web.xml에 정의한 res-ref-name과 반드시 동일해야 한다.

 


 3. JEUSMain.xml

 

- 설정사항
=========================================
   <resource>
        <data-source>
            <database>
                <vendor>oracle</vendor>
                <export-name>jdbc/ora</export-name>
                <data-source-class-name>oracle.jdbc.pool.OracleConnectionPoolDataSource</data-source-class-name>
                <data-source-type>ConnectionPoolDataSource</data-source-type>
                <database-name>orcl</database-name>
                <port-number>1521</port-number>
                <server-name>192.168.0.1</server-name>
                <user>welfare_jeus</user>
                <password>wpdntm</password>
                <driver-type>thin</driver-type>
                <connection-pool>
                    <pooling>
                        <min>1</min>
                        <max>10</max>
                        <step>1</step>
                        <period>1800000</period>
                    </pooling>
                    <wait-free-connection>
                        <enable-wait>true</enable-wait>
                        <wait-time>10000</wait-time>
                    </wait-free-connection>
                    <!--check-query>SELECT 1 FROM DUAL</check-query-->
                </connection-pool>
            </database>
        </data-source>
    </resource>
=========================================


 
4. 소스
=========================================
<%@ page contentType="text/html; charset=euc-kr" %>
<%@ page import="oracle.jdbc.driver.*" %>
<%@ page import="javax.naming.*" %>
<%@ page import="javax.sql.*" %>
<%@ page import="java.sql.*" %>
<%@ page import="java.net.*" %>
<%@ page import="javax.rmi.PortableRemoteObject" %>
<%
 Context ctx = null;
 DataSource ds = null;
 Connection conDs = null;
 Statement stmt = null;
 ResultSet rs = null;
try {
   //localbinding lookup1
  Context initContext = new InitialContext();
   ctx  = (Context)initContext.lookup("java:comp/env");
   ds = (DataSource)ctx.lookup("test"); 
   /*
   //localbinding lookup2
   Context initContext = new InitialContext();
   ds  = (DataSource)initContext.lookup("java:comp/env/test");
   conDs = ds.getConnection();
   */
   /*
    //global binding lookup - jndi서버를 통한 resource lookup임.
    ctx = new InitialContext();
   ds = (DataSource) ctx.lookup("jdbc/ora");
   conDs = ds.getConnection();
   */
 
 stmt = conDs.createStatement();
 String query = " select 'Connect Success!!!' from dual ";
 out.println("query : "+query+"<br>");
 rs = stmt.executeQuery( query );
 
 while ( rs.next() )
 {
  out.print("result : " +rs.getString(1));
 }
} catch ( Exception e ) {
 e.printStackTrace();
} finally {
 if ( stmt != null ) try { stmt.close(); } catch(Exception e) {}
 if ( conDs != null ) try { conDs.close(); } catch(Exception e) {} 
}
%>
=========================================


보라색으로 표현된 부분 java:comp/env는 web.xml에 정의된 로컬바인딩(resource-ref)를 사용하겠다는 자바표준이다.
파란색으로 표시된 부분은 resource-ref의 res-ref-name의 이름이다.

java:/comp/env 와 같은 식의 잘못된 이름 사용시 에러가 발생함 - javax.naming.NameNotFoundException