티스토리 뷰

이제 관심밖의 IT 기술/JBoss

use-java-context ?

트래이닝맨 2014. 3. 10. 11:29
728x90
반응형
 

이 옵션은 IronJacamar 라이브러리의 영향을 받는다. 스키마 상의 뜻은 아래와 같다.

 Setting this to false will bind the DataSource into global JNDI ( Ex: use-java-context="true")

"글로벌 JNDI로 Datasource를 바인드 시키고 싶다면, False로 설정하라"


그렇다면 LOCAL JNDI와 글로벌 JNDI의 차이는 뭘까?


Local JNDI

The Java EE platform specification defines the following JNDI contexts:

  • java:comp/ - The namespace is scoped to the current component (i.e. EJB)
  • java:module/ - Scoped to the current module
  • java:app/ - Scoped to the current application
  • java:global/ - Scoped to the application server

In addition to the standard namespaces, AS7 also provides the following two global namespaces:

  • java:jboss/
  • java:/

 


이론적으로는 위의 내용을 참고하세요


실질적으로 jboss 5에서는 다음과 같은 현상이 벌어진답니다.


oracle-ds.xml

---------------------

<local-tx-datasource>
     <use-java-context>true</use-java-context>
    <jndi-name>OracleDS</jndi-name>

--------------------

Log

-------------------..


11:19:22,708 INFO  [ConnectionFactoryBindingService] Bound ConnectionManager 'jboss.jca:service=ConnectionFactoryBinding,name=JmsXA' to JNDI name 'java:JmsXA'
11:19:22,724 INFO  [ConnectionFactoryBindingService] Bound ConnectionManager 'jboss.jca:service=DataSourceBinding,name=OracleDS' to JNDI name 'java:OracleDS'



oracle-ds.xml

---------------------

<local-tx-datasource>
     <use-java-context>false</use-java-context>
    <jndi-name>OracleDS</jndi-name>

--------------------

Log

-------------------


11:20:23,621 INFO  [ConnectionFactoryBindingService] Bound ConnectionManager 'jboss.jca:service=ConnectionFactoryBinding,name=JmsXA' to JNDI name 'java:JmsXA'
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


반응형
댓글
250x250
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함