JNDI 의 java: comp / env
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 라면) 첫 번 째 쓰기 로 오히려 잘못 보고 할 수 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JNDI 의 java: comp / env예 를 들 어 데이터 원본 을 얻 었 을 때 JNDI 주 소 는 두 가지 방법 이 있 습 니 다. 이 방식 을 사용 하려 면 JNDI 이름 으로 환경 이름 을 매 핑 하 는 격 리 를 해 야 합 니 다. 사실은 JN...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.