데이터 소스에 대한 직접 및 간접 검색 메소드
JNDI(Java™ Naming and Directory Interface) 이름(예: jdbc/DataSource)의 직접 또는 간접 메소드를 사용하여 데이터 소스를 검색할 수 있습니다.
직접
[10/5/07 11:40:38:468 CDT] 0000002e ConnectionFac W
J2CA0294W: Direct JNDI lookup of resource jdbc/myDatasource.
The following default values are used:
[Resource-ref CMConfigData key items]
res-auth: 1 (APPLICATION)
res-isolation-level: 0 (TRANSACTION_NONE)
res-sharing-scope: true (SHAREABLE)
loginConfigurationName: null
loginConfigProperties: null
[Resource-ref non-key items]
isCMP1_x: false (not CMP1.x)
isJMS: false (not JMS)
commitPriority 0
Java EE Name: not set
Resource ref name: not set
isCMP: false (not set)
이런 속성 중 첫 번째인 res-auth는 완료된 인증 유형을 표시합니다. 이 기본 설정은 활성화 스펙을 지정하지 않거나 getConnection 호출 시 사용자 이름 및 비밀번호를 지정하지 않은 경우 컴포넌트 관리 인증 별명이 사용된다는 것을 나타냅니다. 이는 컨테이너 관리 별명이 사용되지 않는다는 것을 의미합니다.
이 설정 중 두 번째인 res-isolation-level은 분리 레벨이 "기본" 설정으로 설정된다는 것을 의미합니다. 엔터프라이즈 Bean에 대해 이를 EJB(Enterprise JavaBeans) Bean 자체에 설정할 수 있습니다. 연결을 가져오는 서블릿의 경우, 이로 인해 격리 레벨은 Repeatable_Read가 됩니다. 이는 상당히 제한적인 격리 레벨입니다. 이로 인해 성능이 저하될 수 있으며 이는 애플리케이션 요청이 덜 제한적인 격리 레벨보다 더 많은 행을 잠그기 때문입니다.
마지막으로 res-sharing-scope는 공유 가능으로 설정되며 공유 가능한 연결이 사용된다는 의미입니다. 일부 애플리케이션의 경우 공유 가능한 연결이 적합합니다. 다른 애플리케이션, 특히 단일 service() 메소드 내에서 다중 연결을 가져오는 서블릿의 경우에는 그렇지 않습니다.
이러한 설정을 동반할 수 있는 예기치 않은 경우를 피하려면, 애플리케이션을 변경하여 직접 JNDI 이름 대신에 간접 JNDI 이름을 사용하고 자원 참조를 작성해야 합니다.
간접
기본값과 다른 값을 사용하려면 어셈블리 도구를 사용하여 자원 참조를 정의하십시오. 자원 참조는 어셈블리 도구를 사용하여 EJB 배치 디스크립터(ejb-jar.xml), 웹 배치 디스크립터(web.xml) 또는 애플리케이션 클라이언트 배치 디스크립터(application-client.xml) 편집기로 작성할 수도 있습니다. 자원 참조를 정의하고 나면 간접 JNDI 검색을 수행할 수 있습니다(java:comp/env 컨텍스트 사용). 그러면 자원 참조에 정의된 자원 참조 특성 값이 사용되며 J2CA0122I 메시지는 더 이상 표시되지 않습니다. 자세한 정보는 자원 참조 작성 주제를 참조하십시오.