메인 컨텐츠로 가기

developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관 보기.

developerWorks에 처음 로그인하면 developerWorks프로파일이 생성됩니다.귀하의 프로파일에서 동의하신 내용이 공개되지만 이 사항은 언제든지 변경 가능합니다. 귀하의 성명(숨김으로 체크되어 있어도 표시됩니다)과 디스플레이 이름은 게시한 컨텐츠나 사이트 엑세스시 표시됩니다.

모든 정보가 안전하게 전송되었습니다.

  • 닫기 [x]

처음 developerWorks에 로그인할 때 프로파일이 작성되므로, 이를 위해 디스플레이 이름을 선택해야 합니다. 선택하신 디스플레이 이름은 developerWorks에 게시한 컨텐츠에 표시됩니다.

3글자 이상 31글자 이하의 길이로 사용 가능합니다. dW커뮤니티 내에서는 보안상 이메일주소를 제외한 다른 이름을 지정하셔야 합니다.

developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관 보기.

모든 정보가 안전하게 전송되었습니다.

  • 닫기 [x]

IBM WebSphere Developer Technical Journal: Service Component Architecture로 SOA 솔루션 구현하기 -- Part 3 (한글)

SCA 모듈을 반입/반출과 통합하기

Roland Barcia, Certified IT Specialist, EMC
Roland Barcia , Certified IT Specialist, IBM
Jeff Brent, Advisory Software Engineer, EMC
Jeff Brent , Advisory Software Engineer, IBM

요약:  Service Component Architecture (SCA)와 IBM® WebSphere® Integration Developer를 사용하여 다양한 컴포넌트에서 수직적인 통합 솔루션을 구현해 봅시다.

원문 게재일:  2006 년 5 월 29 일
난이도:  중급
페이지뷰:  954 회
의견:  


머리말

Part 1에서는 SCA가 무엇인지에 대한 개요와 함께 통합 솔루션을 구현하고 조합하는 프로그래밍 모델로서 Service Component Architecture (SCA)를 소개했다. 관련 기술에 대한 정의도 함께 내렸다. Part 2에서는 레퍼런스와 지정자에 대해 논했으며 다양한 컴포넌트를 연결하여 SCA 모듈을 만드는 방법을 설명했다. Part 3에서는 SCA 모듈을 구현할 때의 주요 이점들을 보다 자세히 살펴볼 것이다. 다양한 컴포넌트로부터 통합 솔루션을 수직적으로 구현하는 기능이다.

시스템이 커지고 복잡해지면서 다양한 솔루션들의 수평적 통합에 대한 필요가 대두되었다. 한 조직 내의 다양한 부서들은 자신들만의 솔루션을 구현해야 하고, 나중이 이들을 통합해야 한다. 아니면 다른 비즈니스 파트너들이 그러한 솔루션들을 인터넷을 통해 통합해야 할 것이다. 그림 1은 수평적 통합의 예이다.


그림 1. 시스템 통합하기
Figure 1. Integrating systems

우리는 Part 1에서 SCA 반입과 반출을 정의했다. 여기에서는 보다 자세히 설명하도록 하겠다. 그리고 예제를 계속해서 구현할 생각이다. 특히, SCA 바인딩을 사용한 SCA 반입과 반출에 초점을 맞출 것이다. SCA 바인딩은 하나의 모듈에서 SCA 컴포넌트를 실행시켜 SCA 프로그래밍 모델을 사용하여 다른 모듈에 있는 SCA 컴포넌트들과 통신하도록 한다.

IBM WebSphere Integration Developer V6.0.1으로 업그레이드 했다. 이것으로 IBM WebSphere Process Server V6.0.1 또는 IBM WebSphere Enterprise Service Bus V6.0.1 솔루션들을 하나로 묶는 통합 솔루션을 구현할 수 있다. 이 새로운 버전을 사용하면 다양한 엔터프라이즈 서비스 버스(ESB) 매체를 구현에 필요한 지원을 추가할 수 있다. (WebSphere ESB 런타임은 WebSphere Process Server의 일부이다. - 참고자료)


반입과 반출 리뷰

Part 1에서 언급했듯이, 모듈-모듈 그리고 모듈-외부 서비스 호출에 사용되는 메커니즘을 각각 반입 반출이라고 한다. 반입과 반출은 모듈의 관점에서 표현된다. 독립형 컴포넌트 번들로서 특정 비즈니스 기능을 수행한다.

  • 모듈이 또 다른 엔터티(외부 서비스 또는 기타 모듈)에게 비즈니스 기능을 호출하는 기능을 제공하려고 할 때, 이 모듈은 그러한 기능을 반출한다. 반출은 또한 이러한 서비스들이 많은 다양한 전송 프로토콜을 통해 사용될 수 있도록 하는 기능을 제공한다. 반출은 모듈 내에 있는 특정 컴포넌트와 연관되어 있다.

  • 모듈이 또 다른 엔터티(외부 서비스나 모듈)의 기능을 활용하고 싶을 때 모듈은 그러한 기능을 반입한다. 반입은 다양한 전송 프로토콜들을 통해서 서비스 공급자와 인터랙팅 하는 기능을 제공한다.

그림 2는 반입과 반출이 있는 SCA 어셈블리이다. 이 그림은 어떻게 반출이 외부 세계에서의 엔트리 포인트가 되는지를 보여주고 있다. 반면 반출은 모듈 밖에서 호출할 수 있다.


그림 2. SCA 반입과 반출
Figure 2. SCA imports and exports

반입과 반출을 통해서 SCA 컴포넌트를 호출할 때 매개변수들은 값에 따라 전달된다. 매개변수들은 구조에서 또 다른 것으로 복사된다. 그림 3은 서로 통신하는 두 개의 SCA 모듈이다. SCA 반입이 SCA 반출과 매치된다.


그림 3. SCA 반입과 반출
Figure 3. SCA imports and exports

SCA 컴포넌트들을 이어주는 와이어는 인프라 레벨 코드에서 대부분 가져온다. 예를 들어, 와이어들을 동기식 또는 비동기식으로 정의할 수 있고 일방 또는 요청-응답 연산으로 정의할 수 있다. 컴포넌트들 간 트랜잭션 작동을 정의할 수 있다. SCA는 인프라 상세를 핸들한다.

반입과 반출은 JMS, Enterprise JavaBeans (EJB), 웹 서비스 같은 기술들로도 연결될 수 있다.(그림 4) 이러한 기술들로 묶어주면 웹 서비스 클라이언트는 SCA 모듈을 호출할 수 있고 또는 SCA 모듈이 SCA 프로그래밍 모델을 사용하여 기존 EJB 모듈을 호출할 수 있다. (EJB는 자바 인터페이스에 의해 정의되기 때문에 EJB 반입을 사용할 때에는 제한이 있다. 따라서 BPEL의 경우 EJB 반입을 호출할 수 없다.)


그림 4. 다른 기술들과의 반입과 반출
Figure 4. Imports and exports with other technologies

반입/반출 바인딩

서비스 지향 아키텍처의 열쇠는 많은 바인딩 옵션들과, 산업 표준을 사용하여 서비스를 호출할 수 있는 기능을 갖춘 서비스들을 노출하는 것이다. WebSphere Process Server와 WebSphere ESB는 다양한 많은 바인딩 유형들을 제공하고 있다. 바인딩 유형들은 Assembly Editor를 사용하여 반입과 반출과 연결된다. 오늘날에는 다섯 개의 기본 바인딩 유형들이 있다.

  1. SCA - 모듈들 간 SCA 호출에 사용되는 바인딩. 이 바인딩 유형은 설정이 가장 단순하며 모듈들 간 완벽한 통합을 자랑한다.

  2. Web service - 기존 웹 서비스들을 호출하고 모듈 내에서 기능을 웹 서비스로서 노출하는 기능을 제공한다. 기본적으로, 웹 서비스는 doc-lit 래핑 스타일을 활용하고 HTTP와 JMS 프로토콜과 함께 사용될 수 있다. 웹 서비스 바인딩 기능들은 WebSphere Application Server 베이스 웹 서비스 엔진에서 파생되며 이것과 같은 한계점을 가진다.

  3. Enterprise Information Systems (EIS) - WebSphere JCA Adapter를 통해 기존 EIS 시스템과 통합하는 기능을 제공한다. 이러한 바인딩 유형에 사용할 수 있는 설정은 목표(SAP, JDBC Adapter)에 따라 다양하다. Enterprise Data Discovery 서비스에는 비즈니스 객체와 반입과 반출 바인딩의 생성을 촉진하는 각 어댑터가 제공된다.

  4. Java Messaging Service - 메시징 프로토콜에 JMS를 사용하는 엔드포인트들과 통합하는 기능을 제공한다. 이 경우 반입과 반출은 데이터 바인딩을 사용하여 정확한 비즈니스 객체/연산 조합이 된다.

  5. Stateless session bean - 자바 인터페이스를 사용하여 STATELESS 세션 빈들과 통합하는 기능을 제공한다. 이 기능은 자바 레퍼런스를 자바 인터페이스와 연결해야지만 사용할 수 있다. WSDL 레퍼런스를 사용하는 컴포넌트들은 STATELESS 세션 빈에서 제공하는 자바 인터페이스로 연결할 때 WebSphere Integration Developer에는 허용되지 않는다. 이 경우에는 WSDL 인터페이스와 자바 인터페이스를 가진 중간 컴포넌트가 필요하다.

이 글에서는 SCA 바인딩에 대해 자세히 설명할 것이다. 후속 시리즈에서는 다른 바인딩들에 대해 다룰 것이다.


SCA 바인딩

SCA 바인딩은 WebSphere Process Server 또는 WebSphere ESB 환경에서 모듈 영역들을 통해서 일관성 있게 통신하는 수단을 제공한다. SCA 바인딩에 사용되는 기저의 프로토콜은 클라이언트 모듈에 의해 사용되는 호출 패턴에 기반하여 자동으로 선택된다.

SCA는 네 가지 호출 패턴을 제공한다.

  • 동기식 - 클라이언트가 요청을 내리고 응답을 기다린다.
  • 비동기식 일방향 - 클라이언트가 요청을 내리지만 응답은 받을 수 없다.
  • 비동기식 응답 지연 - 클라이언트가 요청을 내리고 나중에 클라이언트에 의해 응답이 요청된다.
  • 비동기식 콜백 - 클라이언트가 요청을 내리고, 타겟은 클라이언트에 의해 구현된 서비스를 응답과 함께 호출한다.

WebSphere Process Server 또는 WebSphere ESB SCA 런타임은 기저의 시스템 통합 버스(비동기식 호출 패턴용)나 RMI/IIOP (동기식 호출 패턴용)를 사용할 때를 결정한다.

SCA 바인딩 기능은 반출에 의해 움직인다. SCA 모듈을 WebSphere Process Server에 설치하는 과정 중에 필요한 지원 생성물들이 만들어 진다.

  • 비동기식 호출의 경우 셀 범위의 서비스 통합 버스(SIBus) 목적지는 SCA.SYSTEM.<cell name>에 만들어 진다.
  • 동기식 통신의 경우, 모듈 세션 빈을 가리키는 셀 범위의 네임 스페이스가 만들어 진다. 모듈 세션 빈은 STATELESS 세션 빈으로서 모듈이 다목적으로 사용한다. 작업 단위, 보안 설정 등에 사용한다.

반입과 반출 파일들은 함께 작동한다. 이 상황에서 반입 파일에는 반출에 대한 중요한 정보가 포함되어 있으며 어떤 클라이언트라도 목표 서비스를 반입하는데 도움이 된다.

.import 파일에 있는 정보와 호출 패턴(sync 또는 async)을 사용하면서, SCA 런타임은 SIBus 목적지를 사용할 지 아니면 WebSphere 네임 스페이스 바인딩을 사용할지를 구분한다.

많은 SIBus(참고자료) 목적지는 WebSphere Process Server와 WebSphere ESB가 제공하는 다양한 비동기식 호출 유형들을 지원하기 위해 만들어진다. 목적지는 모듈, 컴포넌트, 반입, 반출을 위해 만들어진다. 각 목적지와 포워드 라우팅 경로는 이 메시지가 정확한 목표 서비스로 라우팅 되고 있는지를 보증한다.


그림 5. SIBus 목적지
Figure 5. SIBus destinations

게다가 네임 스페이스 바인딩은 모든 SCA 반출을 위해 모듈 내에 만들어진다.(그림 6) 이 바인딩은 셀 범위에서 만들어지며 다음과 같은 네이밍 패턴을 따른다.

sca_ + <Module Name> + _export_ + <ExportName>.


그림 6. 네임 스페이스 바인딩
Figure 6. Name space bindings

이러한 두 개의 생성물에 대한 범위가 주어지면 SCA 반출 바인딩은 모든 셀을 통해서 볼 수 있다. 클라이언트 모듈과 목표 모듈은 셀에 있는 어떤 WebSphere Process Server 또는 WebSphere ESB 서버에라도 배치될 수 있고 통신할 수 있다.


반입과 지정자

SCA 바인딩을 가진 반입은 또 다른 모듈에서는 SCA 컴포넌트의 논리적 표현이다. 그림 7에서와 같은 방식으로 반입을 가리키는 레퍼런스에 대해 지정자를 정의할 수 있다.


그림 7. 지정자 추가하기
Figure 7. Add qualifier

반출에는 어떤 지정자도 포함되지 않는다. 대신 반출하는 컴포넌트에 지정자를 둔다.(Part 2 참조.)


라이브러리 프로젝트

모듈 바운더리를 교차할 때 콘트랙트가 공유된다는 사실을 고려해야 한다. 애플리케이션은 인터페이스들을 통해서 통신하고 데이터 객체들을 서로 전달한다. 이것이 의미하는 것은 인터페이스와 비즈니스 객체들은 시각적으로 보여지거나 모듈과 함께 배치되어야 한다. 모든 모듈에 있는 같은 인터페이스와 데이터 객체들에 대해 중복 정의를 줄이기 위해 WebSphere Integration Developer에는 특별한 SCA 라이브러리 모듈이 포함된다. 이것은 자바 JAR 파일이 EAR 파일에서 의존적인 JAR이 될 수 있는 것 처럼 SCA 모듈에 추가될 수 있다. (사실, 바로 이것이 WebSphere Integration Developer가 라이브러리를 취급하는 방식이다.) 이로서 한 위치에서 인터페이스와 비즈니스 객체들을 정의할 수 있고 모든 모듈들이 이들을 공유하도록 할 수 있다. 나중에 SCA 라이브러리 예제를 보도록 하자.

샘플 애플리케이션

계속해서 Credit Approval 애플리케이션 예제를 사용하도록 하겠다. 이 글에서는 Credit History와 Credit Agency 모듈을 개별 모듈로 노출하여 반출과 반입을 설정하는 방법을 설명하겠다. 모듈들 간 SCA 라이브러리들을 공유하는 방법도 설명하겠다.

예제를 실행하기 위해서는 WebSphere Integration Developer V6.0.1이 머신에 설치되어야 한다.(참고자료) 또한 이 글에 필요한 것들도 다운로드 하기 바란다. 두 개의 SCA 모듈(Credit Agency와 Credit History 모듈)과 공유 인터페이스와 비즈니스 객체를 가진 SCA 라이브러리가 필요하다.

  1. 작업공간을 설정한다.

    1. WebSphere Integration Developer를 시작한다. 새로운 작업공간을 열고 “웰컴” 스크린을 닫는다.

    2. 다운로드 한 Project Interchange를 반입해야 한다. Project Interchange를 반입하려면 Business Integration 뷰에서 오른쪽 클릭하고 Import를 선택한다.(그림 8)


      그림 8. Eclipse Import 마법사
      Figure 8. Eclipse Import wizard
    3. Project Interchange를 선택한 다음 Next를 누른다.(그림 9)


      그림 9. Project Interchange 반입하기
      Figure 9. Import Project Interchange
    4. 다운로드 파일 <Download_root>/SCAArticlePart3.zip을 선택한 다음 Select AllFinish를 클릭한다.(그림 10)


      그림 10. Select All
      Figure 10. Select All
  2. 반입한 것들을 검사한다.

    1. Business Integration 퍼스펙티브에서 CreditApprovalLibrary를 확장한다. 앞서 언급했듯이, SCA 라이브러리는 모듈들 간 공유되는 비즈니스 객체들과 인터페이스들을 보유하는 편리한 방법이다. 그림 11은 Business Integration View에 있는 CreditApprovalLibrary이다.


      그림 11. CreditApprovalLibrary
      Figure 11. CreditApprovalLibrary

      New => Library를 선택하여 Business Integration 퍼스펙티브 내의 컨텍스트 메뉴에서 Library 프로젝트를 쉽게 생성할 수 있다. 이 경우 우리는 인터페이스와 DataObjects를 이미 제공했다.

    2. CreditAgencySCAModuleCreditHistory 모듈을 확장한다.

    3. 각 모듈의 어셈블리 에디터를 연다. Part 2의 예제에서 여러 컴포넌트를 가진 하나의 모듈이 있었다. 이 예제에서 개별 솔루션을 모사하기 위해서 구현을 나누었다. 일반적으로 SCA 모듈은 여러 컴포넌트를 가진 완벽한 솔루션을 갖고 있다. 이 글의 정황 속에서, 이들은 다른 개발 그룹들(다양한 매니저, 스케줄, 프로젝트 플랜)이 개발한 완벽한 솔루션이라고 가정한다.


      그림 12. SCA 모듈
      Figure 12. SCA modules
    4. SCA 모듈들은 SCA 라이브러리 모듈에 의존한다. 이러한 의존성은 Dependency Editor에서 볼 수 있다. 각 SCA 모듈을 한번에 하나씩 오른쪽 클릭하고 Open Dependency Editor를 선택한다.(그림 13)


      그림 13. Dependency Editor 열기
      Figure 13. Opening the Dependency Editor
    5. Dependency Editor를 검사하여 CreditApprovalLibrary가 모듈들 간 공유되고 있는지를 확인하라. CreditApprovalLibrary가 그림 14 처럼 디스플레이 할 것이다.


      그림 14. CreditApprovalLibrary
      Figure 14. CreditApprovalLibrary
    6. 에디터를 닫는다.

SCA 반출

각 모듈을 위해 SCA를 반출하여 모듈이 다른 SCA 모듈에서 호출될 수 있도록 한다.

  1. CreditAgencySCAModule용 반출을 만든다.

    1. WebSphere Integration Developer에서 CreditAgencySCAModule어셈블리 에디터를 연다. Business Integration 뷰에서 CreditAgencySCAModule을 확장하고 CreditAgencySCAModule Assembly Editor 아이콘을 더블 클릭한다.(그림 15)


      그림 15. Assembly Editor 열기
      Figure 15. Open Assembly Editor
    2. 반출을 만들려면 CreditApproval 컴포넌트를 오른쪽 클릭하여 Export =>SCA Binding 을 선택한다.(그림 16)


      그림 16. SCA 바인딩을 가진 SCA 반출 생성하기
      Figure 16. Create an SCA export with SCA binding
    3. CreditAgency 컴포넌트와 SCA 바인딩용 반출은 자동으로 생성된다.(그림 17)


      그림 17. SCA 반출
      Figure 17. SCA export
    4. 반출이 어셈블리 에디터에서 선택되는 동안 Properties 뷰를 보면서 반출의 속성을 확인한다. Details 탭에서 SCA 연산을 볼 수 있다.(그림 18)


      그림 18. SCA 반출 상세
      Figure 18. SCA export details
    5. Qualifiers 탭으로 전환한다.(그림 19) 어떤 지정자도 추가할 수 없다는 것을 알게 된다. 반출은 컴포넌트가 가리키는 지정자만 사용할 수 있다.


      그림 19. 반출용 지정자 없음
      Figure 19. No qualifiers for exports
    6. 어셈블리 에디터를 저장한 후 닫는다.

  2. CreditHistorySCAModule용 반출을 만든다.

    1. CreditHistorySCAModule용 어셈블리 에디터를 연다.

    2. SCA 바인딩으로 반출을 생성한다.(그림 20)


      그림 20. SCA 반출
      Figure 20. SCA export
    3. 에디터를 저장한 후 닫는다.


Credit Approval 모듈 만들기

이제 우리는 반입을 통해 다른 두 개의 솔루션을 호출 할 CreditApprovalModule을 만들 것이다.

  1. 새로운 SCA 모듈을 만든다.

    1. Business Integration 뷰를 오른쪽 클릭하고 New => Module을 선택한다.

    2. CreditApprovalSCAModule로 모듈 이름을 정한다.(그림 21) Use Default가 체크되었는지 확인하고 Finish를 누른다.


      그림 21. 새로운 SCA 모듈
      Figure 21. New SCA module
    3. 새롭게 만들어진 CreditApprovalSCAModule을 오른쪽 클릭하고 Open Dependency Editor를 선택한다.(그림 22)


      그림 22. Dependency Editor 열기
      Figure 22. Open Dependency Editor
    4. CreditApproval 모듈은 다른 두 개의 모듈을 호출할 것이기 때문에 인터페이스와 비즈니스 객체들을 공유해야 한다. 우리는 이들을 저장하는 라이브러리를 사용하고 있다는 것을 기억하라. Dependency Editor에서 Libraries 섹션에서 Add를 선택한다.(그림 23)


      그림 23. Library를 SCA 모듈에 추가하기
      Figure 23. Add Library to SCA module
    5. CreditApprovalLibrary를 선택하고 OK를 누른다.

  2. 이제는 호출 컴포넌트를 만들 것이다. 간단한 자바 기반 컴포넌트를 사용할 예정이다. 앞으로의 글에서는 다양한 컴포넌트와 모듈을 호출하는 BPEL 플로우를 보여 줄 예정이다.

    1. CreditApprovalSCAModule Assembly 아이콘을 더블 클릭하여 CreditApprovalSCAModule 어셈블리 에디터를 연다.(그림 24)


      그림 24. SCA Assembly Editor 열기
      Figure 24. Open SCA Assembly Editor
    2. SCA 컴포넌트를 Component icon(그림 25) 어셈블리 에디터로 드래그한다.


      그림 25. SCA 컴포넌트를 Assembly Editor로 드래그 하기
      Figure 25. Drag an SCA component onto the Assembly Editor
    3. 텍스트를 클릭하고 CreditApproval로 재명명 한다.(그림 26)


      그림 26. 컴포넌트 이름 변경하기
      Figure 26. Change component name
  3. 이제 컴포넌트에 인터페이스를 추가한다. Library 프로젝트에 인터페이스를 저장했다.

    1. 컴포넌트에 있는 Interface 아이콘을 클릭하고(그림 27) 메뉴에서 CreditRequest를 선택한다.


      그림 27. SCA 컴포넌트에 인터페이스 추가하기
      Figure 27. Add Interface to SCA component
    2. OK를 누른다.

지금가지 SCA 컴포넌트를 만들었다. 이 SCA 컴포넌트가 다른 두 개의 모듈들을 반입을 통해서 호출할 것이다.


반입 생성하기

반출을 완료했으니 이제 SCA 반입을 생성할 준비가 되었다. 우리가 호출하려는 각 반출에 대해 SCA 반입을 만들어야 한다.

  • CreditAgency 모듈 뿐만 아니라 CreditHistory를 호출한다.
  • CreditHistory 반입용 지정자를 업데이트 하여 컴포넌트를 비동기식으로 호출할 때 적절한 트랜잭션 작동을 핸들한다.
  • History 요청은 시간이 걸린다는 것을 가정하고 히스토리 요청을 비동기식으로 내린다.
  • 요청 후에 CreditAgency 모듈을 동기식으로 호출한다.
  • 신용 점수를 얻은 후에 History Response를 받는다.
  1. 먼저, CreditAgency 호출용 반입을 생성한다.

    1. 어셈블리 에디터상의 팔레트에서 import 아이콘을 드래그 한다.(그림 28)


      그림 28. import 아이콘 드래그
      Figure 28. Drag an import onto Assembly Editor
    2. 텍스트를 클릭하고 CreditAgencyImport를 입력한다.(그림 29)


      그림 29. 반입 재명명
      Figure 29. Rename import
  2. 적절한 인터페이스를 추가한다. 이 경우, 반입용 인터페이스는 CreditAgencySCAModule에 있는 상응 반출에 대한 반입과 매치해야 한다.

    Interface 아이콘을 클릭하고(그림 30) CreditAgency 인터페이스를 선택한다.


    그림 30. 반입 추가하기
    Figure 30. Add import to SCA import
  3. 적절한 바인딩(이 경우 SCA 바인딩)을 추가한다.

    1. 반입을 오른쪽 클릭하고 Generate Binding => SCA Binding을 선택한다.(그림 31)


      그림 31. SCA 바인딩 추가하기
      Figure 31. Add SCA binding to Import
    2. 어셈블리 에디터에 반입을 강조하고 Properties 뷰에 가서 Binding 섹션을 선택한다.(그림 32) Browse를 클릭한다.


      그림 32. 반출용 브라우저
      Figure 32. Browse for export
    3. CreditAgencyExport(그림 33)를 선택한다.


      그림 33. 반출 선택하기
      Figure 33. Select export
  4. CreditApproval 컴포넌트를 CreditAgencyImport로 연결해야 한다.

    1. 어셈블리 에디터에서 CreditApproval 컴포넌트를 선택하여 wire를 CreditAgencyImport로 드래그한다.


      그림 34. SCA 컴포넌트를 SCA 반입으로 연결하기
      Figure 34. Wire SCA component to SCA import
    2. 다이얼로그 박스에서 OK를 누르고 CreditApproval 컴포넌트에 대한 레퍼런스를 만든다.(그림 35, Part 2 참조.)


      그림 35. 레퍼런스 생성 확인
      Figure 35. Confirm reference creation
    3. 에디터를 저장하고 열어둔다. 아래 그림은 연결된 컴포넌트의 마지막 결과이다.


      그림 36. 연결된 SCA 모듈
      Figure 36. Wired SCA module
  5. 이제는 CreditHistoryModule용 반입을 만들 것이다.

    1. 전과 같이 또 다른 import를 어셈블리 에디터로 드래그 하여 CreditHistoryImport라고 이름을 짓는다.

    2. CreditHistory 인터페이스를 반입에 추가한다.(그림 37)


      그림 37. Credit History 인터페이스 추가하기
      Figure 37. Add Credit History Interface
    3. SCA 바인딩을 생성하고 CreditApproval을 CreditHistoryImport로 연결한다.


      그림 38. 마지막 결과
      Figure 38. Final result

Credit History 컴포넌트가 조금 더 길게 걸릴 것으로 가정하여 History를 얻기 위해 비동기식 요청 먼저 시작하고 나중에 응답을 검색할 것이다. CreditHistory가 실행되는 동안 CreditAgency 모듈에서 Credit Score를 얻을 것이다. 그런 다음, CreditHistory에서 응답을 받는다. "서비스"에 맞는 정확한 SCA API를 사용함으로써 Credit History 모듈을 비동기식으로 호출 할 수 있다. 이 경우 응답 지연 호출을 사용할 것이다.


구현 생성하기

  1. 이제 CreditApproval 컴포넌트용 구현을 만들 것이다. 우리 예제에서는 간단한 자바 컴포넌트를 사용하기로 한다.

    1. 어셈블리 에디터에서 CreditApproval 컴포넌트를 오른쪽 클릭하고 Generate Implementation => Java를 선택한다.


      그림 39. 자바 구현 생성하기
      Figure 39. Generate Java implementation
    2. 이 클래스를 디폴트 패키지에 둔다.(그림 40)


      그림 40. 디폴트 패키지
      Figure 40. Default package
    3. Implement As... 다이얼로그에서 Yes를 선택하여 매칭되는 자바 인터페이스를 만든다. 로컬 자바 클라이언트를 나중에 추가하게 될 경우이다.(그림 41)


      그림 41. 로컬 자바 클라이언트용 자바 인터페이스 만들기
      Figure 41. Create Java Interface for local Java clients
  2. 이제 구현을 코딩 할 것이다.

    1. 구현 클래스가 자바 에디터에서 열려있어야 한다. 자바 에디터에서 보면 알겠지만 WebSphere Integration Developer는 모듈 어셈블리를 검사하여 파트너들을 얻는 편리한 헬퍼를 추가했다. 자바 클래스를 먼저 만들었다면 이러한 메소드는 존재하지 않는다.

      public CreditAgency locateService_CreditAgencyPartner() {
      	return (CreditAgency) ServiceManager.INSTANCE
      			.locateService("CreditAgencyPartner");
      }
      
      public CreditHistory locateService_CreditHistoryPartner() {
      	return (CreditHistory) ServiceManager.INSTANCE
      			.locateService("CreditHistoryPartner");
      }

    2. calulateCreditScore 메소드에 있는 (<download_root>/SCAArticleSeries3/codeSnippet1.txt에서) 코드를 붙인다. 비동기식 호출 패턴은 볼드체로 강조되어 있다.

      ServiceManager serviceManager = new ServiceManager();
      
      // create credit rating return data object using the BO factory
      BOFactory bof =
      (BOFactory)serviceManager.locateService("com/ibm/websphere/bo/BOFactory"
      );
      DataObject creditRating = bof.create("http://CreditApproval",
      "CreditRating");
      creditRating.setString("customerId",
      creditApp.getString("customerId"));
      
      // create and call credit history service using async deferred response invocation
      // pattern.
      
      CreditHistoryAsync cha = (CreditHistoryAsync)
      serviceManager.locateService("CreditHistoryPartner");
      
      Ticket tix = cha.getCreditLimitAsync(creditApp);
      
      CreditAgency creditAgency = (CreditAgency) locateService_CreditAgencyPartner();
      		Integer creditScore = creditAgency.getCreditScore(creditApp);
      
      Double creditLimit = cha.getCreditLimitResponse(tix, Service.WAIT);
      
      creditRating.setInt("creditScore", creditScore.intValue());
      creditRating.setDouble("creditLimit", creditLimit.doubleValue());
      return creditRating;

    3. 반입을 소실했기 때문에 Eclipse Editor에서 컴파일 에러가 생긴다. 자바 에디터 아무데서나 오른쪽 클릭을 하여 Source => Organize Imports를 선택한다.(그림 42)


      그림 42. 반입 구성
      Figure 42. Organize imports
    4. BOFactory 인터페이스를 com.ibm.websphere.bo로 바꾼다.(그림 43)


      그림 43. BOFactory 바꾸기
      Figure 43. Resolving BOFactory
    5. Service 인터페이스를 com.ibm.websphere.sca 로 바꾼다.(그림 44)


      그림 44. 서비스 반입을 com.ibm.websphere.sca로 바꾸기
      Figure 44. Resolve the service import to com.ibm.websphere.sca
    6. 어셈블리 에디터를 저장한다.


솔루션 테스트 하기

이제 솔루션을 테스트 할 차례이다. 모듈을 통합할 때 각 모듈에 대해 단위 테스트가 수행되어야 한다. 다양한 개발 팀들이(CreditHistory와 CreditAgency) 컴포넌트를 적절히 테스트했다고 가정한다.

  1. WebSphere Process Server에 세 개의 모듈 모두를 추가한다.

    1. WebSphere Integration Developer에서, Servers 뷰로 가서 WebSphere Process Server를 오른쪽 클릭하고 Add/Romove Project를 선택한다. (그림 45)


      그림 45. WebSphere Process Server에 프로젝트 추가/제거
      Figure 45. Adding and removing projects to WebSphere Process Server
    2. Add All을 선택하여 모든 SCA 모듈들을 서버에 추가한다.(그림 46)


      그림 46. 모든 모듈 추가하기
      Figure 46. Adding all modules
    3. Finish를 누른다.

  2. WebSphere Integration Developer 컴포넌트 테스팅 툴을 사용하여 서버를 시작한다.

    1. CreditApproval 모듈의 어셈블리 에디터에서 CreditApproval 컴포넌트를 오른쪽 클릭하여 Test Component를 선택한다.(그림 47)
      그림 47. Test Component 시작하기
      Figure 47. Launch the Test Component feature
    2. Configurations 탭으로 가서 두 개의 에뮬레이터를 제거한다.(그림 48) 에뮬레이터로는 한 가지를 사용할 수 없다면 파트너를 모사할 수 있다. 실제 컴포넌트를 갖고 있기 때문에 모사할 필요가 없다.


      그림 48. 에뮬레이터 제거하기
      Figure 48. Remove emulators
    3. Events 페이지로 가서 Initial 요청 매개변수에 인풋 데이터를 입력하고(그림 49) Continue를 누른다.


      그림 49. 컴포넌트 테스트 실행
      Figure 49. Run component test
    4. Deployment Location 다이얼로그에서 WebSphere Process Server v6.0을 선택한다.(그림 50)


      그림 50. WebSphere Process Server 런타임을 선택하기
      Figure 50. Select WebSphere Process Server runtime
  3. 호출 경로와 결과를 검사한다.

    1. Events 탭으로 간다. 호출 경로에서 마지막 Return을 선택하여 결과를 본다.(그림 51)


      그림 51. Return 선택하기
      Figure 51. Select Return
    2. 그림 52와 같은 결과를 받을 것이다.


      그림 52. 결과
      Figure 52. Results
    3. 호출 순서를 검사하면 비동기식 호출이라는 것을 알 수 있다. 요청-응답-요청-응답 대신에 비동기식 요청-요청-응답-비동기식 응답이다.(그림 53)


      그림 53. 비동기식 호출 경로
      Figure 53. Asynchronous call path
    4. 서버를 저장하고 중지하지는 말고 테스트 에디터를 닫는다.


결론

반입과 반출로 서비스 지향 방식에서 솔루션을 노출할 수 있다. 이 글에서 SCA 반입과 반출을 사용하여 SCA 솔루션들을 통합하는 방법을 배웠다. Part 4에서는 웹 서비스와 JMS 같은 다른 바인딩을 사용한 솔루션 통합 방법을 설명하겠다.


감사의 말

Eric Herness에게 감사의 말을 전한다.


시리즈 소개

기사의 원문보기



다운로드 하십시오

설명이름크기다운로드 방식
Code sampleSCAArticleSeries3.zip37 KBFTP|HTTP

다운로드 방식에 대한 정보


참고자료

필자소개

Roland Barcia , Certified IT Specialist, IBM

Jeff Brent , Advisory Software Engineer, IBM

잘못된 도움말 신고

부정사용 신고

감사합니다. 이 항목은 운영자가 관심을 표시했습니다.


잘못된 도움말 신고

부정사용 신고

제출실패 신고. 나중에 다시 실행해주세요.


디벨로퍼웍스 로그인


IBM ID가 필요하세요?
IBM ID를 잊으셨습니까?


비밀번호를 잊으셨습니까?
비밀번호 변경

developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관.

 


developerWorks에 처음 로그인하면 developerWorks프로파일이 생성됩니다.귀하의 프로파일에서 동의하신 내용이 공개되지만 이 사항은 언제든지 변경 가능합니다. 귀하의 성명(숨김으로 체크되어 있어도 표시됩니다)과 디스플레이 이름은 게시한 컨텐츠나 사이트 엑세스시 표시됩니다.

화면상에 보여지는 닉네임을 정하세요.

처음 developerWorks에 로그인할 때 프로파일이 작성되므로, 이를 위해 디스플레이 이름을 선택해야 합니다. 선택하신 디스플레이 이름은 developerWorks에 게시한 컨텐츠에 표시됩니다.

3글자 이상 31글자 이하의 길이로 사용 가능합니다. dW커뮤니티 내에서는 보안상 이메일주소를 제외한 다른 이름을 지정하셔야 합니다.

3개의 &이나 대쉬를 포함해주시고 31글자내로 제한해주세요.


developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관.

 


아티클 순위

의견

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=20
Zone=WebSphere, SOA와 웹서비스
ArticleID=125153
ArticleTitle=IBM WebSphere Developer Technical Journal: Service Component Architecture로 SOA 솔루션 구현하기 -- Part 3 (한글)
publish-date=05292006
author1-email=barcia@us.ibm.com
author1-email-cc=
author2-email=jeffb@us.ibm.com
author2-email-cc=

태그

Help
검색 필드를 사용하여 My developerWorks 내에서 해당 태그가 사용된 모든 종류의 컨텐츠를 검색하십시오.

태그를 더 많이 보거나 적게 보기 위해 슬라이더 막대를 사용하십시오.

인기 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 최고 인기 태그를 보여줍니다.

내 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 귀하의 태그를 보여줍니다.

검색 필드를 사용하여 My developerWorks 내에서 해당 태그가 사용된 모든 종류의 컨텐츠를 검색하십시오. 인기 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 최고 인기 태그를 보여줍니다. 내 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 귀하의 태그를 보여줍니다.