|
Developer: Business Intelligence
Location 정보를 위한 표준 기반 Portlet의 구현
by Justin Lokitz
WSRP, JSR 168 등의 개방형 표준과 portlet을 이용하여 location 정보 및 애플리케이션을 구현하는 방법을 설명합니다.
정보는 모든 비즈니스의 핵심입니다. 엔터프라이즈 포탈이 구현되면서, 단일 계정으로 단일 웹 사이트에 로그인 함으로써 쉽게 필요한 정보를 찾는 것이 가능해졌습니다. 엔터프라이즈 포탈은 단순히 커스터마이즈된 형태의 대시보드에서, 모든 사용자(직원, 일반시민, 고객 등)가 별도의 운영체제, 별도의 소프트웨어를 사용하지 않고 한 화면에서 필요로 하는 모든 정보를 쉽게 빠르게 확인할 수 있는 툴로 변화하고 있습니다.
위치 정보(location information) 분야에서도 동일한 변화의 흐름이 목격되고 있습니다. 이전 아티클("엔터프라이즈 리포팅에서 위치 정보의 활용")에서, 필자는 “위치 정보의 응용 사례는 어디에서나 발견할 수 있다. 모든 비즈니스, 모든 업종, 그리고 전세계의 거의 모든 조직과 부서에서 위치 정보를 사용하고 있다.”라고 말한 바 있습니다. 필자의 아티클, 그리고 2005년 Location Technology & Business Intelligence Conference 행사에서 확인할 수 있었던 것처럼, 위치 정보 데이터를 이용해 위치 정보를 확인하는 작업의 중요성에 대한 인식이 전례 없이 확산되고 있습니다. 이제 기업의 임원, 분석 담당자, 그리고 일반 사용자들 모두가 위치 정보 데이터를 포함하는 비즈니스 정보를 쉽게 확인할 수 있는 환경을 필요로 하고 있습니다.
오라클은 이러한 요구사항에 대응하기 위한 솔루션을 제공하고 있습니다. 엔터프라이즈 포탈이 모든 기업의 표준적인 환경으로 자리잡으면서, 분산된 정보와 애플리케이션을 포탈 프레임워크에 통합하기 위한 새로운 방안이 모색되고 있습니다. 포탈의 정의 또한 이에서 벗어나지 않습니다: 포탈은 컨텐트, 애플리케이션, 서비스의 재구성 또는 재개발을 수반하지 않고 “컨텐트, 애플리케이션, 서비스를 통합하기 위한 장소” (Laura Ramos, Forrester Research, "Portal Definition Update: Evolving to the Collaborative Business Platform," December 18, 2002)로 정의됩니다.
컨텐트, 애플리케이션, 서비스를 포탈을 통해 공유할 수 있는 환경을 제공하기 위해, 엔터프라이즈 포탈 벤더들은 portlet 기반의 컨텐트 공유를 위한 두 가지 포탈 표준 - OASIS Web Services for Remote Portlets (WSRP)와 Java Specification Request 168 (JSR 168) – 을 정의하였습니다. 이러한 표준을 이용하면 모든 정보와 애플리케이션을 portlet의 형태로 공유할 수 있으며, location portlet (map)과 business intelligence portlet을 이용하여 위치 정보를 쉽게 통합할 수 있습니다.
이 문서에서는, WSRP, JSR 168 등의 개방형 표준과 portlet을 이용하여 location 정보 및 애플리케이션을 구현하는 방법을 설명합니다. 이 문서에서 사용되는 portlet 코드는 WSRP와 JSR 168을 지원하는 모든 벤더의 포탈 솔루션에서 사용 가능합니다.
Map의 정의
아래 예제는 Oracle Application Server MapViewer (Oracle MapViewer)와 Oracle JDeveloper 10g를 이용하여 다이내믹한 형태의 웹 기반 맵을 정의하고 개발하는 방법을 설명하고 있습니다. Oracle MapViewer가 제공하는 Java, XML API와 JavaServer Page Tag Library를 이용하면, 다른 웹 기반 매핑 테크놀로지보다 쉽게 빠르게 새로운 개발 프로젝트에 맵 데이타를 통합할 수 있습니다. 더 자세한 정보와 다운로드 및 셋업 방법에 대한 설명은 다음 링크를 참고하시기 바랍니다:
http://www.oracle.com/technology/global/kr/products/mapviewer/index.html.
필자의 이전 아티클("Use Location Information in Enterprise Reporting")에서, Oracle MapViewer의 map definition 툴과 Oracle SQL*Plus를 이용하여 맵을 정의하는 방법을 설명한 바 있습니다. 이 문서에서도 OE schema의 동일한 데이타를 사용하여 여러분들의 이해를 돕고자 합니다 (이 샘플 데이타는 Oracle by Example "Performing Location-Based Analysis"에서 처음으로 사용되었던 것입니다).
다른 맵 렌더링 툴과 마찬가지로, Oracle MapViewer는 style (color, marker, line, area, text, symbology, advanced style)과 theme (또는 “layer”)의 개념을 사용하여 다이내믹 맵을 생성합니다. 이러한 속성 및 맵 정의는 다른 위치 정보와 함께 XML의 형태로 데이타베이스에 저장됩니다.
아래와 같이 SQL insert/update 문을 사용하여 속성과 맵 정의를 생성할 수 있습니다:
SQL> insert into USER_SDO_STYLES values(
'V.PIECHART1', 'ADVANCED', null,
'<?xml version="1.0" ?>
<AdvancedStyle>
<PieChartStyle pieradius="10">
<PieSlice name="A" color="#ffff00" />
<PieSlice name="B" color="#000000" />
<PieSlice name="H" color="#ff00ff" />
<PieSlice name="I" color="#0000ff" />
<PieSlice name="W" color="#ffffff" />
</PieChartStyle>
</AdvancedStyle>', null, null);
또는 Map Definition Tool (그림 1 참고)를 이용하여 좀 더 간단한 방법으로 같은 작업을 수행할 수 있습니다.
 |
| 그림 1: Map Definition Tool
|
Oracle MapViewer 표준 다운로드, 또는 Oracle Internet Application Server에 포함된 버전은 모두 style, them, base map, sample code 등을 포함하고 있습니다. 하지만 아래 예제를 수행하려면 base map 하나와 theme 두 개를 추가로 복제하셔야 합니다. 데이타베이스의 map definition에 대하여 SQL 및 툴 액세스가 가능하므로, 아래와 같이 SQL 구문을 실행하여 map 정의를 복제할 수 있습니다. (아래 작업을 수행하기 전에 Oracle MapViewer 관련 뷰 – user_sdo_styles, user_sdo_themes, user_sdo_maps - 를 검토하고 그 구현 원리를 이해하시기 바랍니다.)
SQL> insert into user_sdo_maps
2 values('WAREHOUSES_AND_CUSTOMERS', 'customers and warehouses',
3 (select definition from user_sdo_maps where name='DENSITY_MAP'));
1 row created.
SQL> commit;
Commit complete.
이제 WAREHOUSES_AND_CUSTOMERS라는 이름의 새로운 base map이 생성되었습니다. Map Definition Tool을 이용하여 이 base map에 theme을 추가할 수 있습니다. 먼저 mapdef.jar가 저장된 디렉토리로 이동한 뒤, 아래 명령을 실행하여 map definition을 저장하고 있는 오라클 데이타베이스 인스턴스에 접속합니다:
java -classpath mapdef.jar;d:\oracle\ora92\jdbc\lib\classes12.jar
-Dhost="localhost" -Dsid="orcl" -Dport="1521"
oracle.eLocation.console.GeneralManager
다음에는 두 개의 theme - CUSTOMERS, WAREHOUSES – 을 생성합니다. (그림 2와 3 참고)
 |
| 그림 2: CUSTOMERS theme의 생성
|
 |
| 그림 3: WAREHOUSES theme의 생성
|
생성한 customers, warehouse theme을 WAREHOUSES_AND_CUSTOMERS base map에 추가합니다 (그림 4 참고).
 |
| 그림 4: WAREHOUSES_AND_CUSTOMERS map definition의 생성
|
Note Min Scale과 Max Scale은 클라이언트 요청에서 사용되는 zoom level에 따라 map의 theme을 정의하는 역할을 수행합니다. (Update 버튼을 클릭하여) map definition을 업데이트하고 나면, 클라이언트 요청에 따라 다이내믹하게 map을 생성할 수 있게 됩니다. map을 테스트하는 가장 쉬운 방법은 새로운 map definition name (WAREHOUSES_AND_CUSTOMERS)을 Oracle MapViewer 데모 애플리케이션에 플러그-인 처리하는 것입니다. 이렇게 하려면 Oracle MapViewer 맵 클라이언트(Oracle MapViewer URL의 mapclient.jsp)로 내비게이션을 수행한 후 필요한 값을 입력합니다 (그림 5 참고).
 |
| 그림 5: 데모 맵 클라이언트
|
mapclient.jsp 샘플 애플리케이션은 Oracle MapViewer 서버에 전달된 클라이언트 요청을 디스플레이하는 기능도 함께 제공합니다. 클라이언트 요청은 클라이언트에 의해, 또는 개발 언어에 의해 구현될 수 있습니다. 모든 정의와 연결 설정이 올바르게 입력되었다면, 클라이언트 요청에 대해 map(또는 map 이미지를 참조하는 URL)이 생성됩니다.
Portlet 프레임워크의 구현
JSR 168, WSRP 등의 표준을 이용하여 portlet을 쉽게 구현하려면, 먼저 적절한 툴이 필요합니다. 이를 위해, Oracle Internet Application Server Portal 팀은 Oracle JDeveloper 10g를 위한 “portal-addin”을 개발하여 제공하고 있습니다. portal-addin은 Oracle JDeveloper 10g의 extension으로, 마법사를 이용하여 Java (JSR 168) portlet 프레임워크를 쉽고 빠르게 생성할 수 있게 합니다. JSR 168 specification을 이용하여 portlet을 개발하고 난 다음에는, 이 표준을 지원하는 애플리케이션 서버(Oracle Application Server 등)에 deploy하고 WSRP를 통해 호출할 수 있습니다. portal-addin, 또는 portal 표준에 대한 상세한 정보는 다음 링크를 참고하시기 바랍니다: http://portalstandards.oracle.com.
JDeveloper 10g을 사용하여 portlet 프레임워크를 개발하기 위해, 먼저 WSRPMapPortlet이라는 이름의 workspace를 생성합니다. 이 workspace에서는 디폴트 Web application template을 사용할 수 있습니다 (그림 6 참고)
 |
| 그림 6: application workspace의 생성
|
새로 생성된 workspace의 ViewController 프로젝트에서 마우스 오른쪽 버튼을 클릭한 뒤, “new”를 선택하여 여러 extension 중 하나를 실행합니다. Web Tier 섹션에서 portlet wizard이 나타나지 않을 수도 있습니다. portlet wizard는 특정 project technology를 선택하는 대신 모든 technology에 대해 “filtering”을 선택했을 때 나타납니다. 여기에서는 Java Portlet Wizard를 선택합니다. Java Portlet Wizard는 Java 표준 portlet을 생성하기 위한 절차를 안내합니다 (그림 7 참고).
 |
| 그림 7: Java portlet의 생성
|
Java Portlet Wizard에서 여러 가지 옵션의 설정이 가능하지만, 이번 예제에서는 대부분의 디폴트 값을 그대로 사용하는 것으로 합니다 (그림 8~11 참고). Java Portlet Wizard 옵션에 대한 자세한 내용은 Oracle Internet Application Server Portal Developer's Guide를 참고하시기 바랍니다.
 |
| 그림 8: portlet class의 설정
|
 |
| 그림 9: portlet name의 설정
|
 |
| 그림 10: portlet mode의 설정
|
 |
| 그림11: Portlet view.jsp 페이지
|
이제 portlet 프레임워크의 구현작업이 완료되었습니다. 다음에는 프레임워크에 Oracle MapViewer의 코드를 추가할 차례입니다.
Oracle MapViewer와 표준Portlet의 통합
예제를 단순화하기 위해, Oracle MapViewer JSP Tag Library를 이용하여 Map Viewer 인스턴스를 호출하고 웹 기반의 다이내믹 맵을 portlet에 반환하는 방법을 사용하기로 합니다. Map Viewer JSP Tag Library는 사용하기 쉬울 뿐 아니라, 문서화가 잘 되어 있으므로 유연한 솔루션을 구현하기에 적합합니다. Map Viewer JSP Tag Library의 How-To 문서는 아래 링크에서 확인하실 수 있습니다: http://www.oracle.com/technology/products/jdev/howtos/10g/map/mv_jdev_howto.htm.
이제 생성된 portlet 프레임워크에 코드를 추가하기 위해, JDeveloper에서 view.jsp 파일을 더블 클릭하여 오픈합니다. JDeveloper 디자인 모드에서는, 복잡한 HTML 구문을 사용하지 않고도 원하는 컨텐트를 어떤 포맷으로든 추가할 수 있습니다 (예제 프로젝트에서는 center 아이콘을 사용하여 컨텐트를 가운데 맞춤으로 설정합니다). 디자인 뷰에서 태그를 드래그, 드롭, 정의하는 작업도 가능합니다. Oracle MapViewer 태그를 사용하려면 Component Palette(JDeveloper 10g의 우측 상단에 위치)에서 MapViewer Tag Library를 선택합니다. MapViewer Tag Library에서, Portlet Wizard가 추가한 defineObjects 태그 바로 아래에 init 태그를 끌어다 놓습니다. init 태그는 세 개의 필드를 가지며, 그 중 두 개는 반드시 입력되어야 합니다. 다음과 같이 세 개의 필드를 입력합니다: URL (http://www.yourserver.com/mapviewer/omserver), datasource (mvdemo), user-defined ID (mvHandle)—그림 12 참고.
 |
| 그림 12: init 태그의 추가 및 설정
|
다음에는 페이지에 setParam 태그를 추가할 차례입니다. setParam 태그에서 info window를 바로 확인할 수는 없습니다. 대신, 페이지의 태그를 선택하고 Property Inspector (JDeveloper 우측 하단)에서 Oracle MapViewer 매개변수를 설정하는 방법을 사용해야 합니다. setParam 태그를 선택하고, 다음과 같이 매개변수를 입력합니다: antialiasing (true), basemap (WAREHOUSES_AND_CUSTOMERS), centerX (-122.4), centerY (37.8), height (450), size (10), title (My Map Portlet), width (600)—그림 13 참고.
 |
| 그림 13: setParam 태그의 추가 및 설정
|
setParam 태그의 매개변수를 모두 입력했다면 페이지에 run 태그를 끌어다 놓습니다. (run 태그에는 매개변수 설정이 필요하지 않습니다) – 그림 14 참고.
 |
| 그림 14: run 태그의 추가
|
이제 portlet의 설정 대로 map을 렌더링하기 위한 모든 준비가 완료되었습니다. 지금까지 태그 라이브러리를 이용하여 Oracle MapViewer 인스턴스를 호출하고 map의 전체 환경을 셋업하였습니다 (Oracle MapViewer 인스턴스는 Run 커맨드를 접수하기 전에 map 이미지의 빌드 작업을 완료해 둡니다). 이제 페이지에 이미지를 표시할 차례입니다. 먼저 표준 HTML 이미지 태그를 페이지에 끌어다 놓습니다 (또는 이미지가 SVG인 경우 object 태그를 끌어다 놓습니다). Component Palette에서 HTML을 선택하고 이미지 태그를 페이지에 끌어온 다음, source 탭을 클릭하여 페이지의 JSP/HTML 소스를 확인합니다. 그런 다음 다시 Component Palette에서 MapViewer Tag Library를 선택하고, getMapURL 태그를 이미지 태그의 빈 인용 부호 사이에 끌어다 놓습니다 (작업이 완료된 이미지 태그는 다음과 같이 표시됩니다: <img src="<mapviewer:getMapURL />"/>). 페이지가 실행되고 Oracle MapViewer가 이미지를 생성하면, getMapURL 태그는 실제 이미지의 URL을 HTML 이미지 태그로 반환합니다 (그림 15).
 |
| 그림 15: HTML 이미지 태그와 Oracle MapViewer getMapURL 태그 추가하기.
|
이제 portlet을 deploy하고 포탈에서 맵을 확인하기 위해 필요한 기본적인 코드가 생성되었습니다. 또 여기에 로직을 좀 더 추가하여 클라이언트 요청에 따라 다른 버전의 map을 표시하도록 할 수도 있습니다. 이번 예제에서는 더 이상의 로직은 추가하지 않는 것으로 합니다.
Location-Enabled Portlet의 deploy 및 등록
이제 Oracle Container for J2EE (OC4J)와 같은 WSRP/JSR 168 호환 portlet container를 이용하여 portlet을 deploy할 수 있습니다. 먼저 Web Content>WEB-INF 폴더에 위치한ViewController 프로젝트의 web.xml 파일에서 오른쪽 마우스 버튼을 클릭하고 "Create WAR deployment profile"을 선택합니다. deployment profile의 이름을 “WSRPMapPortlet”으로 설정하고 같은 이름을 사용하여 J2EE Web context root를 설정합니다 (그림 16 참고).
 |
| 그림 16: deployment profile의 생성
|
설정된 deployment profile에서 오른쪽 마우스 버튼을 클릭하고, 프로젝트를 WAR 또는 EAR 파일로 애플리케이션 서버에 deploy합니다. 여기에는 portlet_container가 존재하는 OC4J 인스턴스에 프로젝트를 직접 deploy하도록 선택합니다 (그림 17 참고).
 |
| 그림 17: portlet을 portlet container에 deploy하기
|
deployment 작업이 성공적으로 완료되었다면, “http://www.yourserver.com/WSRPMapPortlet/portlets?WSDL”에서 WSRP-WSDL 페이지를 확인할 수 있습니다. 이 주소는 새로운 portlet을 포탈에 등록할 때 사용하는 주소와 동일합니다 (그림 18).
 |
| 그림 18: Portlet WSRP specification
|
Oracle Portal/WSRP Verification Server를 사용하면 새로 생성된 WSRPMapPortlet을 쉽게 확인할 수 있습니다. Oracle Portal/WSRP Verification Server는 Oracle Application Server의 prerelease 버전에 포함되어 있으며, WSRP producer/portlet과의 커뮤니케이션 기능을 제공합니다. 방화벽이 사용되는 환경이라면 문제가 될 수 있겠지만, 그렇지 않은 경우라면Verification Service를 이용해 생성된 portlet의 렌더링 기능을 쉽게 검증할 수 있습니다.
 |
| 그림 19: WSRP map portlet의 테스트
|
verification 프로세스에 대한 자세한 정보는 제품관련문서를 참고하십시오.
결론
포탈 및 인텔리전스 데이타에 관련한 통합 테크놀로지가 비즈니스 인프라스트럭처의 핵심 구성요소로
자리잡으면서, 정보를 공유하고 애플리케이션(portlet)을 구현하기 위한 기능의 중요성이 더욱 강조되고 있습니다.
이제 개방형 표준에 기반하여 애플리케이션을 개발하기 위해 필요한 모든 요소가 제공되고 있을 뿐 아니라, JSR 168,
WSRP와 같은 프레임워크 표준을 이용하여 기존 테크놀로지와 데이타를 새로운 애플
리케이션에 통합하는 것 또한 가능해 졌습니다. 이처럼 새로운 테크놀로지와
기존 테크놀로지(GIS, 포탈 등)를 통합함으로써, 복잡성을 최소화한, 진정한 의미의 인텔리스전스 환경을 구현할 수
있을 것입니다. Justin Lokitz는
오라클의 Senior Sales Consultant로 GIS 및 J2EE 개발을 전문 분야로 하고 있습니다.
|