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

한국 developerWorks  >  SOA와 웹서비스  >

WSRF를 통해 Storage Resource Broker와 Globus 통합하기 (한글)

SRB 카탈로그를 쿼리하고 데이터를 전송하는 자바 서비스

developerWorks
문서 옵션

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

샘플 코드

영어원문

영어원문


제안 및 의견
피드백

난이도 : 중급

Vladimir Silva, Software Engineer, Consultant

2007 년 7 월 24 일

Web Services Resource Framework (WSRF)과 Storage Resource Broker (SRB) 사이에는 차이가 있습니다. 이들을 어떻게 통합할 수 있을까요? 이 글에서, SRB 카탈로그와 데이터 트랜스퍼 서비스 코드를 쿼리하는 WS 서비스와 Eclipse 구현을 설명합니다.

머리말

Web Services Resource Framework (WSRF)는 웹 서비스를 사용하여 Stateful 리소스를 통합하고 액세스 하는 오픈 프레임웍을 정의하고 있다. Storage Resource Broker (SRB)는 여러 조직들과 이종의 스토리지 시스템들간 분산될 수 있는 공유 컬렉션을 지원하는 데이터 그리드 관리 시스템이다. 이 두 가지는 전산 및 데이터 그리드 미들웨어용 프레임웍을 각각 정의하고 있다. 하지만, 통합을 막는 이 두 개의 소프트웨어 사이에 차이가 있다. SRB 사용자들은 인증 메커니즘으로서 Grid Security Infrastructure (GSI)를 지원함으로써 이 차이를 좁히고자 한다. 이 글에서, SRB 카탈로그를 쿼리하는 Web services (WS)와 이러한 소프트웨어 컴포넌트들 간 강력한 통합을 제공하는 데이터 트랜스퍼 서비스 코드를 제공함으로써 차이를 좁히는 방법을 설명한다. 이러한 서비스들의 Eclipse 구현들도 제공한다.




위로


WS SRB 쿼리 서비스

Globus와 SRB 메타데이터 카탈로그(MCAT)간 통합을 제공하기 위해, WS 서비스는 SRB에 대한 쿼리를 실행하기 위해 만들어 졌다. 이는 Globus가 GridFTP 같은 데이터 전송 프로토콜과 통합하는 방식과 비슷하다. 예를 들어, Globus는 Reliable File Transfer (RFT) 서비스를 제공하는데, 이는 GridFTP 연산을 수행하는 WS 서비스이다. 그림 1은 SRB 쿼리 서비스의 기본 아키텍처의 흐름도 모습이다.


그림 1. SRB 쿼리 서비스 아키텍처
SRB 쿼리 서비스 아키텍처

그림 1은 WS SRB 쿼리 서비스의 아키텍처 모습이다. 쿼리 클라이언트는 두 개의 기본 연산인 생성(create)과 쿼리(query)를 제공한다. 생성 연산이 하는 일은 쿼리 서비스에 대한 End Point Reference (EPR)를 구현하는 것이다. EPR은 SRB 서버 MCAT에 액세스 하는 쿼리 연산에 의해 사용된다. 이 쿼리의 결과는 SRB 서버에서 리턴된 XML 결과 세트이다. 서버 측에서, WS-Query 서비스는 SRB Java API (Jargon - 참고자료)를 사용하여 SRB MCAT을 쿼리하고, 결과 객체를 리턴한다. 이 객체는 XML로 번역되는데, 이것이 클라이언트로 리턴된다. WS 서비스의 기본 골격은 여러 파일들로 구성된다.




위로


서비스 컴포넌트

WS 서비스는 서비스의 복잡성에 기반하여, 크기와 기능면에서 다양한 특정 파일들로 구성되어 있다.


표1. 서비스 컴포넌트
파일설명
Service Description Language (WSDL) query_service.wsdlWS 서비스에서 가장 중요한 파일들 중 하나이다. 웹 서비스에 의해 수행된 연산을 정의한다. Globus에서, WSDL 파일은 메인 서비스 파일 안에 포함된 바인딩 파일을 갖고 있다. WSDL 파일은 WSDL2Java 같은 유틸리티에 의해 서비스 스텁으로 변환되어야 한다.
Ant 빌드 태스크(build.xml)다음과 같이 많은 개발 태스크들을 자동화 한다.
  • WSDL2Java 유틸리티를 사용하여 WSDL 파일에서 Java™ 스텁을 생성한다.
  • 서비스 스텁과 서비스 구현 클래스들을 컴파일 한다.
  • 바이너리, WSDL, 유틸리티 파일들을 개발용 그리드 압축 파일(GAR)로 압축한다.
  • 서비스 압축 파일을 GT4 컨테이너로 전개 또는 전개 해제한다.
전개 디스크립터서비스 연산을 실행하는 클래스, 요청 디스패처, 서비스 범위 등, 서비스 자체에 대한 서비스 컨테이너 정보를 제공한다.
보안 설정메시지 레벨의 보안 인증을 해당 연산에 설정한다.
Java Naming과 Directory Interface (JNDI) 설정서비스가 리소스를 가져오기 위해 사용해야 하는 홈 인터페이스를 지정한다.
서비스 구현 클래스홈 인터페이스, 서비스, 영속 리소스 클래스 같은 서비스 연산을 실행하는 클래스이다.
서비스 클라이언트 클래스각각의 서비스 연산(createquery)용 클래스이다.




위로


WS-Service WSDL 파일

WS 서비스에서 가장 중요한 파일들 중 하나이다. WSDL2Java 유틸리티에 의해 사용되어, WSDL에서 스텁, 골격, 데이터 유형들을 구현한다. WSDL2Java는 클라이언트에 필요한 바인딩을 생성하고, JAX-RPC 스팩을 따른다. 다행히도, 이는 서비스를 수반하는 Ant 빌드 파일에 의해 자동화 된다. 이 스텁은 WSDL의 목표 네임스페이스에 의해 정의된 위치에 만들어지는데, 여기에서 네임스페이스는 자바 패키지로 매핑된다.


표 2. WS-Service WSDL 파일
WSDL생성된 자바 클래스
유형 섹션의 각 엔트리용자바 클래스
이 유형이 inout/out 매개변수로서 사용된다면 홀더(holder)이다.
각 portType자바 인터페이스
각 바인딩스텁 클래스
각 서비스서비스 인터페이스
서비스 구현(또는 로케이터)

SRB 쿼리 서비스용 WSDL은 Listing 1에 나타나 있다. 목표 이름 공간의 이름을 주목하라. (http://srb.com/service). 이 이름은 WSDL2Java 툴에 의해 사용되어 자바 패키지 com.srb에서 스텁을 생성한다. 이 파일에는 또한 바인딩 파일 quey_bindings.wsdl이 포함되는데, 여기에서 서비스 연산이 정의된다. 다음은 이 서비스에 의해 정의된 기본 서비스 연산들이다.

  • createQuery — SRB 서버에 대한 쿼리를 수행하기 위해 사용되는 서비스의 인스턴스를 만든다. 인풋이 없으며, 쿼리 연산을 호출하기 위해 사용되는 EPR을 리턴한다.
  • query — SRB 서버에 대한 실제 쿼리를 수행한다. 인풋은 쿼리 스트링이고 쿼리 결과를 XML로 리턴한다.
  • SetTerminationTime — 리소스 수명 시간의 값을 설정한다.
  • Destroy — 서비스를 처리하고, 리소스를 해제한다.
  • QueryResourceProperties — 클라이언트가 리소스의 프로퍼티 문서에 대한 쿼리를 실행하도록 한다.
  • GetResourceProperty — 클라이언트가 특정 서비스 프로퍼티의 값을 가져오도록 한다.

Listing 1. WS-SRB Query WSDL 파일
                
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions name="Query" 
	targetNamespace="http://srb.com/service" 
	xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
	xmlns:binding="http://srb.com/bindings" 
	xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">

  <wsdl:import namespace="http://srb.com/bindings" 
	location="query_bindings.wsdl"/>

  <wsdl:service name="SRBQueryService">
    <wsdl:port name="QueryPortTypePort" 
	binding="binding:QueryPortTypeSOAPBinding">
      <soap:address location="http://localhost:8080/wsrf/services/"/>
    </wsdl:port>
  </wsdl:service>
</wsdl:definitions>




위로


전개 디스크립터

Listing 2는 전개 디스크립터의 일부를 나타낸다. 서비스에 대한 컨테이너 정보를 나타내고 있다. 이 서비스들은 SecureSRBQueryService라는 이름을 가진 <service> 엘리먼트 안에서 기술된다. use="literal"style="document" 애트리뷰트를 주목하라. 이 애트리뷰트들은 모든 WSRF/WSN 서비스에 사용되어야 한다. 서비스에 대한 매개변수는 <parameter> 엘리먼트 내에 정의된다.


표 3. 전개 디스크립터 매개변수
이름설명
allowedMethodsClass서비스 연산을 포함하고 있는 클래스 이름이다. WSDL2Java 유틸리티에 의해 WSDL에서 생성된다.
handlerClass서비스 메소드에 대한 요청 디스패처를 지정한다. 기본 디스패처는 연산 공급자와 보안 지원 같은 특별한 기능을 가진 Apache AXIS (org.globus.axis.providers.RPCProvider) 이다.
className서비스 메소드를 실행하는 클래스이다.
wsdlFileWSDL 파일에 대한 경로이다. 경로는 상대적 또는 절대적이다. 상대 경로가 권장된다.
ScopeRequest, Application 또는 Session 등 서비스의 범위를 나타낸다. Request는 각 SOAP 요청을 위해 새로운 서비스 객체가 만들어지는 것을 의미한다. Application은 서비스 객체에 대한 하나의 인스턴스가 만들어 지고, 서비스에 대한 모든 SOAP 요청에 사용된다는 것을 의미한다. Session은 서비스에 액세스 하는 세션에서 실행되는 클라이언트를 위해 만들어 진다.
Providers연산 공급자나 클래스 이름을 공간 분리 리스트로 지정한다. 연산 공급자는 웹 서비스 컴포넌트를 모듈화 하는데 사용된다.


Listing 2. 전개 디스크립터 파일 (deploy-server.wsdd)
                
<service name="SecureSRBQueryService" provider="Handler" 
        use="literal" style="document">
        <parameter name="allowedMethodsClass" 
            value="com.srb.QueryPortType"/>
        <parameter name="handlerClass" 
            value="org.globus.axis.providers.RPCProvider"/>
        <parameter name="className" 
            value="org.globus.wsrf.srb.query.QueryService"/>
        <wsdlFile>share/schema/core/srb/query/query_service.wsdl</wsdlFile>
        <parameter name="scope" value="Application"/>
        <parameter name="providers" value="
            DestroyProvider SetTerminationTimeProvider GetRPProvider 
            QueryRPProvider GetMRPProvider 
            SubscribeProvider GetCurrentMessageProvider"/>
	<parameter name="securityDescriptor" 
	    value="@config.dir@/security-config.xml"/>
</service>




위로


보안 설정

보안 설정은 서비스 연산에 메시지 레벨 보안 인증을 설정하는데 사용된다. 메시지 레벨 보안에서, 메시지들은 애플리케이션에 의해 암호화 된다. 네트워크 레이어에서 데이터가 암호화 되는 전송 레벨 보안(HTTPS)과는 반대된다. 메시지 레벨 보안은 WS-Security, XML Encryption, XML Signature 표준에 기반하고 있다. 인증 메소드는 다음과 같이 될 수 있다.

  • 없음
  • GSISecureConversation — 클라이언트와 서비스 간 처음 구축된 보안 콘텍스트이다. 이 콘텍스트는 메시지의 서명/유효성 검사/암호화/암호 해독에 사용된다.
  • GSISecureMessage — 메시지는 두 단계에 걸쳐 X509 크리덴셜로 서명 또는 암호화 된다.
    1. 128 비트의 키 크기를 가진 AES를 사용하여 생성된 대칭 키(symmetric key)는 메시지의 바디를 암호화 하는데 사용된다.
    2. 유사 키(symmetric key) 자체는 수신자의 퍼블릭 키로 암호화 된다.

GSI Secure Conversation는 GSI Secure Message 보다 세 개 더 많은 라운드 트립을 필요로 하는데, 이 때문에 GSI Secure Message는 단일 요청-응답 상호 작동에 더 적합하다.


Listing 3. SRB 쿼리 서비스 연산용 인증 메소드를 보여주는 서비스 보안 설정 파일(security-config.xml): create, destroy, query
                
<securityConfig xmlns="http://www.globus.org">
    <method name="createQuery">
        <auth-method>
            <GSISecureConversation/>
        </auth-method>
    </method>
    <method name="destroy">
        <auth-method>
            <GSISecureConversation/>
        </auth-method>
    </method>
    <method name="query">
        <auth-method>
            <GSISecureConversation/>
        </auth-method>
    </method>
    <auth-method>
        <none/>
    </auth-method>
    <authz value="self"/> 
</securityConfig>




위로


Java Naming and Directory Interface (JNDI) 설정

Java Naming and Directory Interface는 객체를 검색하는 애플리케이션 프로그래밍 인터페이스(API)이다. 이 API로 호출함으로써, 애플리케이션은 사용자 친화적인 JNDI 이름으로 구분된 리소스와 기타 프로그램 객체들을 배치한다. WSRF 내에서, JNDI 설정은 <resource> 엘리먼트를 사용하여 서비스가 사용해야 하는 홈 인터페이스가 무엇인지를 지정한다. 리소스의 이름은 홈(home)이고 유형은 이를 구현하는 클래스이다. 매개변수는 다음과 같이 <parameter> 엘리먼트 내에서 정의된다.


표 4. JNDI 매개변수
이름설명
factory서비스 객체를 검색하는데 사용되는 JNDI 팩토리의 클래스
resourceClass이 서비스에 사용할 수 있는 리소스의 클래스 이름
resourceKeyName리소스에 대한 고유 식별자
resourceKeyType자바 유형의 리소스 키


Listing 4. JNDI 설정 파일(deploy-jndi-config.xml)
                
<service name="SecureSRBQueryService">
  <resource
    name="home"
    type="org.globus.wsrf.srb.query.QueryHome">
	<resourceParams>
          <parameter>
          	<name>factory</name>
                <value>org.globus.wsrf.jndi.BeanFactory</value>
                </parameter>
           <parameter>
                <name>resourceClass</name>
                <value>org.globus.wsrf.srb.query.PersistentQuery</value>
           </parameter>
           <parameter>
                <name>resourceKeyName</name>
                <value>{http://srb.com}QueryKey</value>
           </parameter>
           <parameter>
                <name>resourceKeyType</name>
                <value>java.lang.Integer</value>
           </parameter>
         </resourceParams>
  </resource>
</service>




위로


서비스 구현 클래스

서비스 클래스들은 서버 측과 클라이언트 측으로 나뉜다. 기본 WS 서비스는 다음 클래스들로 구성된다.


표 5. 서비스 구현 클래스
이름설명
Home홈 클래스가 하는 일은 새로운 서비스 인스턴스를 만드는 것이다. 서비스에 대한 고유 키를 리턴한다.
Service서비스 클래스는 서비스 연산을 구현한다. SRB 쿼리 서비스의 경우 연산은 다음과 같다.
  • Create — 홈 클래스에 대한 JNDI 룩업을 수행하고, 서비스에 대한 End-Point-Reference을 만들고, EPR을 캡슐로 만든 응답을 리턴한다.
  • Query — WS-Resource (이 경우 쿼리 리소스)를 만든다. SRB 서버에 대한 쿼리를 실행하고 WS-Resource에 결과를 저장한다.
SRB Query SRB만의 로직을 포함하고 있다. SRB 서버로 연결하여, 쿼리를 수행하고, 결과 세트를 XML로 변환한다.

SRB 쿼리는 전통적인 웹 서비스로서 쉽게 구현될 수 있다는 것을 알고 있을 것이다. 사실, WSRF를 구현할 필요가 없다. 우리의 목표는 SRB와 Globus 툴킷을 통합하는 것이다.




위로


서비스 설정

서비스 컴파일과 전개는 Ant 태스크(build.xml)에 의해 자동화 된다. 서비스를 구현하려면, 다음을 실행한다.

$ cd eclipse//workspace/ws-srb
$ ant 

프로젝트 소스 디렉토리에서 컨테이너에 서비스를 컴파일 및 전개하기:

$ export GLOBUS_LOCATION=[SET PATH HERE]
$ cd eclipse//workspace/ws-srb
$ ant deploy 

서비스에서 전개 해제하기:

	$ ant undeploy

SRB 서버는 UNIX®-계열 OS에서만 실행된다. 따라서, UNIX GT4 컨테이너에 서비스를 전개하는 것이 좋다. 하지만, win32 컨테이너에 서비스를 전개하고 UNIX SRB 서버를 쿼리하는 것도 가능하다. 하지만 서비스는 이러한 방식으로 테스트되지 않았다.




위로


샘플 호출

Ant 전개 태스크는 클라이언트 런처를 생성한다. 서비스를 테스트 하기 위해서는, 컨테이너를 재 시작 하고 다음을 실행한다.

1) ws-srb-create -o srb.epr 
	-s https://myhost134.67.66.53:8443/wsrf/services/SRBQueryService
https://myhost:8443/wsrf/services/SRBQueryService가 서비스 팩토리라면, 이것은 SRB를 쿼리하는데 사용되는 WS 서비스에 대한 EPR을 생성한다. EPR은 다음과 같은 모습이다.

Listing 5. WS-SRB 쿼리 EPR
                
<ns1:QueryReference xsi:type="ns2:EndpointReferenceType" xmlns:ns1="http://srb.c
om" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns2="http://sche
mas.xmlsoap.org/ws/2004/03/addressing">
 <ns2:Address xsi:type="ns2:AttributedURI">https://134.67.66.53:8443/wsrf/servic
es/SRBQueryService</ns2:Address>
 <ns2:ReferenceProperties xsi:type="ns2:ReferencePropertiesType">
  <ns1:QueryKey>21539046</ns1:QueryKey>
 </ns2:ReferenceProperties>
 <ns2:ReferenceParameters xsi:type="ns2:ReferenceParametersType"/>
</ns1:QueryReference>

2) ws-srb-query -e srb.epr "user name = vsilva, size > 10"

1 단계에서 EPR을 사용하면서, 위 쿼리는 10 바이트 보다 큰 사용자 vsilva에 속한 파일을 가져온다.

3) ws-srb-query -e srb.epr "Project Name = Foo, user like silva"

이 쿼리는 스트링 silva를 가진 프로젝트 Foo에 대한 사용자 정의 메타데이터 파일을 검색한다.




위로


샘플 아웃풋

아웃풋은 언제나 XML로 리턴된다. 모든 데이터는 <MetaDataRecordList> 엘리먼트에 인클로즈 되는데, 여기에 한 개 이상의 <Record> 엘리먼트가 포함된다. 필드는 이름, 디스크립션, 값에 의해 기술된다.


Listing 6. 쿼리 아웃풋 XML
                
<MetaDataRecordList len="9">
        <Record rank="0" fields="7">
                <Field type="3">
                        <Name>file name</Name>
                        <Desc>data name</Desc>
                        <Value>foo.txt</Value>
                </Field>
                <Field type="3">
                        <Name>user group name</Name>
                        <Desc>name of user group</Desc>
                        <Value>vsilva</Value>
                </Field>
                <Field type="3">
                        <Name>user name</Name>
                        <Desc>user name</Desc>
                        <Value>vsilva</Value>
                </Field>
                <Field type="3">
                        <Name>user domain</Name>
                        <Desc>user domain name</Desc>
                        <Value>NCC</Value>
                </Field>
                <Field type="0">
                        <Name>size</Name>
                        <Desc>size of data</Desc>
                        <Value>10</Value>
                </Field>
                <Field type="3">
                        <Name>file comments</Name>
                        <Desc>comments on data</Desc>
                        <Value></Value>
                </Field>
                <Field type="3">
                        <Name>owner domain</Name>
                        <Desc>domain of data creator</Desc>
                        <Value>NCC</Value>
                </Field>
        </Record>
        ...
</MetaDataRecordList>




위로


Globus/SRB 데이터 전송 통합

언급한 것처럼, SRB 개발자들은 인증 메커니즘들 중 하나로서 GSI를 지원함으로써 첫 번째 통합 단계를 취한다. 게다가, SRB URL에 대한 지원을 Globus 데이터 전송 서비스에 추가함으로써 긴밀한 통합이 이루어진다. 이것의 목표는 이루기 매우 간단하다. SRB URL에 대한 지원을 org.globus.io 자바 패키지에 추가하는 문제이다. 이는 Globus 툴킷의 데이터 전송 서비스의 토대이다.

SRB는 표준과 GSI라는 특징이 있다. GSI SRB는 GSI 라이브러리로 컴파일 되어야 한다. 따라서, 이러한 두 개의 특징들을 구분하려면, 두 개의 다른 URL 패턴들이 사용된다.

  • 표준 SRB의 경우, 패턴은 srb://[userName.domainHome[:password]@]host[:port][/path]이다.
  • GSI 버전의 경우, 패턴은 gsisrb://host[:port][/path]이다.

예를 들어, URL srb://vsilva.dev:secret@myhost.com:5544//home/vsilva.dev/myfile은 포트 5544에 있는 호스트 myhost.com용 도메인 dev가 있는 사용자 vsilva의 /home/vsilva.dev 디렉토리에 있는 myfile 파일을 참조한다. GSI 실행 SRB의 경우, 같은 URL은 gsisrb://myhost.com:5544//home/vsilva.dev/myfile이 된다. 사용자 이름, 도메인, 패스워드가 필요하지 않다. 프록시 인증을 인증의 수단으로 사용하기 때문이다.

이러한 새로운 URL 스킴의 구현은 매우 간단하고, Globus Java Client (CoG) 라이브러리의 두 개의 파일들에 몇 가지 변경 사항을 필요로 하고, 두 개의 새로운 클래스도 추가해야 한다. 변경 사항에 대해서는 표 1에 상세히 나와있다.


표 6. URL 스킴
패키지클래스 이름설명
org.globus.cogGlobusUrlCopy GlobusUrlCopy는 다중 프로토콜들 간 데이터 전송을 수행하는데 사용되는 명령행 툴이다. 이 파일에서 유일하게 수정해야 할 것은 헬프 텍스트에 새로운 URL 스키마, srb://와 gsisrb://를 추가시키는 것이다.
org.globus.cogUrlCopy UrlCopy는 모든 작업들이 수행되는 장소이다. 두 개의 메소드 -- getInputStreamgetOutputStream -- 는 새로운 SRB 인풋 스트림에 대한 지원을 포함하도록 수정되어야 한다.
org.globus.io.streams SRBInputStream (new) 이 새로운 클래스는 GlobusInputStream에서 상속받은 것이고, SRB 파일에서 온 인풋 스트림에 읽기 연산을 제공한다.
org.globus.io.streamsSRBOutputStream (new) GlobusOutputStream에서 상속받은 것으로서, SRB 파일에 대한 아웃풋 스트림에 쓰기 연산을 제공한다.


Listing 7. UrlCopy 명령행 툴을 수정하여 SRB URL 지원 추가하기
                
/* Vanilla SRB */
else if (fromP.equalsIgnoreCase("srb")) {
	in = new SRBInputStream(new SRBFile(new URI(srcUrl.getURL())) );
}
/* gsi enabled SRB */
else if (fromP.equalsIgnoreCase("gsisrb"))  {
	CoGProperties cogProps = CoGProperties.getDefault();
            	
    	//uses the ~/.srb/MdasEnv user info file
            SRBAccount srbAccount = new SRBAccount( );
            	
    	//set the password option to GSI_AUTH
    	srbAccount.setOptions( SRBAccount.GSI_AUTH );

    	//give the file path of your proxy file instead of the a password
    	srbAccount.setPassword( cogProps.getProxyFile() );

	//If the CA locations are not defined in your cog.properties file:
    	srbAccount.setCertificateAuthority(cogProps.getCaCertLocations());
    			
    	SRBFileSystem srbFileSystem = new SRBFileSystem( srbAccount );

    	SRBFile srbFile = new SRBFile( srbFileSystem, srcUrl.getPath() );
    	in = new SRBInputStream(srbFile) ;

} else {
...

Listing 7은 SRB URL에 대한 지원을 추가하기 위해 UrlCopy 명령행 툴에 필요한 변경 사항을 보여준다. vanilla SRB의 경우, 변경 사항은 극히 단순하다. GSI SRB의 경우, GSI 스팩의 옵션을 SRB 계정 객체에 추가하면 된다. Globus IO 스트림 패키지 org.globus.io.streams는 새로운 URL 스킴에 대한 지원을 쉽게 추가할 수 있도록 해준다. 다행히도, SRB는 모든 네트워크와 IO 연산에 대한 스트림을 이미 지원하고 있다.




위로


SRB 환경 및 테스팅

SRB 환경은 사용자 홈 디렉토리의 .MdasEnv 파일에서 정의된다. GSI 실행 SRB의 경우, Listing 8에서는 컬렉션(홈 디렉토리) 이름, 도메인, 사용자 이름, 서버 호스트, 포트, 기본 리소스, 인증 스킴(GSI), 서버 인증 식별 이름(SERVER_DN)을 포함하여 사용자 환경을 나타내고 있다.


Listing 8. GSI 실행 SRB용 환경
                
$ more $HOME/srb/.MdasEnv
mdasCollectionName '/nccZone/home/globus.NCC'
mdasCollectionHome '/nccZone/home/globus.NCC'
mdasDomainName 'NCC'
mdasDomainHome 'NCC'
srbUser 'globus'
srbHost 'ebony.rtpnc.epa.gov'
srbPort '5544'
defaultResource 'nccResc'
AUTH_SCHEME 'GSI_AUTH'
SERVER_DN '/O=Grid/OU=GlobusTest/OU=simpleCA-host.domain/CN=host/ebony'

테스팅은 수정된 globus-url-copy 명령어를 사용하여 이루어진다.

  1. GSIFTP 서버에서 user vsilva 밑에 있는 vanilla SRB로 /tmp/gtk24.zip 파일을 전송한다. 패스워드는 비밀로 한다.
    	globus-url-copy 
    		gsiftp://host1:2811//tmp/gtk24.zip
    		srb://vsilva.dev:secret@host2:5544//home/vsilva.dev/gtk24.zip
    
  2. GSIFTP 서버에서 vsilva 사용자 밑에 있는 GSI-enabled SRB로 /tmp/gtk24.zip 파일을 전송하기:
    	globus-url-copy 
    		gsiftp://host1:2811//tmp/gtk24.zip 
    		gsisrb://host2:5544//home/vsilva.dev/gtk24.zip
    
  3. vanilla와GSI SRB (디버그 모드) 사이에 두 파일들을 전송하기:
    	globus-url-copy -debug
    		srb://vsilva.dev:secret@host1:5544//home/vsilva.dev/gtk24.zip
    		gsisrb://host2:5544//home/vsilva.dev/gtk24.zip
    



위로


맺음말

WSRF의 목표가 스마트 서비스(데이터를 기억할 수 있는 서비스)를 구현하는 것이 목표라고 할 때, 여러분은 WSRF로서 SRB 쿼리를 구현해야 하는지가 궁금할 것이다. 결국 쿼리를 기억할 필요가 없다. 물론 SRB 쿼리가 전통적인 서비스로서도 구현될 수는 있다. 이 글에서는 SRB와 Globus 간 차이를 좁히고, 데이터와 전산 그리드 간 격차를 줄이는 것을 설명했다.





위로


다운로드 하십시오

설명이름크기다운로드 방식
Sample codegr-srbwsrf.zip1.1MBHTTP
다운로드 방식에 대한 정보


참고자료

교육

제품 및 기술 얻기

토론


필자소개

Vladimir Silva는 에콰도르의 키토에서 태어났다. Polytechnic Institute of the Army에서 엔지니어링 학위를 받고, 미들테네시주립대학교에서 컴퓨터 공학 석사 학위를 받았다. 졸업 후에, IBM WebAhead 기술 씽크탱크에 합류하여, IBM 내부 그리드와 IBM Grid Toolbox 같은 프로젝트에서 소프트웨어 엔지니어로 활동했다. developerWorks에 그리드 관련 기술 자료들을 기고하고 있으며, Globus Toolkit (GT4)의 최신 버전에도 참여했다. Grid Computing for Developers의 저자이기도 하다. OCP, MCSD, MCP를 포함하여 수많은 IT 인증을 보유하고 있다.




기사에 대한 평가


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



 


 


 


이 문서 북마킹 하기

mar.gar.in mar.gar.in naver naver eolin eolin del.icio.us del.icio.us





위로


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