소개

본 장에서는 JCA 스펙과 WebTJCA에 대해서 소개한다.

1. 개요

WebTJCA는 J2EE의 JCA(J2EE Connector Architecture) 스펙에서 리소스 어댑터 역할을 하는 라이브러리 패키지이다. 사용자는 이 라이브러리를 통해서 Tmax와 통신할 수 있다.

기존 WebT는 JEUS를 통하거나 단일 애플리케이션으로만 동작하도록 제공하여 개발자는 특정한 설정과 API를 이용하여 Tmax와 통신하였다.

WebTJCA는 JCA 스펙을 구현하여 사용자가 스펙만 알고 있으면 WebT를 알지 못해도 Tmax와의 서비스 요청이 가능하다.

2. JCA

JCA는 ERP(Enterprise Resource Planning)나 레거시 정보 시스템 등을 포함하는 비 Web Application Server(WAS, 이하 웹 애플리케이션 서버) 환경 서비스(Enterprise Information System, 이하 EIS)와의 연동을 위해 정의된 표준 프레임워크(Framework)이다.

JCA 이전까지는 EIS와 연동을 하기 위해서 각 벤더의 EIS 및 웹 애플리케이션 서버마다 별도의 인터페이스를 구현하는 커스텀 드라이버를 구현하여 사용했다. 따라서 특정 제품간에 연동 자체가 불가능해지는 것을 제외하더라도 각각의 드라이버에 따라 다양한 인터페이스와 개발 방식을 따라야 하는 문제가 있었다.

N * M 문제라고 불려지는 이 상황은 기본적으로 코드 레벨을 수정하지 않으면 연동이 불가능하고, 이로 인하여 J2EE 환경의 이식성과 확장성에 심각한 제약을 가져온다. 이 문제를 해결하기 위하여 JCA 스펙에서 리소스 어댑터와 웹 애플리케이션 서버 사이의 인터페이스와 상호작용을 확정하였다. 그리고 표준에 맞는 웹 애플리케이션 서버와 리소스 어댑터라면 코드 레벨을 수정하지 않아도 상호 호환되어 동작하는 것을 목표로 발전되었다. 각 EIS 벤더의 Custom 드라이버를 표준화된 구조(Architecture)로 대체함으로써 이전에 발생하였던 N * M 연동 문제를 N + M 으로 줄일 수 있게 되었다.

Connector 1.5 스펙은 http://java.sun.com/j2ee/connector/download.html에서 받을 수 있다.

2.1. JCA 구조

다음은 JCA 구조에 대한 그림이다.

figure jca architecture
JCA 구조
  • Outbound 통신

    웹 애플리케이션 서버에서 EIS로 서비스를 요청하는 것을 Outbound 통신이라고 한다.

    JCA 스펙은 애플리케이션 개발자에게 CCI(Common Client Interface) 스펙을 제공하여 개발자는 EIS와 연계된 애플리케이션을 개발할 수 있다. 리소스 어댑터는 CCI, SPI 스펙을 구현하여 제공해야 한다.

  • Inbound 통신

    EIS에서 웹 애플리케이션 서버로 서비스 요청을 하는 것을 Inbound 통신이라고 한다.

    JCA 1.5 스펙에서는 웹 애플리케이션 서버에서 EIS로 요청하는 서비스뿐만 아니라 EIS에서 웹 애플리케이션 서버로도 서비스를 요청할 수 있는 스펙을 제공한다.

    다음은 Inbound 통신 구조이다.

    figure inbound
    Inbound 통신

2.2. WebTJCA

WebTJCA는 JCA 스펙을 구현한 라이브러리로 WebT*.jar로 배포한다. 이 라이브러리에는 JCA 스펙 구현 부분뿐만 아니라 기존 WebT에서 사용하던 라이브러리도 함께 포함되어 있어 기존 WebT도 사용 가능하다. WebTJCA는 Outbound, Inbound 통신을 모두 지원한다.

  • Outbound 통신

    개발자는 WebT*.jar를 사용하고 ra.xml과 웹 애플리케이션 서버 업체의 고유한 설정을 이용하여 리소스 어댑터를 생성하여 웹 애플리케이션 서버에 deploy해야 한다.

    애플리케이션 개발자는 CCI를 이용하여 서비스 요청을 하는 애플리케이션을 작성할 수 있다.

  • Inbound 통신

    개발자는 WebT*.jar를 사용하고 ra.xml과 웹 애플리케이션 서버 업체의 고유한 설정을 이용하여 리소스 어댑터 를 생성하여 웹 애플리케이션 서버에 deploy해야 한다.

    애플리케이션 개발자는 Message Driven Bean을 작성하여 메시지 수신 부분에서 실제 요청할 EJB를 요청한다.