JNDI 의 java: comp / env

6062 단어 ejbJNDI
JNDI 를 설명 합 니 다. 예 를 들 어 데이터 원본 을 얻 었 을 때 JNDI 주 소 는 두 가지 방법 이 있 습 니 다. 예 를 들 어 같은 jdbc / testdS 데이터 원본 입 니 다.
A:        java:comp/env/jdbc/testDS
B:        jdbc/testDS
이 두 가지 표기 법 은 배치 방식 도 모두 같 지 않다. 첫 번 째 방법 은 프로그램 이식 이나 이전 에 유리 한 방법 이 라 고 할 수 있다. 그의 실현 은 '맵' 의 개념 과 같 고 B 방법 은 하 드 참조 이다.
java: comp / env 는 환경 이름 컨 텍스트 (environment naming context (ENC)) 로 EJB 규범 1.1 이후 도입 되 었 습 니 다. 이 를 도입 한 것 은 원래 JNDI 검색 으로 인 한 충돌 문 제 를 해결 하기 위해 서 이 며 EJB 또는 J2EE 응용 프로그램의 이식 성 을 향상 시 키 기 위해 서 입 니 다.
J2EE 에서 자주 사용 하 는 인용 은 다음 과 같 습 니 다.
        JDBC 데이터 원본 은 자바: comp / env / jdbc 하위 컨 텍스트 에서 설명 합 니 다.
        JMS 연결 공장 은 자바: comp / env / jms 서브 컨 텍스트 에서 설명 합 니 다.
        자바 메 일 연결 공장 은 자바: cop / env / mail 하위 컨 텍스트 에서 설명 합 니 다.
        URL 연결 공장 은 자바: comp / env / url 하위 컨 텍스트 에서 설명 합 니 다.
아래 의 구 조 를 통 해 이 두 가지 묘사 의 차이 점 을 발견 할 수 있다.
A:       java: comp / env / jdbc / testDS (가상 주소)   ------>    매 핑 설명자   ------>        jdbc / testDS (실제 주소)
B:       jdbc / testDS (실제 주소)
이런 구조 로 볼 때 A 는 확실히 이식 하기에 편리 하 다.
예 를 하나 더 보 겠 습 니 다.
데이터 소스 를 가 져 올 필요 가 있다 면: dataSource = (DataSource) ctx. lookup ("java: comp / env / jdbc / testDS");
그러면 설정 파일 에서 자원 매 핑 을 할 때 웹. xml 에서
    
<resource-ref>
        <res-ref-name>jdbc/testDS</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
      </resource-ref>

해당 자원 설정 xml 에서 (서로 다른 응용 서버 가 다 르 고 WSAD 에서 시각 적 으로 설정 할 수 있 음),
   
<reference-descriptor>
      <resource-description>
        <res-ref-name>jdbc/DBPool</res-ref-name>
        <jndi-name>OraDataSource</jndi-name>
      </resource-description>
    </reference-descriptor>

Tomcat 5.5h server. xml 에 추가:
<Context
            docBase="D:/workspace/Hello/WebContent"
            path="/Hello"
            reloadable="true">
          <Resource
            name="jdbc/DBPool"
            type="javax.sql.DataSource"
            maxActive="100"
            maxIdle="10"
            maxWait="3000"
            driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
            url="jdbc:sqlserver://192.168.1.37:1433;DatabaseName=xxx;user=sa;password=sa123"/>
        </Context>
실제 서버 의 JNDI 이름 은 OraDataSource 입 니 다. 논리 명 jdbc / DBPool 은 이 를 매 핑 하 는 데 만 사 용 됩 니 다. 이식 성 을 높이 기 위해 서 는 이식 할 때 설정 파일 만 고치 면 됩 니 다. 프로그램 은 변경 하지 않 아 도 됩 니 다.
java: comp / env 는 표준 J2EE 환경 찾기 규칙 입 니 다. 이 방식 을 사용 하려 면 JNDI 이름 으로 환경 이름 을 매 핑 하 는 격 리 를 해 야 합 니 다. 프로그램 을 쓸 때 진정한 JNDI 이름 에 관심 을 가 질 필요 가 없습니다. 사실은 JNDI 이름 을 설정 파일 에 넣 는 것 과 같은 용법 입 니 다. 예 를 들 어 자바: cop / env / my / datasource 를 my. ora. dataource 에 매 핑 하 는 것 과 같 습 니 다.
추가 하지 않 을 때 전역 JNDI 이름 을 추가 합 니 다. 그러면 응용 프로그램 간 EJB 의 결합 이 너무 높 아 사용 을 권장 하지 않 습 니 다.
주:
java:comp/env/   앞 에 고정 되 어 있어 요.  
java: comp / env 는 표준 J2EE 환경 찾기 규칙 입 니 다.  
copany
env 는 environment 의 줄 임 말 입 니 다.
이 방식 을 사용 하려 면 JNDI 이름 으로 환경 이름 을 매 핑 해 야 합 니 다.
이러한 격 리 는 프로그램 을 쓸 때 진정한 JNDI 이름 에 관심 을 가 질 필요 가 없 게 한다.
솔직히 말 해서 JNDI 이름 을 프로필 에 넣 는 거 랑 똑 같 아 요.  
기타 확장:
J2EE 1.3, 자원 관리 가 자원 을 연결 하지만 사용 할 때 자원 인용 을 설정 해 야 합 니 다.
웹. xml 이나 ejb - jar. xml 에 EJB 나 DataSource 에 대한 인용 을 설정 해 야 해당 자원 을 사용 할 수 있 습 니 다.
자원 설정 이 든 자원 인용 설정 이 든 모두 배치 단계 에서 수정 할 수 있 습 니 다. 그러나 프로그램 은 바 꾸 지 않 아 도 됩 니 다. 인용 이 변 하지 않 으 면 됩 니 다. 용기 에 얼마나 많은 것 을 넣 어야 하 는 지 코드 를 쓸 때 알 수 있 기 때 문 입 니 다. 그러나 서버 에 얼마나 많은 자원 을 넣 어야 하 는 지 코드 를 쓸 때 는 모 릅 니 다.자원 은 전체 서버 에 있 기 때문에 앞으로 어느 때 는 관리 할 수 없 을 정도 로 많 을 수 있 습 니 다.
웹. xml 과 ejb - jar. xml 모두 my copay / abc 라 는 자원 을 참조 할 수 있 습 니 다. 이름 이 같 아 도 괜 찮 습 니 다. 서로 다른 용기 에서 같은 용기 에서 유일 하면 됩 니 다. 자원 인용 은 실제 자원 의 JNDI 와 같 아 도 괜 찮 습 니 다.
현재 응용 서버 는 J2EE 1.3 을 지원 합 니 다. 자원 을 실제 자원 에 대응 하 는 설정 파일 을 참조 합 니 다.IBM WebSphere 처럼 웹 프로젝트 에서 / WEB - INF / ibm - web - bnd. xml 는 하나의 자원 을 실제 JNDI 자원 에 연결 하 는 데 사용 되 며, EJB 프로젝트 에 서 는 ibm - ejb - jar - bnd. xml 입 니 다.
저 는 & Web & Sphere & Application & Developer 로 개발 할 때 웹. xml 에 자원 인용 을 추가 합 니 다. 예 를 들 어 데이터 원본 에 대한 인용, WSAD 는 ibm - web - bnd. xml 에 해당 하 는 바 인 딩 항목 을 자동 으로 추가 합 니 다. ejb - jar. xml 에 Local Ejb Ref 를 추가 하면 WSAD 도 ibm - ejb - jar - bnd. xml 에 해당 하 는 항목 을 자동 으로 추가 합 니 다.  
EJB 를 썼 다 면 datasource: dataSource = (DataSource) ctx. lookup ("java: comp / env / jdbc / DBPool") 을 가 져 옵 니 다.
그러면 설정 파일 에서 자원 매 핑 을 할 때 ejb - jar. xml 에서
    
 <resource-ref> 
        <res-ref-name>jdbc/DBPool</res-ref-name> 
        <res-type>javax.sql.DataSource</res-type> 
        <res-auth>Container</res-auth> 
      </resource-ref> 
 weblogic-ejb-jar.xml , 
    <reference-descriptor> 
      <resource-description> 
        <res-ref-name>jdbc/DBPool</res-ref-name> 
        <jndi-name>OraDataSource</jndi-name> 
      </resource-description> 
    </reference-descriptor> 

//    jboss  jboss.xml       
    <resource-managers> 
        <resource-manager> 
            <res-name>jdbc/DBPool</res-name> 
            <res-jndi-name>OraDataSource</res-jndi-name> 
        </resource-manager> 
    </resource-managers> 
실제 서버 의 JNDI 이름 은 OraDataSource 입 니 다. 논리 명 jdbc / DBPool 은 이 를 매 핑 하 는 데 만 사 용 됩 니 다. 이식 성 을 높이 기 위해 서 는 이식 할 때 설정 파일 만 고치 면 됩 니 다. 프로그램 은 변경 하지 않 아 도 됩 니 다.
일반적인 프로그램 을 썼 다 면 JNDI 를 통 해 데이터 원본 을 직접 얻 으 려 면 lookup ("my test") 을 직접 사용 하면 됩 니 다. (서버 에 있 는 JNDI 가 my test 라면) 첫 번 째 쓰기 로 오히려 잘못 보고 할 수 있 습 니 다.

좋은 웹페이지 즐겨찾기