use-java-context ?
이 옵션은 IronJacamar 라이브러리의 영향을 받는다. 스키마 상의 뜻은 아래와 같다.
Setting this to false will bind the DataSource into global JNDI ( Ex: use-java-context="true")
"글로벌 JNDI로 Datasource를 바인드 시키고 싶다면, False로 설정하라"
그렇다면 LOCAL JNDI와 글로벌 JNDI의 차이는 뭘까?
Local JNDIThe Java EE platform specification defines the following JNDI contexts:
In addition to the standard namespaces, AS7 also provides the following two global namespaces:
|
이론적으로는 위의 내용을 참고하세요
실질적으로 jboss 5에서는 다음과 같은 현상이 벌어진답니다.
oracle-ds.xml --------------------- <local-tx-datasource> -------------------- Log -------------------.. 11:19:22,708 INFO [ConnectionFactoryBindingService] Bound ConnectionManager 'jboss.jca:service=ConnectionFactoryBinding,name=JmsXA' to JNDI name 'java:JmsXA' |
oracle-ds.xml --------------------- <local-tx-datasource> -------------------- Log ------------------- 11:20:23,657 INFO [WrapperDataSourceService] Bound ConnectionManager 'jboss.jca:service=DataSourceBinding,name=OracleDS' to JNDI name 'OracleDS' |
use-java-context가 false에서는 wrappedDataSourceService가 한번 더 JNDI를 랩업해서 java:/ 이 없는 OracleDS로 그냥 바인드 시킵니다. 하지만 내부적으로 OracleDS 가 Lookup하면 java:/OracleDS가 호출이 되도록 변환작업이 이루어지게 됩니다.
그러나!!
jboss 7부터, 좀 더 자세히 IronJacamar 2.0+ schemas 부터는, datasources와 connection factories에 대해서는 global bindings가 지원이 되지 않는다. 따라서 이 attribute는 아무런 영향을 줄수가 없다.
다시 말해서, 이 설정값이 true든 false는 jboss 자체적으로 valid를 체크를 해서 java:/ 또는 java:jboss/ 로 jndi이름이 시작하는지를 체크한다. 그래서 이제는 무조건 java:/ 또는 java:jboss:/를 시작으로 JNDI이름이 시작되어야 한다.[1]
JBoss 5는 이제 곧 역사적으로 사라질 것 같으니 ..이런게 있었다 정도만 알고 넘어가도 될듯하다.
Reference:
[1] https://community.jboss.org/thread/231570
[2] https://docs.jboss.org/author/display/AS71/JNDI+Reference