2010-09-03

도큐멘텀 DFS 따라하기 - 3

DFS에서 제공하는 주요 서비스


웹서비스 (Web Services) 개념을 이해 했다면, 본격적으로 DFS 에 대해 알아보자.

  • Object Service: 저장소 오브젝트에 대한 등록, 조회, 갱신, 삭제, 복사, 이동 등의 기본 동작.
  • Version Control Service: 체크인, 체크아웃 등 버전 관련.
  • Query Service: DQL 등 쿼리 수행.
  • Schema Service: 메타데이터 (data dictionary) 조회 등.
  • Search Service: 본문 및 속성 검색.
  • Workflow Service: 워크플로우 수행 및 단계 처리.
이러한 기능을 골라서 호출. 사용 (consume)하면 된다. 이때 호출 하는 방법이 2가지가 있다.
  • local call : client가 server와 같은 WebApp으로 있는 경우, 호출은 call by reference
  • remote call : client와 server가 다른 WebApp으로 있어, 호출은 http 통신이 필요, call by value
즉 local call의 경우는 DFS Client가 DFS Server(DFC)와 함께 있어 외부 통신이 일어나지 않는다. 반면 remote call의 경우 DFS Client와 DFS Server는 다른 서버.공간에 있어 HTTP/SOAP 통신이 필요하다. 따라서 marshall/unmarshall도 필요하고 성능 저하도 발생할 것이다.

어떤 방식을 사용해야하는지 모른다면, 대부분의 경우인 remote call이라고 생각하면 된다. 또한 개발할때 참조할 java library는 local call 인지 remote call 인지에 따라 설정이 달라지게 된다.



Remote consumer dependencies
Path on SDKJARs
%DFS_SDK%/lib/java/*-remote.jar
%DFS_SDK%/lib/java/jaxws/All except jaxb-xjc.jar and jaxws-tools.jar
%DFS_SDK%/lib/java/commons/commons-lang-2.1.jar , commons-io-1.2.jar
%DFS_SDK%/lib/java/utils/aspectjrt.jar , log4j.jar , servlet.jar
%DFS_SDK%/lib/java/bof/collaboration.jar

  • Client Productivity Layer 활용하는 Remote call 기준으로 설명 하고 있음
  • local call의 경우 *-remote.jar 대신 *-service.jar, emc-dfs-rt.jar 및 lib/java/dfc.jar 를 classpath에 포함한다.

  • PL 모드로 동작하려면 추가 설정파일인 dfs-client.xml 이 classpath에 있어야한다.





<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<DfsClientConfig defaultModuleName="core" registryProviderModuleName="core">
    <ModuleInfo name="core" protocol="http" host="www.emc.local" port="9086" contextRoot="services">
    </ModuleInfo>
    <ModuleInfo name="search" protocol="http" host="www.emc.local" port="9086" contextRoot="services">
    </ModuleInfo>
    <ModuleInfo name="bpm" protocol="http" host="www.emc.local" port="9086" contextRoot="services">
    </ModuleInfo>
    <ModuleInfo name="collaboration" protocol="http" host="www.emc.local" port="9086" contextRoot="services">
    </ModuleInfo>
    <ModuleInfo name="ci" protocol="http" host="www.emc.local" port="9086" contextRoot="services">
    </ModuleInfo>
</DfsClientConfig>

사실 DFS는 JAX-WS를 확장하여 추후 설명할 데이터 모델을 구현해 둔 것으로 보인다. 



  • Client Productivity Layer 없이 JAX-WS RI 표준 만으로 구현하려면, apache 프로젝트의 Axis2 기반으로, 직접 Security 및 http base64/mtom 변환 및 통신 로직을 구현하면 될 것이다.