sitelink1 | |
---|---|
sitelink2 | |
sitelink3 | http://1 |
sitelink4 | http://ko |
sitelink5 | http://blog.naver.com/sunwoods/120041086551 |
sitelink6 | http://sitelink1 |
통합을 위한 요소 기술, Java와 XML
XML이 제공하는 데이타 통합 기능과 Java API 기능이 조합하여 웹 서비스 개발을 원활하게 지원한다. 비즈니스 통합에 필수적인 요소기술들을 살펴본다.
Java APIs for XML
웹 서비스 개발에 있어서 직면하는 난관은 메시징 교환, 분산 트랜잭션 처리, 보안, 세션관리 및 커넥션 풀(Connection Pool)과 같은 인프라스트럭처 수준의 서비스 기능을 개발하는 것이다. 웹 서비스는 수많은 사용자의 동시 다발적 접속을 지원해야 하기 때문에 상대적으로 애플리케이션이 높 은 확장성을 가져야 한다는 기대를 충족시키기는 쉽지 않다. 이의 대안으 로 제시된 J2EE 프레임워크는 다수의 벤더들이 공급하는 호환성 제품을 통해 이미 검증된 기술로 인정받고 있으며, 웹 서비스를 운용함에 있어서 J2EE가 최상의 프레임워크임을 의심할 여지는 없다.
특히, 내부 조직간의 데이타 공유나 외부 거래기업과의 데이타 교환 및 공유 등 데이타 통합을 위해 기업들이 고민해 온 메시지 형식이나 거래 문서의 표준으로 XML이 정착된 상태이다. 더욱이 메시징 교환 표준으로 사용되는 XML 문서 포맷을 웹 서비스상에서도 적용되도록 JAX(Java APIs for XML) 표준 인터페이스가 제공되어 개발자들이 보다 쉽고 원활하 게 웹 서비스를 구현할 수 있게 되었다.
W3C나 OASIS와 같은 표준화 기구들은 인터넷상의 상호운영성을 위 한 표준 인터페이스 방식을 규정하고, 이 표준을 따르는 기업들의 프로세 스 엔드투엔드에서 상호작용이 교류될 수 있도록 확장된 개발자 API를 제 공한다. 결국 호환성 아래 구현된 결과물은 표준 기능을 준수하게 되며, 동 시에 개발자들도 벤더 종속적인 특수성에 맞춰 구현해야 하는 제약조건에서 벗어날 수 있다<표 3>.
? Java API for XML-based RPC
JAX-RPC(Java API for XML-based RPC)는 메시징 프로토콜로서SOAP를 사용하여 원격지의 거래 상대방 프로세스를 원격 프로시저 호출을 통해 호출하 고 그 결과를 수신하게 된다. 이를 위해 XML 기반 웹 서비스를 개발하는 모든 개발자에게 표준 Java APIs를 제공하여 이미 작성된 코드와 이식된 플랫폼에 상관없이 웹 서비스에 상호 호환성을 유지할 수 있도록 한다.
JAX-RPC는 이전의 Java IDL, RMI(Remote Method Invocation) 방식과 같이 모두 프로시저 호출을 송수신하기 위한 마샬링(Marshalling)과 언마샬링 (Un-marshalling) 인수의 API를가진다.
? Java API for XML Processing
JAXP(Java API for XML Processing)는 Java로 작성된 애플리케이션을 이용하여XML 형식의 데이타를 쉽게 처리해 준다. 이 패키지는 변환을 수행하는 XSLT(XML Stylesheet Language Transformation) 변환기에 접속할 수 있는 기능을 제공한다. 서브패키지는 SAX-(Simple API for XML Parsing)와 DOM-(Document Object Model), 지정된 스트림 API를갖게되며, 이를 통 해 DOM 트리나 SAX 이벤트로부터 직접 변환이 가능하다. 이는 파서 표준 SAX와DOM의 기능을 더욱 강화시켜서 사용자들이 데이타를 이벤트 스트림 으로 파싱할 지 혹은 객체 형태로 파싱할 지에 대한 선택이 가능하다. JAXP 1.1버전은 javax.xml.transform 패키지를 이용해 XSLT를 지원한다. 또한 XSLT 표준을 지원하기 때문에 사용자들은 데이타를 표현하는 방법을 마 음대로 컨트롤할 수 있을 뿐만 아니라 데이타를 다른XML 문서나HTML과같 은 다른 문서 형태로 변환시킬 수도 있다. JAXP는 네임스페이스를 지원하기 때문에 네이밍 충돌이 발생하는 경우에도 DTD를 이용한 작업을 진행할 수 있 게한다.
? Java Architecture for XML Binding
JAXB(Java Architecture for XML Binding)는XML 문서와 Java 객체 간에 양방향 매핑을 생성하기 위한 신속하고 편리한 방법을 제공한다. DTD가 주어 지면 JAXB 컴파일러는 XML스키마에 의해 XML 문서를 파싱하는 코드를 포 함한 Java 클래스 집합을 생성한다. 개발자는 생성된 클래스를 이용해XML 문 서를 표현하는 Java 객체 트리를 구축할 수 있고, 트리의 컨텐츠를 다룰 수 있 으며 트리에서XML 문서를 재생성할 수 있다.
JAXB 애플리케이션을 사용할 때 요구되는 것은 JAXB의 현재 버전을 위한 DTD용 스키마가 전부다. 사용자는 스스로 DTD를 작성하거나 JAXR을 통해 접근할수있는표준DTD 리포지토리와 같은 곳에서DTD를구할수있다.
? Java API for XML Messaging
JAXM(Java API for XML Messaging)은XML 문서를J2EE 기반 플랫폼에 서 인터넷으로 전송하기 위한 표준 전송방식을 제공한다. 이것은 첨부 사양을 포함한 SOAP 1.1이나 ebXML 같이 잘 정의된 메시징 프로토콜과 함께 동작 할수있도록확장될수있다.
비즈니스는 전형적으로 메시징 프로바이더 서비스를 이용하지만 실제로 메시 징 프로바이더 서비스는 메시지를 전송하고 라우팅하는 데 요구되는 작업을 수 행한다. 메시징 프로바이더를 이용하면 모든 JAXM 메시지는 이를 통해 전송 되므로, 사업자가 메시지를 전송하면 메시지는 우선 발송자의 메시징 프로바이더로 전송된 다음 다시 수신자의 메시징 프로바이더로 전송된 후에 최종적으로 수신자에게 전달된다. 메시지가 최종 목적지로 보내지기 전에 중간 수신지를 경유하도록 할 수도 있으며, 메시지의 신원 확인이나 저장, 전달 여부 등 모든 세세한 사항까지 신경을 써야만 한다. 게다가 제대로 전달되지 않은 메시지는 반드시 재전송해야 한다.
JAXM 메시지는 두 개의 파트로 구성되는데, 하나는 반드시 필요한 SOAP 파 트이고 또 하나는 선택적인 첨부 파트이다. SOAP 파트는SOAPHeader 객체 와 SOAPBody 객체가 포함된 SOAPEnvelop 객체로 구성되어 있다.
SOAPBody 객체는 전송될 메시지의 내용과 같은XML 문서를 갖는다.
이러한 메시징 프로바이더의 장점은 바로JAXM 기술을 사용하는 고객은 프로 바이더가 뒤에서 무엇을 하는지 전혀 알 필요가 없다는 점이다. 또한, 단지 JAXM 메소드만 호출하면 메시징 인프라와 연결된 메시징 프로바이더가 모든 일을 처리하게 된다.
? Java API for XML Registries
JAXR(Java API for XML Registries)은 인터넷을 통해 표준 비즈니스 레지스 트리에 접근할 수 있는 방법을 제공한다. 표준 비즈니스 레지스트리는 사업체 목록과 각 업체가 제공하는 제품 및 서비스 목록 등이 포함되어 있기 때문에 전 자 카탈로그라고 일컬어지곤 한다. 레지스트리는 점차 웹 서비스의 가장 중요 한 컴포넌트로 인식되고 있다. 이것은 가벼운 결합 형태만으로도 비즈니스 간 협력 관계를 동적으로 맺어주기 때문이다.
이것은 Java를 이용해 애플리케이션을 작성하는 개발자들이 ebXML과 같은 개방형 표준이나UDDI와 같은 산업 컨소시엄이 주도하는 사양에 기반을 둔 비 즈니스 레지스트리를 사용하는 데에 필요한 유일한 방법을 제공한다. 각 기업 들은 레지스트리를 이용해 자사 사업체를 등록하거나 자사가 하고자 하는 비즈 니스를 이미 수행하고 있는 다른 기업을 찾아볼 수 있으며, 기업 간에 공유해야 할 자료를 전송하거나 다른 기업에서 보내온 자료들을 검색할 수도 있다.
따라서 기업이 Java를 이용해 표준 비즈니스 레지스트리에 접근할 수 있도록 해주는JAXR의 요구는 더욱 더 증가하고 있는 추세다.
표준화 그룹들은 특정한 종류의 XML 문서를 위한 DTD를 개발해 왔다. 예를 들어두회사가자사의산업표준구매요구양식을위해DTD를 이용하기로 합의할 수도 있다. 왜냐하면 DTD는 표준 비즈니스 레지스트리 내에 저장되므로 양사는JAXR을 이용하여 레지스트리에 접근할 수 있기 때문이다.