tomcat 5.5 JNDI 설정

tomcat 5.5 의 JNDI 설정,주 된 두 가지:
1)드라이버 가 server 에 놓 인 위치.
2)설정
 
드라이버 는${TOMCAT 에 두 어야 합 니 다.HOME}\common\lib 에${TOMCAT 를 넣 은 적 이 있 습 니 다.HOME}\\server\lib 및${TOMCATHOME}\shared\lib 가 지나 쳐 서 실행 할 수 없습니다.
 
설정 파일 에 JNDI 를 추가 하 는 방법 은 여러 가지 가 있 지만,아래 와 같은 방식 은 비교적 통용 된다.
${TOMCAT_HOME}\conf\context.xml 의 설정 은 다음 과 같 습 니 다.
<Context>

    <!-- Default set of monitored resources -->
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
	
    <!-- Uncomment this to disable session persistence across Tomcat restarts -->
    <!--
    <Manager pathname="" />
    -->

<Resource  name="jdbc/test"   
           type="javax.sql.DataSource"   
           password=""   
           driverClassName="com.mysql.jdbc.Driver"   
           maxIdle="2"   
           maxWait="50"   
           username="root"   
           url="jdbc:mysql://localhost:3306/mynews"   
           maxActive="100"/>    
</Context>

 
테스트 프로그램 호출 시 다음 과 같 습 니 다:
<%@page import="java.util.*,javax.naming.*,java.sql.*,javax.sql.*"%>
<%@page contentType="text/html;charset=utf-8"%>
<%        
     Context ctx = new InitialContext();          
     String jndiLookUp = "java:comp/env/jdbc/test"; 
     DataSource ds =(DataSource) ctx.lookup(jndiLookUp);    
     Connection con = ds.getConnection(); 
     ResultSet rs =null;
     Statement stmt =null;
     try{
                
            stmt =con.createStatement();  
            rs = stmt.executeQuery("select * from XXX");
            while(rs.next())
           {
             System.out.println(rs.getString(1));
            }
         }catch(Exception e)
     {
        e.printStackTrace();
        
     }finally{
       if(rs!=null)
       rs.close();
       if(stmt!=null)
       stmt.close();
       if(con!=null)
       con.close();
     
     }    
              
%>

 
jndi 호출 에 사용 되 는 것 은"java:comp/env/jdbc/test"입 니 다.
프로그램의 웹 xml 에 다음 과 같은 정의 가 있 습 니 다:
<resource-ref>    
     <res-ref-name>jdbc/test</res-ref-name>    
     <res-type>javax.sql.DataSource</res-type>    
     <res-auth>Container</res-auth>    
     <res-sharing-scope>Shareable</res-sharing-scope>    
  </resource-ref>   

 
java:comp/env 는 구성 요소 의 JNDI 컨 텍스트 이름 입 니 다.
(실제로 이 문맥 도 하나의 자원 으로 처리 되 었 습 니 다.자원 을 찾 는 과정 은 이 럴 수 있 습 니 다.
jndictxt=ctxt.lookup("java:comp/env")그리고 이 jndictxt 로 자원 을 찾 습 니 다.
ref = jndictxt.lookup("jdbc/test")。)
jdbc/test 는 자원 이 인용 한 JNDI 이름(The jdbc/test string is the JNDI name for the resource reference)입 니 다.이 말 은 자원 인용 도 실제 자원 과 마찬가지 로 JNDI 바 인 딩 대상 으로 처리 되 었 음 을 의미 할 수 있 습 니 다.그러나 실제 적 으로 는 그렇지 않 을 것 입 니 다.배치 설명자 에서 인용 명 요소 이기 때 문 입 니 다.번역자 도 고수 가 아니 기 때문에 이곳 의 구체 적 인 실현 세부 사항 은 독자 스스로 연구 해 야 한다.)그래서 JDBC 의 DataSource 대상 의 JNDI 명 은 자바:cop/env/jdbc 의 문맥 서브 대상 에 저장 된다.(구성 요소 실행 환경의 상하 문 차원 은 좀 더 알 아야 한다)
 
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

 public static DataSource getDataSource(String dataSourceName){
     Context initCtx;
  try {
   initCtx = new InitialContext();
   Context envCtx = (Context) initCtx.lookup("java:comp/env");
   return (DataSource)envCtx.lookup(dataSourceName);
  } catch (NamingException e) {   
   e.printStackTrace();
  }
  return null;

}


좋은 웹페이지 즐겨찾기