제4장 리소스 어댑터

내용 목차

4.1. 보안 관리
4.1.1. Connection 인증
4.2. 패키징
4.3. Deploy
4.3.1. SHARED 모드 클래스 로딩
4.3.2. Redeploy
4.4. 리소스 어댑터를 리소스로 등록
4.4.1. WebAdmin 사용

본 장에서는 JEUS에서 제공하는 보안 관리 기능과 리소스 어댑터에 jeus-connector-dd.xml를 추가하는 방법 및 deploy할 때 유의할 사항 등에 대해 설명한다.

참고

실제 리소스 어댑터 자체에 대한 패키징은 JCA 표준 1.6를 기준으로 "20. Packaging Requirements"를 참고한다.

4.1. 보안 관리

본 절에서는 JEUS가 리소스 어댑터의 인증 및 권한 체크와 관련하여 어떤 기능을 제공하는지 설명한다.

4.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(기본값)

      컨테이너에 의한 Connection 인증으로 <res-auth>를 'Container'로 설정한 경우에는 jeus-connector-dd.xml에 사용자명과 패스워드를 설정한다. 이때 패스워드에는 암호화된 값을 사용할 수 있다.

      다음은 패스워드 설정에 대한 예이다.

      {DES}FQrLbQ/D8O1lDVS71L28rw==

      이렇게 설정한 사용자명과 패스워드 정보는 Connection을 새로 생성할 때 리소스 어댑터로 넘겨주는 인증 정보로 사용하게 된다. 만약 사용자가 jeus-connector-dd.xml에 아무런 인증 정보를 설정하지 않았을 경우에는 빈 껍데기의 javax.security.auth.Subject 객체를 리소스 어댑터로 넘겨준다.

      참고

      패스워드 암호화에 대한 자세한 사항은 JEUS Domain 안내서”의 “제7장 Security 관리”를 참고한다.

    • Application

      <res-auth>를 'Application'로 설정한 경우에는 애플리케이션이 Connection을 요청할 때 JEUS는 Connection 인증에 관여하지 않는다. 대신 애플리케이션과 리소스 어댑터 간에 인증 정보를 주고받게 된다. 그 정보는 보통 javax.resource.spi.ConnectionRequestInfo를 구현한 리소스 어댑터의 클래스를 이용하게 된다.

4.2. 패키징

리소스 어댑터를 JEUS에 deploy하기 위해서는 ra.xml 이외에 JEUS에서 필요로 하는 별도의 DD(Deployment Descriptor)로 jeus-connector-dd.xml 파일을 생성해야 한다.

이 파일에는 다음과 같은 내용이 설정된다.

설정한 후 RAR 파일의 META-INF 디렉터리에 jeus-connector-dd.xml을 위치시킨다.

xxx.rar/META-INF

4.3. Deploy

리소스 어댑터는 다음과 같이 2가지 형태로 deploy가 가능하다.

  • 독립적인(Standalone) 모듈 : JEUS의 모든 애플리케이션에서 사용할 수 있다.

  • Java EE 애플리케이션(EAR)에 속한 모듈 : EAR 내에서만 사용할 수 있다.

    참고

    JEUS에서 애플리케이션을 deploy하는 방법에 관한 자세한 사항은 "JEUS Applications & Deployment 안내서"를 참고한다.

4.3.1. SHARED 모드 클래스 로딩

JCA 표준상 독립적인(Standalone) 모듈로 deploy하는 리소스 어댑터는 모든 애플리케이션이 사용 가능해야 하기 때문에 JEUS에서는 SHARED 모드의 클래스 로딩 방식을 지원한다. 이를 위해서 리소스 어댑터는 사용자의 설정에 관계없이 항상 SHARED 모드로 deploy한다. 이때 리소스 어댑터를 사용할 애플리케이션도 반드시 SHARED 모드로 deploy해야 한다.

참고

1. SHARED 모드의 클래스 로딩 방식의 자세한 사항은 JEUS Server 안내서”의 “1.4. 클래스 로더의 구조”를 참고한다.

2. deploy하는 방법의 자세한 사항은 "JEUS Applications & Deployment 안내서"를 참고한다.

4.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.4. 리소스 어댑터를 리소스로 등록

리소스 어댑터 모듈은 하나의 독립된 애플리케이션이라기보다는 모든 애플리케이션이 공유해서 사용하는 드라이버와 같은 개념으로 이해될 수 있다. 그와 같은 관점에서 JEUS는 리소스 어댑터 모듈을 도메인에 커넥터 리소스로서 등록하여 사용할 수 있는 기능을 제공한다.

리소스 어댑터 모듈을 도메인에 커넥터 리소스로서 등록하는 작업은 WebAdmin을 통해서 이루어지며 이때 도메인에 등록되는 리소스 어댑터의 설정 정보는 리소스 어댑터 모듈의 jeus-connector-dd.xml의 설정 정보와 매유 유사한 형태이다.

최종적으로 리소스 어댑터는 다음과 같은 설정 우선순위가 적용되어 deploy된다.

  1. WebAdmin 설정

    jeus-connector-dd.xml 설정보다 우선 순위가 높다. 이 설정이 존재하는 경우 리소스 어댑터는 deploy 후 도메인에서 커넥터 리소스로서 사용될 수 있다.

  2. jeus-connector-dd.xml 설정

    WebAdmin을 통한 리소스 어댑터 설정이 없는 경우 적용된다. 리소스 어댑터는 본래의 모듈로서의 역할만을 수행한다.

4.4.1. WebAdmin 사용

다음은 WebAdmin을 사용하여 리소스 어댑터를 커넥터 리소스로 도메인에 등록하는 과정에 대한 설명이다.

  1. WebAdmin의 왼쪽 메뉴에서 [Resources] > [External Source]를 선택하면 External Source 화면으로 이동한다. 왼쪽 메뉴 하단에 [LOCK & EDIT] 버튼을 클릭한 후 Connector 목록에서 [ADD] 버튼을 클릭하면 커넥터 리소스 설정화면으로 이동한다.

  2. 커넥터 리소스 설정은 리소스 어댑터 ID를 기본으로 크게 Worker Pool, Connection Pool 설정으로 나누어진다. 우선 'Resource Adapter Module Id'에 커넥터 리소스로 등록할 리소스 어댑터 모듈의 ID를 입력하고 필요한 경우 Worker Pool 설정을 조정한 후 [확인] 버튼을 클릭한다.

  3. Connection Pool 설정이 필요하다면 커넥터 리소스로 추가한 리소스 어댑터의 ID를 클릭한다.

  4. 다시 커넥터 리소스 설정화면으로 이동하는데, 이때 Connection Pool 목록의 [ADD] 버튼을 클릭하면 Connection Pool 설정을 추가할 수 있다.

  5. 필요한 Connection Pool 설정값을 입력한 후 [확인] 버튼을 클릭한다.

  6. 커넥터 리소스의 도메인 등록을 최종 반영하기 위해 [Activate Changes] 버튼을 클릭한다.

  7. 서버에 등록한 정보 반영이 완료되면 결과 메시지가 화면에 표시된다.

    메시지가 표시되면 커넥터 리소스 등록 작업이 완료되기는 하나 커넥터 리소스 등록 작업은 동적으로 반영되지는 않으므로 등록한 커넥터 리소스를 사용하기 위해서는 서버를 재기동하고 리소스 어댑터 모듈을 다시 deploy해야 한다.