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

한국 developerWorks  >  XML  >

새로운 XML 유효성 확인 기술인 CAM에 대한 소개

시맨틱 및 구조적 유효성 확인을 통해 다음 단계로 도약하기

developerWorks
문서 옵션
PDF format - Fits A4 and Letter

PDF - Fits A4 and Letter
37KB (10 pages)

Get Adobe® Reader®

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

영어원문

영어원문


제안 및 의견
피드백

난이도 : 초급

Brian Carey, Information Systems Consultant, Carey Development Corporation

원문 게재일 : 2009 년 9 월 22 일
번역 게재일 : 2009 년 10 월 27 일

XML 문서는 DTD(가능성이 낮음)나 XML 스키마(가능성이 높음)를 대상으로 그 유효성을 확인하게 됩니다. 최근에는 CAM(Content Assembly Mechanism)이라고 하는 새로운 기술이 등장했습니다. 이 기술은 OASIS(Organization for the Advancement of Structured Information Standards)에서 보증합니다. CAM은 실제 데이터 내용과 관련된 비즈니스 규칙 및 XML 문서 시맨틱을 훨씬 더 유연하게 정의할 수 있기 때문에 XML 스키마보다 한 단계 앞선 기술로 평가됩니다. 이 기사에서는 CAM을 사용함으로써 얻을 수 있는 혜택과 그 개요를 광범위하게 살펴봅니다.

CAM을 학습하기 전에

요약 부분에서 설명한 바와 같이 CAM은 XML 문서의 유효성을 확인할 수 있는 최신 기술이다. 이는 곧 이전에도 XML 문서의 유효성을 확인할 수 있는 기술이 있었다는 것을 의미한다.

자주 사용하는 약어
  • CCTS: Core Components Technical Specification
  • DTD: Document Type Definition
  • IT: Information Technology
  • OWL: Web Ontology Language
  • XPath: XML Path Language
  • XML: Extensible Markup Language
  • XSD: XML Schema Definition

가장 오래된 기술은 문서 유형 정의(Document Type Definition)를 의미하는 DTD이다. 새로운 기술이 처음 개발되면 늘 그러하듯이 이 기술에도 한계가 있었다. 이 기술을 사용하면 XML 문서 구조의 유효성을 확인하기가 용이했지만 시맨틱 면에 있어서는 그다지 효과적이지 못했다. 또한 이 기술은 유효한 XML 구조를 정의하기에는 다소 어색한 구문을 사용했다.

DTD는 나중에 XML 스키마 정의(Schema Definition)를 뜻하는 XSD로 대체되었다. 이 기술은 XML 문서의 유효성을 확인할 수 있는 훨씬 더 강력한 수단이었다. 첫째로 XSD는 XML 문서와 유사한 구문을 사용했다. 다음으로는 개선된 시맨틱을 지원했다. 최근 수년 동안 최신 기술자들은 XML 문서의 유효성을 확인하기 위해 DTD보다는 XSD를 사용했다.

CAM 시작

기술의 역사를 돌이켜 보면 멋진 전략을 구축할 수 있는 보다 효과적인 방법이 언제나 있었다. XML의 유효성을 확인하는 기술 또한 예외에서 벗어날 수는 없다. CAM은 XML 문서의 유효성을 확인하기 위해 사용하는 기술 중 가장 최근에 개발된 매우 복잡한 기술이다.

CAM은 OASIS라는 표준 기관에서 제안했다. 이 조직은 웹 서비스 및 ebXML(Electronic Business Extensible Markup Language)과 관련하여 매우 주목할 만한 다수의 스펙을 제공했다.

CAM에는 이전 기술보다 더 강력하고 유연한 기능이 있다. XSD와 달리 CAM에서는 데이터 구조가 비즈니스 규칙에 엄격하게 결합하지 않는다. 또한 CAM에서는 컨텍스트를 중심으로 유효성을 확인하는데, 이는 XSD와 DTD에는 없는 특성이다.

XML에 익숙한 대부분의 사용자에게 CAM은 XSD나 DTD보다 배우기가 더 쉽다. CAM 문서와 XML 인스턴스의 구조 정의 형식이 거의 유사하기 때문이다. 그리고 CAM에서는 비즈니스 규칙을 정의할 때 잘 알려진 XPath를 사용한다.

CAM 템플리트의 구조

Listing 1을 보면 CAM 템플리트의 구조가 복잡하지 않다는 점을 알 수 있다.


Listing 1. CAM 템플리트의 구조

<as:CAM xmlns:as="http://www.oasis-open.org/committees/cam" 
CAMlevel="1" 
version="1.0"> 
<as:Header /> 
<as:AssemblyStructure /> 
<as:BusinessUseContext /> 
</as:CAM> 

루트 요소인 CAM은 템플리트 전체에 사용된 네임스페이스는 물론이고 CAM의 레벨과 버전을 정의한다.

Header 요소는 유효성 확인 문서에 관한 특정 정보를 제공한다. 표시되지 않은 대부분의 하위 요소는 Description, Owner, VersionDateTime으로 설명이 필요 없을 것이다.

AssemblyStructure 요소는 XML 문서 인스턴스의 실제 구조를 정의한다. 이 점에서 CAM과 XSD는 다르다. AssemblyStructure 요소는 XML 문서의 구조를 대상으로 유효성을 확인하지만 이 요소에는 시맨틱 정보가 없다.

마지막으로 BusinessUseContext 요소는 이전 요소에는 없는 비즈니스 규칙을 제공한다. 이 비즈니스 규칙을 어떻게 시행할까? 좋은 질문이지만 CAM에서 구조를 정의하는 방법에 먼저 익숙해져야 한다.

CAM에서 구조를 정의하는 방법

Listing 2에는 CAM에서 단순한 주문서의 구조를 정의하는 방법이 표시되어 있다.


Listing 2. 단순한 주문서를 위한 CAM 구조

<as:AssemblyStructure> 
 <as:Structure ID="myPO" taxonomy="XML"> 
  <PurchaseOrder> 
  <ShippingAddress> 
   <Name>%string%</Name> 
   <Street>%string%</Street> 
   <City>%string%</City> 
   <State>%string%</State> 
   <Zip>%string%</Zip> 
  </ShippingAddress> 
  <ShipDate>%DD-MM-YYYY%</ShipDate> 
  <comment>%string%</comment> 
  <LineItems> 
   <LineItem> 
    <ItemName>%string%</ItemName> 
    <Quantity>%1%</Quantity> 
    <Price>%54321.00%</Price> 
    <Comment>%string%</Comment> 
   </LineItem> 
   </LineItems>
   <TotalPrice>%54321.00%</TotalPrice>
   <ShippingMethod>%string%</ShippingMethod> 
  </PurchaseOrder> 
 </as:Structure> 
</as:AssemblyStructure>

Listing 2에서는 XML 문서의 구조가 XML 인스턴스와 거의 동일하게 정의되어 있음에 유의하자. 이런 점에서 이미 XML 구문을 이해하는 사용자에게는 CAM이 XSD보다 훨씬 더 읽기 쉽다고 대부분의 IT 전문가는 생각한다. CAM은 실제로 XML 인스턴스처럼 기술되지만 관계가 없는 내용으로 되어 있다는 사실이 이러한 상황을 말해주는 것이며 이점은 곧 설명할 것이다.

Structure 요소는 실제 구조 정의의 상위 요소이다. 이 요소에는 이러한 특정 구조를 식별하는 ID 속성이 있다. taxonomy 속성에서는 현재 XML 값만 유일하게 인식된다.

대부분의 요소에는 퍼센트 기호(%)로 구분된 값이 포함되어 있다는 점에 유의한다. 이 값은 XML 인스턴스에 포함될 실제 내용을 처리하기 위한 간단한 플레이스 홀더이다. 이 플레이스 홀더는 유효성 확인 논리를 제공하는 것과는 대조적으로 문서를 한 눈에 이해하기 쉽도록 한다. CAM 템플리트를 구성할 때 일부 사용자는 실제로 Listing 2에 포함된 보다 일반적인 값 대신 해당 요소 내에 예제 값을 입력한다.

이제까지 CAM에서 구조를 정의하는 방법을 살펴보았으므로 비즈니스 규칙을 시행하는 방법을 좀 더 알아볼 차례이다.

CAM에서 비즈니스 규칙을 시행하는 방법

XPath를 사용하면 실제로 이 규칙을 간단하게 시행할 수 있다.

그렇다 바로 XPath를 사용해야 한다.

이제부터 기존의 유효성 확인 기술에 대한 CAM의 또 다른 장점을 살펴보자. CAM은 대부분의 XML 기술자가 이미 이해하고 있는 구문을 사용하여 비즈니스 규칙을 시행한다. 이러한 기술자는 해당 애플리케이션 내에서 CAM 기술을 이용하여 유효성 확인 기능을 구현하기 위해 또 다른 언어를 학습할 필요가 없다.

Listing 3에는 BusinessUseContext 요소에 대한 예가 있다.


Listing 3. CAM을 사용한 비즈니스 규칙 시행

<as:BusinessUseContext> 
 <as:Rules> 
  <as:default> 
   <as:context> 
    <as:constraint action="makeRepeatable(//PurchaseOrder/LineItems/LineItem)"/> 
    <as:constraint action="makeOptional(//LineItem/Comment)"/> 
    <as:constraint action="setLength(//ShippingAddress/State,2)"/> 
    <as:constraint action="setDateMask(//PurchaseOrder/ShipDate,DD-MM-YYYY)"/> 
    <as:constraint action="setNumberMask(//LineItem/Quantity,###)"/> 
    <as:constraint action="setNumberMask(//LineItem/Price,###.##)"/>
    <as:constraint action="setNumberMask(//PurchaseOrder/TotalPrice,###.##)"/> 
    <as:constraint condition="//PurchaseOrder/TotalPrice > 100" 
     action="makeOptional(//PurchaseOrder/ShippingMethod)"> 
   </as:context> 
  </as:default> 
 </as:Rules> 
</as:BusinessUseContext> 

숙달된 XML 개발자라면 이 구조가 이해하기 매우 쉽다. 이는 제한조건에서 XPath를 사용할 뿐만아니라 유효성 확인 규칙이 표준 영어로 이름이 지정되었기 때문이다. 또한 이로 인해 CAM이 매우 유용해 졌다.

이 규칙은 context 요소 내에서 정의된다. 각 규칙은 constraint 하위 요소 중 하나인 action 매개변수이다.

첫 번째 규칙인 makeRepeatable(//PurchaseOrder/LineItems/LineItem)에 유의하자. 이 이름이 의미하듯이 이 규칙은 LineItems 요소의 하위 요소인 LineItem이 반복 가능하다고 검사기에 알려준다. 이는 일반 주문서에는 다양한 항목이 있을 수 있기 때문에 완벽하게 하기 위해서는 항목이 많이 필요하다는 것을 의미한다.

다음 규칙은 Comment 요소에 관한 것이다. 이 규칙은 Comment 요소가 선택적이라는 점을 나타낸다. 다시 말해서 XML 문서에서 Comment 요소가 비어 있어도 유효하다.

다음 규칙은 State 요소 문자의 최대 길이를 지정한다. 이 경우에 최대 길이는 2이고 이 값은 미국 주의 우편 약어에 해당한다.

다음 규칙은 날짜의 형식을 지정한다. 여기서는 DD-MM-YYYY 형식을 사용했지만 다른 형식을 사용할 수도 있다. 이 경우에 유효한 날짜는 03-03-2009이며 2009년 3월 3일을 의미한다.

다음 규칙은 Quantity 요소의 형식을 지정한다. 이 경우에 이 요소의 내용은 ### 마스크에 맞는 숫자이다. 다시 말해서 Quantity 요소가 네 자리인 품목이 있는 주문서는 유효하지 않다. 이 규칙에 의하면 한 제품의 주문 수량이 999를 초과하는 품목은 주문서에 포함될 수 없다.

다음 두 규칙인 PriceTotalPrice는 이전 규칙과 유사하다. Quantity 규칙과 마찬가지로 이 두 규칙에서는 숫자 마스크를 지정한다. 숫자 마스크에서 소수점을 사용할 수 있다는 점이 다르다. 이는 두 요소의 값을 달러로 센트까지 표기하기 때문이다.

마지막으로 특히 주목할만한 규칙이 있다. 이 규칙에 컨텍스트 중심 제한조건이 사용되고 있다는 점이 흥미롭다. 이 규칙은 어떤 역할을 할까? 이 규칙은 특정 요소의 내용을 바탕으로 XML 문서의 유효성을 확인할 수 있는 제한조건이다. 이 경우에 주문서 총계가 100달러를 넘으면 XML 문서의 ShippingMethod 요소가 비게 된다. 그렇지 않은 경우에는 해당 값이 채워진다. 여기에서 적용한 비즈니스 규칙에 의하면 총계가 100달러 이상인 주문은 자동으로 표준 배송(무료)을 한다. 총계가 100달러 미만인 경우에는 XML 문서에서 배송 방법이 지정된다.

종합

Listing 4에는 앞서 살펴본 내용을 종합한 전체 CAM 문서가 표시되어 있다.


Listing 4. 종합된 전체 CAM 문서

<?xml version='1.0'?> 
<as:CAM CAM level="1" version="1.0" 
	xmlns:as="http://www.oasis-open.org/committees/cam" > 
<as:Header> 
 <as:Description>Simple Purchase Order</as:Description> 
 <as:Owner>developerWorks</as:Owner> 
 <as:Version>0.1</as:Version> 
 <as:DateTime>2009-07-07T12:00:00</as:DateTime> 
</as:Header> 
<as:AssemblyStructure> 
 <as:Structure ID="myPO" taxonomy="XML"> 
  <PurchaseOrder> 
  <ShippingAddress> 
   <Name>%string%</Name> 
   <Street>%string%</Street> 
   <City>%string%</City> 
   <State>%string%</State> 
   <Zip>%string%</Zip> 
  </ShippingAddress> 
  <ShipDate>%DD-MM-YYYY%</ShipDate> 
  <comment>%string%</comment> 
  <LineItems> 
   <LineItem> 
    <ItemName>%string%</ItemName> 
    <Quantity>%1%</Quantity> 
    <Price>%54321.00%</Price> 
    <Comment>%string%</Comment> 
   </LineItem> 
   </LineItems>
   <TotalPrice>%54321.00%</TotalPrice>
   <ShippingMethod>%string%</ShippingMethod> 
  </PurchaseOrder> 
 </as:Structure> 
</as:AssemblyStructure>
<as:BusinessUseContext> 
 <as:Rules> 
  <as:default> 
   <as:context> 
    <as:constraint action="makeRepeatable(//PurchaseOrder/LineItems/LineItem)"/> 
    <as:constraint action="makeOptional(//LineItem/Comment)"/> 
    <as:constraint action="setLength(//ShippingAddress/State,2)"/> 
    <as:constraint action="setDateMask(//PurchaseOrder/ShipDate,DD-MM-YYYY)"/> 
    <as:constraint action="setNumberMask(//LineItem/Quantity,###)"/> 
    <as:constraint action="setNumberMask(//LineItem/Price,###.##)"/>
    <as:constraint action="setNumberMask(//PurchaseOrder/TotalPrice,###.##)"/> 
    <as:constraint condition="//PurchaseOrder/TotalPrice > 100" 
     action="makeOptional(//PurchaseOrder/ShippingMethod)"> 
   </as:context> 
  </as:default> 
 </as:Rules> 
</as:BusinessUseContext> 
</as:CAM>

아는 바와 같이 Listing 4는 Listing 23을 연결한 것과 거의 동일하다. 이러한 특정 유효성 확인 파일에 관한 정보를 간단히 식별하는 Header 요소가 추가되었을 뿐이다. 이 경우에는 간단한 설명, 소유자, 버전 및 문서 날짜가 추가되었다.

Listing 4에 표시되어 있지는 않지만 Header 요소에는 매개변수가 포함되어 있다. XML 문서의 유효성 확인은 매개변수 값에 따라 변할 수 있다. 예를 들어 noMoreThan10LineItems 매개변수를 true로 설정하면 CAM 문서는 전체 주문에서 LineItem 요소가 단지 10인 비즈니스 규칙을 시행한다. 이 예는 CAM을 이용한 유효성 확인이 얼마나 강력하고 유연한지를 보여준다. 이 매개변수를 간단히 false로 변경하여 해당 규칙을 무효화할 수 있다는 점이 이 기능의 장점이다.

경쟁 기술에 대한 CAM의 장점

특정 기술이 새로 등장했다고 해서 이 기술이 유용하다거나 이전 기술보다 더 높은 ROI(Return On Investment)를 제공하는 것은 분명히 아니다. 그러나 기존 기술과 비교했을 때 CAM에는 몇 가지 확실한 장점이 있다.

먼저 CAM에서는 비즈니스 규칙과 구조가 분리되어 있다. 이점은 소프트웨어 개발 과정 전체에서 반복되는 패턴이며 CAM에 국한된 사항은 아니다. 예를 들면 분산 오브젝트 개발 환경의 MVC(Model-View-Controller) 패턴에서는 모델과 뷰, 컨트롤러가 서로 분리되어 있다. CAM과는 대조적으로 XSD에서는 구조와 비즈니스 규칙이 엄격하게 결합되어 있으며 그 결과 유지보수 오버헤드가 더 높아졌다.

또한 CAM에서는 컨텍스트 중심의 유효성 확인을 사용할 수 있다. 다시 말해서 CAM에서는 특정 요소나 속성의 내용을 기반으로 구조를 동적으로 인식한다. 따라서 요소 X에 특정 값이 있는 경우 비즈니스 규칙이 요소 Y에 적용된다. 그러나 요소 X에 다른 값이 있는 경우에는 해당 비즈니스 규칙이 요소 Z에 적용된다. 이러한 내용과 마지막 규칙이 Listing 3에 표시되어 있다. 이 경우에 총계가 100달러 이상인 주문서는 배송 방법을 지정할 필요가 없는데 이는 이러한 주문의 경우에는 표준 배송비가 무료이기 때문이다. CAM보다 이전에 개발된 기술에는 이러한 복잡한 유효성 확인 기능이 없다.

CAM에서는 규칙 세트와 구조를 분석하는 작업이 훨씬 더 쉽다. 이 구조는 일반적인 트리 형식의 XML 인스턴스로 표현되며 따라서 사용자나 컴퓨터가 훨씬 더 쉽게 읽고 인식할 수 있다. 비즈니스 규칙을 시행하기 위해 사용한 문법 또한 makeRepeatable, makeOptionalsetLength 처럼 직관적이어서 이해하기가 어렵지 않다. 그리고 규칙과 구조가 분리되어 있다고 하더라도 모두 동일한 문서에 있어서 전체 유효성 확인 요구사항을 한눈에 확인할 수 있다. 반면에 XSD에서는 complexType(의미를 알기 어려움)과 같은 직관적이지 못한 정의로 구성된 완전히 새로운 설정을 이해해야 하며 분석하기가 쉽지 않다.

CAM에서는 "새로 배울 필요는 없다"는 개념을 고수하여 XPath를 사용한다. 앞서 살펴본 바와 같이 XPath는 특정 요소에서 비즈니스 규칙을 시행하는 언어이다. XPath는 직관적일 뿐만아니라 배우기도 쉬우며 XML 기술자는 대부분 XPath를 이미 이해하고 있다. 이로 인해 XML 개발자는 비즈니스 논리의 유효성을 확인하기 위해 완전히 새로운 기술을 배워야 할 필요가 없으므로 CAM을 훨씬 더 자주 사용하게 된다. XSD 문법은 XPath와 유사한 점이 없다.

XSD와 비교했을 때 CAM의 또 다른 이점은 CAM을 사용하면 현지화에 대한 요구를 더 쉽게 시행할 수 있다. XSD에서는 열거자(enumeration)가 정적인 관계로 컨텍스트를 인식할 수 없다. 그러나 CAM에서는 컨텍스트 값을 기반으로 특정 열거자를 적용할 수 있다. 신흥 글로벌 마켓플레이스에서는 이처럼 능률적인 유효성 확인 기술이 절실하게 필요하다.

또한 CAM 템플리트는 차세대 SOA(Service-Oriented Architecture)를 지원한다. CAM에서는 BPEL(Business Process Execution Language), BPSS(Business Process Specification Schema) 및 BPMN(Business Process Modeling Notation) 모델링 도구와 같은 비즈니스 처리 기술을 지원한다. Wikipedia에서 인용하자면 "차세대 SOA 익스체인지의 핵심인 템플리트 외부에서, ebXML-regrep 같은 시맨틱 레지스트리 참조와 CCTS 및 OWL과 같은 메타데이터 정의를 지원하기 위해 사용할 수 있는 확장 메커니즘이 CAM에 있다는 것을 SOA의 완성된 모습에서 확인할 수 있다"고 한다. 또한 CAM은 OASIS에서 개발했으며 따라서 사용자는 CAM이 OASIS의 다른 표준과 호환되는지 여부를 OASIS에서 보증할 것이라고 확신할 수 있다.

결론

CAM은 XML의 유효성을 확인하기 위한 최신 기술이다. CAM에는 이전 기술에는 없는 다양한 이점이 있다. 이러한 이점으로는 구조 및 비즈니스 로직의 분리, 컨텍스트를 기반으로 한 동적 유효성 확인, 최신 기술과의 상호 운용성, 낮은 유지보수 오버헤드 그리고 배우기 쉽다는 점을 들 수 있다. 또한 CAM은 믿을만한 표준 기관인 OASIS에서 보증한다.

CAM은 새로운 기술이다. CAM은 그 자체로는 문서화되지 않으며 집단 경험이라는 혜택을 누리지도 않는다. 그러나 CAM은 처음 공개될 때부터 분명히 강력했으며 XML의 유효성을 확인할 수 있는 보다 효과적인 수단임을 보여주었다.

CAM은 널리 보급되었으며 이전 기술을 확고하게 대체하고 있음이 거의 분명하다.



참고자료

교육
  • OASIS CAM Wiki에서 CAM에 관해 자세히 학습할 수 있다.

  • XML Schema Tutorial에서 XML 스키마를 작성하는 방법, XML 스키마가 DTD보다 더 강력한 이유 그리고 애플리케이션에서 XML 스키마를 사용하는 방법을 확인할 수 있다.

  • DTD Tutorial에서 DTD를 사용하는 방법을 학습할 수 있다.

  • Introduction to XML(Doug Tidwell, developerWorks, 2002년 8월): XML(Extensible Markup Language)은 현재 확립된 eBusiness 기술의 최신 전문 용어에서 사라졌다. 여기에서 XML에 대한 정의와 개발 이유에 대해 자세히 살펴보고 XML을 사용하여 전자상거래를 구현하는 방법에 대해 학습할 수 있다.

  • Validating XML(Nicholas Chase, developerWorks, 2003년 8월)에서는 파일과 문서의 유효성을 확인하여 데이터가 무결성 제한조건에 적합한지 검증한다. DTD(Document Type Definition) 또는 XML 스키마 문서를 대상으로 문서를 확인하는 방법과 유효성 확인에 대한 개념을 학습할 수 있다.

  • Design XML schemas for enterprise data(Bilal Siddiqui, developerWorks, 2006년 10월)에서는 W3C XML 스키마 기능을 사용하여 제품 관리를 위한 데이터 형식을 디자인하는 방법을 학습할 수 있다.

  • IBM XML 인증: XML 및 관련 기술에 대한 IBM 인증 개발자가 되는 방법을 찾아볼 수 있다.

  • XML Technical library: developerWorks XML 영역에서 다양한 기술 관련 기사와 팁, 튜토리얼, 표준 및 IBM Redbook을 볼 수 있다.

  • developerWorks 기술 행사 및 웹 캐스트: 이들 세션에 참가하여 최신 기술에 대한 정보를 얻을 수 있다.

  • 기술 서점: 다양한 기술 주제와 관련된 서적을 살펴볼 수 있다.

  • developerWorks 팟캐스트: 소프트웨어 개발자의 흥미로운 인터뷰와 토론을 확인할 수 있다.

제품 및 기술 얻기

토론


필자소개

author photo

Brian Carey는 Java, Java Enterprise, PHP, Ajax 및 관련 기술을 전문으로 하는 정보 시스템 컨설턴트이다. 그의 트위터 주소는 http://twitter.com/brianmcarey이다.




기사에 대한 평가


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



 


 


 


이 문서 북마킹 하기

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





위로


IBM, IBM 로고, ibm.com, DB2, developerWorks, Lotus, Rational, Tivoli 및 WebSphere는 미국 또는 기타 국가에서 사용되는 International Business Machines Corporation의 상표 또는 등록 상표이다. 이와 함께 기타 IBM 상표가 기재된 용어가 상표 기호(® 또는 ™)와 함께 이 정보에 처음 표시된 경우, 이와 같은 기호는 이 정보를 발행할 때 미국에서 IBM이 소유한 등록 상표 또는 일반 법적 상표이다. 또한 이러한 상표는 기타 국가에서 등록 상표 또는 일반 법적 상표이다. 현재 IBM 상표 목록은 웹 "저작권 및 상표 정보"에 있다. Adobe, Adobe 로고, PostScript 및 PostScript 로고는 미국 또는 기타 국가에서 사용되는 Adobe Systems Incorporated의 상표 또는 등록 상표이다. 기타 회사, 제품 및 서비스 이름은 해당 회사의 상표 또는 서비스표이다. 기타 회사, 제품, 및 서비스명은 다른 상표나 서비스 마크일 수 있습니다.

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