리소스 어댑터
본 장에서는 JEUS에서 제공하는 보안 관리 기능과 리소스 어댑터에 jeus-connector-dd.xml를 추가하는 방법 및 deploy할 때 유의할 사항 등에 대해 설명한다.
실제 리소스 어댑터 자체에 대한 패키징은 JCA 표준 2.0를 기준으로 "21. 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>jakarta.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 인증에 관여하지 않는다. 대신 애플리케이션과 리소스 어댑터 간에 인증 정보를 주고받게 된다. 그 정보는 보통 jakarta.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를 지원하지 않고 있으므로 수동으로 해야 한다.