리소스 어댑터
본 장에서는 JEUS에서 제공하는 보안 관리 기능과 리소스 어댑터에 jeus-connector-dd.xml를 추가하는 방법 및 deploy할 때 유의할 사항 등에 대해 설명한다.
실제 리소스 어댑터 자체에 대한 패키징은 JCA 표준 1.7를 기준으로 "20. Packaging Requirements"를 참고한다. |
1. 보안 관리
본 절에서는 JEUS가 리소스 어댑터의 인증 및 권한 체크와 관련하여 어떤 기능을 제공하는지 설명한다.
1.1. Connection 인증
JCA 표준에 명시된 바와 같이 ejb-jar.xml, web.xml 등에 기술된 내용을 바탕으로 Connection 인증을 누가할 것인지 판별하게 된다.
<resource-ref> <res-ref-name>jca/pool</res-ref-name> <res-type>javax.resource.cci.ConnectionFactory</res-type> <res-sharing-scope>Unshareable</res-sharing-scope> <res-auth>Container</res-auth> </resource-ref>
-
<res-auth>
각 애플리케이션 컴포넌트별로 인증 역할을 컨테이너가 담당할지 애플리케이션이 담당할지 설정한다. (기본값: Container)
설정값 설명 Container
컨테이너에 의한 Connection 인증으로 <res-auth>를 'Container’로 설정한 경우에는 jeus-connector-dd.xml에 사용자명과 패스워드를 설정한다. 이때 패스워드에는 암호화된 값을 사용할 수 있다.
다음은 패스워드 설정에 대한 예이다.
{DES}FQrLbQ/D8O1lDVS71L28rw==
이렇게 설정한 사용자명과 패스워드 정보는 Connection을 새로 생성할 때 리소스 어댑터로 넘겨주는 인증 정보로 사용하게 된다. 만약 사용자가 jeus-connector-dd.xml에 아무런 인증 정보를 설정하지 않았을 경우에는 빈 껍데기의 javax.security.auth.Subject 객체를 리소스 어댑터로 넘겨준다.
패스워드 암호화에 대한 자세한 사항은 JEUS Domain 안내서의 Security 관리를 참고한다.
Application
<res-auth>를 'Application’로 설정한 경우에는 애플리케이션이 Connection을 요청할 때 JEUS는 Connection 인증에 관여하지 않는다. 대신 애플리케이션과 리소스 어댑터 간에 인증 정보를 주고받게 된다. 그 정보는 보통 javax.resource.spi.ConnectionRequestInfo를 구현한 리소스 어댑터의 클래스를 이용하게 된다.
2. 패키징
리소스 어댑터를 JEUS에 deploy하기 위해서는 ra.xml 이외에 JEUS에서 필요로 하는 별도의 DD(Deployment Descriptor)로 jeus-connector-dd.xml 파일을 생성해야 한다.
이 파일에는 다음과 같은 내용이 설정된다.
-
Work Manager 설정: Work Manager 설정
-
아웃바운드 Connection Pool 설정: Connection Pool 설정
설정한 후 RAR 파일의 META-INF 디렉터리에 jeus-connector-dd.xml을 위치시킨다.
xxx.rar/META-INF
3. Deploy
리소스 어댑터는 다음과 같이 2가지 형태로 deploy가 가능하다.
-
독립적인(Standalone) 모듈 : JEUS의 모든 애플리케이션에서 사용할 수 있다.
-
Jakarta EE 애플리케이션(EAR)에 속한 모듈 : EAR 내에서만 사용할 수 있다.
JEUS에서 애플리케이션을 deploy하는 방법에 관한 자세한 사항은 JEUS Applications & Deployment 안내서를 참고한다.
3.1. SHARED 모드 클래스 로딩
JCA 표준상 독립적인(Standalone) 모듈로 deploy하는 리소스 어댑터는 모든 애플리케이션이 사용 가능해야 하기 때문에 JEUS에서는 SHARED 모드의 클래스 로딩 방식을 지원한다. 이를 위해서 리소스 어댑터는 사용자의 설정에 관계없이 항상 SHARED 모드로 deploy한다. 이때 리소스 어댑터를 사용할 애플리케이션도 반드시 SHARED 모드로 deploy해야 한다.
|
3.2. Redeploy
리소스 어댑터는 일종의 JDBC 드라이버처럼 JEUS에 등록된다. JDBC 드라이버의 경우에는 JEUS_HOME/lib/datasource 아래에 JAR 파일을 두면 서버의 클래스 패스로 등록되는 방식으로 중간에 JAR 파일을 교체해도 제대로 반영이 되지 않기 때문에 JEUS를 Shutdown해야 한다.
그러나 리소스 어댑터는 JEUS에서 관리하는 애플리케이션이기 때문에 JEUS를 Shutdown하지 않고 리소스 어댑터의 버전 업그레이드를 할 수 있고 redeploy가 가능하다.
다음은 redeploy할 때 제약 사항이다.
-
리소스 어댑터 모듈을 redeploy할 때는 그것을 사용하는 애플리케이션들을 모두 redeploy해야 한다.
기존의 리소스 어댑터를 사용하고 있던 애플리케이션들은 이미 클래스를 Cache하고 있기 때문에 redeploy한 리소스 어댑터의 클래스들을 찾지 않는다.
-
현재 JEUS에서는 SHARED 모드로 deploy한 EJB 모듈을 redeploy할 경우 그것을 사용하던 웹 모듈도 모두 자동으로 redeploy하고 있다. 그러나 리소스 어댑터 모듈에 대해서는 아직 자동 redeploy를 지원하지 않고 있으므로 수동으로 해야 한다.
4. 리소스 어댑터를 리소스로 등록
리소스 어댑터 모듈은 하나의 독립된 애플리케이션이라기보다는 모든 애플리케이션이 공유해서 사용하는 드라이버와 같은 개념으로 이해될 수 있다. 그와 같은 관점에서 JEUS는 리소스 어댑터 모듈을 도메인에 커넥터 리소스로서 등록하여 사용할 수 있는 기능을 제공한다. 리소스 어댑터 모듈을 도메인에 커넥터 리소스로서 등록하는 작업은 WebAdmin을 통해서 이루어지며 이때 도메인에 등록되는 리소스 어댑터의 설정 정보는 리소스 어댑터 모듈의 jeus-connector-dd.xml의 설정 정보와 동일하다.
최종적으로 리소스 어댑터는 다음과 같은 설정 우선순위가 적용되어 deploy된다.
-
WebAdmin 설정
jeus-connector-dd.xml 설정보다 우선 순위가 높다. 이 설정이 존재하는 경우 리소스 어댑터는 deploy 후 도메인에서 커넥터 리소스로서 사용될 수 있다.
-
jeus-connector-dd.xml 설정
WebAdmin을 통한 리소스 어댑터 설정이 없는 경우 적용된다. 리소스 어댑터는 본래의 모듈로서의 역할만을 수행한다.
4.1. WebAdmin 사용
다음은 WebAdmin을 사용하여 리소스 어댑터를 커넥터 리소스로 도메인에 등록하는 과정에 대한 설명이다. 커넥터 리소스 설정은 리소스 어댑터 ID를 기본으로 크게 Worker Pool, Connection Pool 설정으로 나누어진다.
-
Worker Pool 설정
-
WebAdmin 메인 화면에서 Master Server를 선택한 후 JEUS Master 화면 상단 메뉴에서 [리소스]을 선택한다.
-
기본 설정 메뉴에서 [External Source] >[Connector] 탭을 클릭하면 External Source 설정 화면으로 이동한다.
-
Connector 목록에서 [추가] 버튼을 클릭하면 Connector 추가 화면이 팝업된다. 'Resource Adapter Module Id'에 커넥터 리소스로 등록할 리소스 어댑터 모듈의 ID를 입력하고 필요한 경우 Worker Pool 영역을 설정한 후 [추가] 버튼을 클릭한다.
-
-
Connection Pool 설정
-
WebAdmin 메인 화면에서 Master Server를 선택한 후 JEUS Master 화면 상단 메뉴에서 [리소스]을 선택한다.
-
기본 설정 메뉴에서 [External Source] > [Connector] 탭을 클릭한 후 External Source 설정 화면에 Connector 목록에서 어댑터 ID를 클릭한다.
-
Connector 설정 화면의 Connection Pool 목록에 [추가] 버튼을 클릭하면 Connection Pool 추가 화면이 팝업된다. 해당 화면에서 필요한 Connection Pool 설정값을 입력한 후 [추가] 버튼을 클릭한다.
-
서버에 등록한 정보 반영이 완료되면 결과 메시지가 화면에 표시된다. 메시지가 표시되면 커넥터 리소스 등록 작업이 완료되기는 하나 커넥터 리소스 등록 작업은 동적으로 반영되지는 않으므로 등록한 커넥터 리소스를 사용하기 위해서는 서버를 재기동하고 리소스 어댑터 모듈을 다시 deploy해야 한다.
-