로그인 상태가 아닙니다.
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