IBM®
메인 컨텐츠로 가기
    Korea [국가변경]    이용약관
 
 
   
        제품    서비스 & 솔루션    고객지원 & 다운로드    회원 서비스    
메인 컨텐츠로 가기

한국 developerWorks  >  SOA와 웹서비스 | WebSphere  >

SOA 복합 비즈니스 서비스 구현하기, Part 8: WebSphere Portlet Factory 동적 프로파일을 사용하여 다중 소유 포틀릿 구현하기 (한글)

developerWorks
문서 옵션

JavaScript가 필요한 문서 옵션은 디스플레이되지 않습니다.

토론

샘플 코드

영어원문

영어원문


제안 및 의견
피드백

난이도 : 중급

Ying Chun Guo , Software Engineer, IBM 
Mary Taylor, Senior Software Engineer, IBM

2007 년 8 월 07 일

본 시리즈에서는 Composite Business Services (CBS)의 개발을 설명하고 있습니다. CBS는 기존 기술과 제품들을 통합하여 원하는 비즈니스 기능(예를 들어, 설정 기능)에 반영하고 있습니다. IBM WebSphere® Portlet Factory는 포틀릿 생성 환경으로서, 포틀릿의 개발, 전개, 관리, 재사용 문제를 단순화 합니다. 이 글에서는 WebSphere Portlet Factory를 통해 동적 프로파일을 사용하여 프리젠테이션 레이어 내에서의 설정 기능을 설명합니다.

머리말

WebSphere Portlet Factory의 동적 프로파일링 기능으로 하나의 코드 베이스에서 매우 커스터마이징 된, 다중 애플리케이션들을 생성할 수 있다. 동적 프로파일링 기능을 사용하여, 공유 환경에서 다중 소유로 설정될 수 있는 공통 프로파일에서 변수들을 정의할 수 있다. 다중 애플리케이션들은 이러한 설정된 프로파일을 포틀릿에 적용하여 포틀릿의 모습, 내용, 작동을 변경함으로써 생성된다. 이 글에서는, Part 1에서 설명했던 다중 소유 시나리오의 확장에 대해 설명하겠다. Part 8에서는 뱅킹 용 복합 애플리케이션에서 다중 소유용 WebSphere Portlet Factory 프로파일을 구현, 관리, 설정하는 방법을 배운다. 동적 프로파일링 설정 기능과 포틀릿에서 제공하는 기본적인 설정 기능을 비교할 것이다.

시나리오 정의하기

소셜 북마크

mar.gar.in mar.gar.in
digg Digg
del.icio.us del.icio.us
Slashdot Slashdot

동적 프로파일 기능은 그림 1에서 묘사한 Jivaro 뱅킹 유스 케이스에 나타나 있다.


그림1. Jivaro 유스 케이스
Jivaro 유스 케이스

이 시나리오의 액터:

  • Bank Provider Operations Administrator: Jivaro Bank용 은행 프로파일을 설정할 수 있는 관리자.

  • Bank Administrator: 웹 페이지를 통해 계좌 운영을 수행할 수 있는 은행의 관리자.

  • Bank Customers: 웹 페이지를 통해 계좌 정보를 볼 수 있는 은행의 고객들.

Account 객체는 이 시나리오의 주제이다. 이 시나리오는 Jivaro 환경에 호스팅 된 두 개의 은행, Bank1과 Bank2가 각 은행의 포털에 디스플레이 된 공통 Account 객체의 모양을 어떻게 커스터마이징 하는지를 설명하고 있다.

시나리오 구현하기

WebSphere Portlet Factory 런타임은 포털 서버에서 일반적인 동적인 웹 애플리케이션으로서 실행된다. 이 시나리오에서, 다른 고유의 포틀릿을 만들기 위해 WebSphere Portlet Factory가 사용하는 각 은행을 위해 프로파일이 설정된다. 은행 고객이 은행에 로그인 하면, 그 은행의 상응 프로파일들이 포털 서버에 의해 선택되어 매개변수들을 포털에 제공하게 된다. 그림 2는 좌측과 우측에 있는 웹 페이지들은 같은 코드에 기반하여 다른 프로파일에 의해 생성된 두 개의 다른 웹 페이지들이다. 레이블과 선택 값들은 다르다. Bank 001는 여섯 번째 필드를 Account Name으로 레이블링 하는 반면, Bank 002는 여섯 번째 필드를 Branch로 레이블링 한다. Account Type 필드에서, Bank 001은 두 개의 선택(저축 또는 수표 발행)을 제공하고, Bank 002는 세 개의 필드(저축, 수표 발행, 외부)를 제공한다.

그림 2의 맨 위에 있는 포틀릿은 Banking Provider Operations Administrator가 갖고 있는 설정 기능을 보여주고 있다.


그림 2. 프로파일 메커니즘
프로파일 메커니즘

WebSphere Portlet Factory를 사용하여 Bank1과 Bank2용 포틀릿을 만드는 것으로 시작한다. 은행 관리자에 의해 사용되는 SubscriberAccount Portlet을 만들어서 계좌 정보를 관리하고, 은행 고객에 의해 사용되는 UserAccountsView Portlet을 통해 계좌 정보를 볼 수 있다. 이후에, 포틀릿을 커스터마이징 하는데 필요한 동적 프로파일을 구현하는데, 이 부분은 다음 섹션에서 설명하겠다.

Step 1: 포틀릿 프로파일링

프로파일링 액티비티에는 세 단계가 포함된다.

  1. WebSphere Portlet Factory Designer에서 Profile Set Manager를 사용하여 프로파일 세트를 만든다. 프로파일 세트는 프로파일 세트와 연관된 프로파일에 의해 사용되는 매개변수 세트를 저장하는 컨테이너이다. 예를 들어, "J2BWPFportletsConfigPS"라는 프로파일 세트를 만들고, 은행의 기본 애트리뷰트, 웹 서비스의 엔드포인트, 필드의 show/hide 상태 같은 고급 설정 매개변수를 나타내는 프로파일 엔트리들을 추가한다.

  2. 각 은행용 프로파일을 만든다. bank1과 bank2라는 이름을 가진 두 개의 프로파일을 만든다.

  3. 프로파일에 매개변수 값을 설정한다. 상세한 내용은 다음 섹션에서 설명하겠다.

팁: 여러 포틀릿들이 같은 프로파일 세트를 사용할 수 있으려면, 이들을 같은 WebSphere Portlet Factory 프로젝트에 통합시켜야 한다. 같은 WebSphere Portlet Factory 프로젝트의 모든 모델들은 같은 프로파일 세트를 공유할 수 있다.

Step 1a: 기본 애트리뷰트 프로파일링

Jivaro Bank에서, 각 은행은 고유의 식별자와 한 개의 이름을 갖고 있다. 이러한 기본 애트리뷰트는 설정 가능한 매개변수들로서 설정되어야 한다.

  1. bankId라고 하는 Variable 빌더를 연다.

  2. Initial Value 옆에 있는 프로파일링 아이콘을 클릭한다.

  3. Profile Input 프롬프트에서, Profile Set Name으로 J2BWPFportletsConfigPS를, Profile Entry Name으로 bankId를 선택한다. (그림 3).

  4. 엔트리 값을 편집한다. 001을 bank1 프로파일로, 002를 bank2 프로파일로 설정한다.

  5. OK를 클릭한다.

그림 3. bankId 변수 프로파일링
bankId 변수 프로파일링

Step 1b: 웹 서비스의 엔드포인트 프로파일링

웹 서비스 엔드포인트는 소유자들 간 다양해 질 수 있다. 엔드포인트는 매개변수로서 설정되어야 한다.

  1. Web Service Call 빌더를 열고, Advanced를 클릭하여 고급 인풋을 연다.

  2. Service URL (override) 옆에 있는 프로파일 메커니즘을 클릭한다.

  3. Profile Input 프롬프트에서 Profile Set Name으로 J2BWPFportletsConfigPS를, Profile Entry Name으로 accountQueryWithoutSelectorEP를 선택한다. (그림 4).

  4. bank1프로파일과 bank2 프로파일의 엔트리 값을 편집한다.

  5. OK를 클릭한다.

그림 4. 서비스 엔드포인트 프로파일링
서비스 엔드포인트 프로파일링

Step 1c: show/hide 상태 프로파일링

AccountName과 Description은 bank1에는 필수 필드이지만 bank2는 아니다. Show/Hide 상태는 이러한 작동을 실행하는 설정이다.

  1. Add Account 웹 페이지에서 사용되는 Data Column Modifier 빌더를 연다. Manage Columns 안에 체크 박스가 선택되었는지를 확인한다.

  2. 컬럼 테이블에서 AccountName 행의 좌측에 프로파일링 아이콘을 클릭한다.

  3. Profile Row of Inputs 프롬프트에서, Status 옆에 프로파일 메커니즘을 클릭한다. (그림 5).

  4. Profile Input 프롬프트에서, Profile Set Name 으로 J2BWPFportletsConfigPS를, Profile Entry Name 으로 account_AccountName_Enable을 선택한다. (그림 6).

  5. 엔트리 값을 편집하고, Show를 bank1 프로파일에, Hide를 bank2 프로파일에 설정한다.

  6. OK를 클릭한다.

그림 5. 행 프로파일링
행 프로파일링

그림 6. show/hide 상태 프로파일링
show/hide 상태 프로파일링

Step 1d: 필드 디스크립션 프로파일링

WebSphere Portlet Factory는 필드의 디스크립션을 설정할 수 있는 기능도 제공한다. 다음은 AccountName 디스크립션 예제이다.

  1. add account 웹 페이지에서 사용되는 Data Column Modifier 빌더를 연다. Manage Columns 옆에 있는 체크 박스가 체크되었는지 확인한다.

  2. 컬럼 테이블의 AccountName 행의 좌측에 프로파일링 아이콘을 클릭한다.

  3. Profile Row of Inputs 프롬프트를 보면, Column Heading 옆에 있는 프로파일링 아이콘을 클릭한다. (그림 5).

  4. Profile Input 프롬프트에서, Profile Set Name 으로 J2BWPFportletsConfigPS를, Profile Entry Name 으로 account_AccountName을 선택한다. (그림 7).

  5. 엔트리 값을 편집한다. AccountName을 bank1 프로파일로, Branch를 bank2 프로파일로 설정한다.

  6. OK를 클릭한다.

그림 7: 필드 디스크립션 프로파일링
필드 디스크립션 프로파일링

Step 1e: 옵션 리스트 값 프로파일링

한 필드의 선택 값 역시 설정될 수 있다. 다음은 AccountType 예제이다.

  1. Data Field Modifier 빌더를 모델에 추가한다.

  2. Field Selector Tool 인풋을 Select By Name으로 설정하고, 인풋 필드를 Data Page에 있는 AccountType의 이름으로 설정한다.

  3. Field Behavior 인풋을 Data Entry로 설정한다. Content Type 인풋을 Select로 설정한다. Enumeration Options 인풋을 Specify Below로 설정한다. (그림 8).

  4. Select Data 옆에 있는 프로파일링 아이콘을 클릭한다. Profile Input 프롬프트가 나타난다. Profile Set Name 으로 J2BWPFportletsConfigPS를, Profile Entry Name 으로 account_accountType을 선택한다. (그림 9).

  5. 엔트리 값을 편집한다. SAVINGS, CHECKINGS를 bank1 프로파일로 설정하고, SAVINGS, CHECKINGS, EXTERNAL를 bank2 프로파일로 설정한다.

  6. OK를 클릭한다.

그림 8. 데이터 필드 수정 빌더
데이터 필드 수정 빌더

그림 9. 선택 리스트 값 프로파일링
선택 리스트 값 프로파일링

Step 2: 설정을 위한 포틀릿 생성하기

이 섹션에서는, 포틀릿을 생성하여 프로파일 세트 J2BWPFportletsConfigPS용 프로파일 엔트리 값을 관리한다. 이것은 Step 1에서 여러분이 만든 것이다. WebSphere Portlet Factory는 API 수트를 제공하여, 프로파일을 생성, 업데이트, 삭제한다. 이러한 API들을 사용하여, 포틀릿을 생성하여 커스터마이징 하기 원하는 값을 노출하고, 여러분은 이러한 값들을 설정하기 위해 사용자 인터페이스를 제공해야 한다.

Step 2a: 커스터마이징 가능한 변수 추가하기

프로파일 엔트리의 값은 웹 페이지를 통해 보여지고 업데이트 된다. 이를 실행하려면, 선택된 프로파일의 이름과 프로파일 엔트리의 값을 저장하는 변수를 만들어야 한다. 여러분은 이미, 선택된 프로파일 이름에 SelectedProfile이라고 하는 스트링 변수를 만들었다. 변수와 프로파일 엔트리들 간 매핑을 단순히 유지하기 위해서, pfvar_ 접두사를 사용한 변수로 이름을 짓는다. 샘플 변수는 그림 10에 나타나 있다.


그림 10. 샘플 변수
샘플 변수

Step 2b: 프로파일링 API를 사용하여 헬퍼 클래스 개발하기

그림 11은 프로파일링을 위한 메인 클래스와 메소드를 보여주고 있다. ProfileSetStorageManager를 사용하여 이름 별로 프로파일 세트를 얻고, 프로파일 세트를 저장한다. ProfileSet를 사용하여 프로파일을 얻는다. Profile과 ProfileValue를 사용하여 프로파일 엔트리들의 값을 얻는다.


그림 11. 프로파일링 API
프로파일링 API

이러한 API들을 사용하여, 헬퍼 클래스는 다음과 같은 기능들을 구현하기 위해 만들어 진다. (WPFPortlets.zip의 com.ibm.J2B.wpf.profile.ProfileCustomizeHelper 참조).

  • 프로파일 세트에서 프로파일 리스트를 가져오기 (getProfiles 메소드 참조)

  • 프로파일의 엔트리 값을 획득하고, 웹 애플리케이션에서 이들을 변수로 설정하기 (getVariables 메소드 참조)

  • HttpServletRequest에서 프로파일 엔트리의 업데이트 된 값을 가져오고, 이들을 프로파일 세트에 저장하기 (saveProfile 메소드 참조)

Step 2c: 포틀릿 컨트롤 추가하기

이 단계에서, 설정 포틀릿에 컨트롤을 추가하여 변수를 핸들하고 함수들을 호출한다.

  1. 링크 된 자바™ 객체를 추가하고, 클래스 이름이 헬퍼 클래스가 되도록 설정한다.

  2. html 테이블을 사용하여 페이지 레이아웃을 편집한다. <span> 태그의 이름은 변수 이름과 같아야 한다. (Listing 1).

  3. SelectedProfile 태그에 Select 빌더를 추가한다. Select Data가 getProfiles 메소드의 리턴이 되도록 설정하고 Selected Values가 SelectedProfile 변수가 되도록 설정한다.
  4. HTML Event Action Builder를 추가하고, 선택된 프로파일이 변경될 때 getVariables 메소드를 호출하도록 지정한다.

  5. HTML 컨트롤 (Select와 Text Input)을 다른 네임드 태그에 추가하여 프로파일 엔트리를 디스플레이 한다. 값이 상응하는 변수가 되도록 지정한다.

  6. 제출 버튼을 추가하고, 버튼이 클릭되면 saveProfile 메소드를 호출하도록 설정한다.

Listing 1. HTML 코드
                <body>
	<form name="myForm" method="post">
		<table>
			<tr>
				<td> Profile: </td>
				<td> <span name="SelectedProfile"></span> </td> 
			</tr>
			<tr>
				<td> BankId: </td>
				<td><span name="pfvar_bankId"></span></td>
			</tr>
			<tr>
				<td> BankName: </td>
				<td><span name="pfvar_bankName"></span></td>
			</tr>
			<tr>
				<td><span name="submitbutton"></span></td>
				<td></td>
			</tr>
		</table>
	</form>
</body> 
      

Step 3: 커스텀 Profile Selection Handler 생성하기

프로파일 세트 내에 여러 프로파일이 있을 때, 프로파일 선택 핸들러는 어떤 프로파일이 사용되어야 하는지를 결정한다. WebSphere Portlet Factory에는 Explicit Handler와 J2EE Role Handler 같은 여러 사전 정의된 핸들러들이 있다. 여러분은 고유의 선택 핸들러를 정의할 수 있다. 이 시나리오에서, 각 은행용 개별 프로파일을 제휴하는 커스텀 프로파일 선택 핸들러를 정의할 수 있다.

Step 3a: 핸들러 클래스 구현하기

SelectionHandler 클래스는 ProfileSelection 인터페이스를 구현하는데, 이것은 selectProfile() 메소드를 갖고 있다. 이 메소드는 지정된 ProfileSet에서 Profile을 선택하고 이름을 리턴한다. 핸들러 클래스의 소스 코드는 Listing 2에 나타나 있다.


Listing 2. 핸들러 클래스의 소스 코드
                
public class BankUserSelectorHandler extends SelectionHandlerBase {

	public String selectProfile(HttpServletRequest request,
			ProfileSet profileSet, String modelName, String explicitProfile,
			ModelInstanceCreator modelInstanceCreator) {

		String userid = "";
		try {

			userid = request.getRemoteUser();
			int index = userid.indexOf('@');
			if (index == -1) return ProfileSet.DEFAULT;

			String domain = userid.substring(index + 1);
			return domain;

		} catch (Exception e) {}

		return ProfileSet.DEFAULT;
	}
}
      

Step 3b: 핸들러 정의하기

핸들러 정의는 프로파일 선택 핸들러와 이것의 프로퍼티를 구현하기 위해 사용되는 자바 클래스를 리스팅 하는 XML 파일이다. 모든 핸들러 정의는 WEB-INF/config/selection_handlers 디렉토리에 저장된다. 이 예제 시나리오의 핸들러 정의 파일은 Listing 3에 나타나 있다.


Listing 3. 핸들러 정의 파일
                
<Handler name="J2BBankProfileSelectionHandler">
  <Description>Handler for J2B WPF portlet</Description>
  <Selection class="com.ibm.J2B.wpf.handler.BankUserSelectorHandler" />
</Handler>
      

Step 3c: 프로파일 세트용 프로파일 선택 핸들러 설정하기

커스텀 프로파일 선택 핸들러를 만든 후에, 이 선택 핸들러를 J2BWPFportletsConfigPS 프로파일 세트용으로 설정한다.

  1. WEB-INF/profiles/J2BWPFportletsConfigPS 프로파일 세트를 더블 클릭하여 연다.

  2. Select Handler 탭에서, Profile Selection Handler 선택 박스에서 만들었던 선택 핸들러를 선택한다. (그림 12).

  3. 프로파일 세트를 저장한다.

그림 12. 프로파일 선택 핸들러 설정하기
프로파일 선택 핸들러 설정하기



위로


비 WebSphere Portlet Factory 솔루션과의 비교

포틀릿의 설정 모드에서는 설정도 가능하다. 하지만, 포틀릿 설정 모드의 매개변수들과 함수 범위는 하나의 포틀릿만 관련되어 있다. 여러 포틀릿들로 공유되는 매개변수들의 경우(bank id, bank name, 일반 웹 서비스 엔드포인트), 각각의 포틀릿에서 설정되어야 한다. WebSphere Portlet Factory 동적 프로파일을 사용하면 중앙화 된 포틀릿을 개발하여 설정 인터페이스를 제공할 수 있다. 공유 매개변수들은 한번만 설정되어야 하며, 이는 워크로드나 에러 가능성을 줄인다.

WebSphere Portlet Factory 없이는, 포틀릿의 설정은 JSP나 자바 코드에 의해 구현된다. 자바 API를 통해 설정 매개변수들의 값을 얻는다. 복잡한 코드는 고급의 설정을 제공하기 위해 필요하다. (필드의 Show/Hide 상태 설정하기 또는 드롭 다운 리스트에서 선택 값 설정하기). WebSphere Portlet Factory 동적 프로파일을 사용하면, 웹 애플리케이션의 설정은 매우 쉽고 강력해 진다. 코드를 작성할 필요 없이 설정이 가능하다.

WebSphere Portlet Factory에 이러한 장점들이 있지만, WebSphere Portlet Factory 개발용 what-you-see-is-what-you-get (WYSWYG) 툴이 없다. 이들은 JSP와 HTML을 위한 것이다. WebSphere Portlet Factory는 마법사 계열의 빌드이며, WYSWYG 툴 보다 추상적이다. 빌더 이름은 WebSphere Portlet Factory를 이용한 포틀릿 개발 시 매우 중요하다.




위로


결론

이 글에서 WebSphere Portlet Factory 동적 프로파일을 이용한 설정 가능한 사용자 인터페이스를 구현하는 방법을 설명했다. 프로파일링은 매우 강력한 WebSphere Portlet Factory 기능이다. 프로파일은 커스터마이징 된 포틀릿을 생성할 수 있는 매개변수 세트를 (이름/값 쌍)를 포함하고 있다. 프로파일을 사용하여, 다양한 사용자나 상황에 같은 모델 기반의 다양한 포틀릿들을 자동으로 생성할 수 있다. 포틀릿을 구현하여 포틀릿 엔트리 값 설정하기, 커스텀 프로파일 선택 핸들러 구현하기, 선택 핸들러와 프로파일 세트 제휴시키기 등이 포틀릿 프로파일링 단계에 속해있다. 같은 기능이 코드를 작성함으로써 생성될 수 있지만, WebSphere Portlet Factory는 코드 작성 없이 이러한 기능을 구현할 수 있는 빌더를 제공한다.





위로


다운로드 하십시오

설명이름크기다운로드 방식
이 기술자료의 소스 코드wpfportlets.zip340KBHTTP
다운로드 방식에 대한 정보


참고자료

교육

제품 및 기술 얻기

토론


필자소개

author photo

Ying Chun Guo은 China Technology Institute, China Software Development Laboratory의 소프트웨어 엔지니어이다. 복합 비즈니스 서비스(CBS)와 서비스 지향 아키텍처(SOA) 분야에서 일하고 있다.


Mary Taylor photo

Mary Taylor는 소프트웨어 엔지니어이다. Strategic Technology Architecture and Incubation 팀에서 일하고 있으며, 현재 SOA CBS 파일럿 작업 중이다. DB2와 DataStage에 관심을 갖고 있다.




기사에 대한 평가


보다 나은 서비스를 제공하기 위함이오니 잠시 짬을 내어 이 양식을 제출하여 주십시오.



아니오잘 모르겠음
 


 


12345
 



위로


IBM and WebSphere are trademarks of IBM Corporation in the United States, other countries, or both. Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both. Other company, product, or service names may be trademarks or service marks of others. 기타 회사, 제품, 및 서비스명은 다른 상표나 서비스 마크일 수 있습니다.

developerWorks 콘텐트를 다른 사이트에 전재하기:
developerWorks 콘텐트에 대한 저작권은 IBM에 있습니다. IBM의 서면 허가나 원본 저자의 허락이 없이는 전재를 금합니다. 저희 콘텐트를 전재하시려면 IBM developerWorks 담당자 에게 문의하십시오.
    IBM 소개 개인정보 보호정책 문의