아파치 코쿤

아파치 코쿤(Apache Cocoon)은 보통 코쿤으로 약칭되며, 파이프, 관심사 분리, 컴포넌트 기반 웹 개발 개념을 중심으로 구축된 웹 프레임워크이다. 이 프레임워크는 XML 및 XSLT 퍼블리싱에 중점을 두며, 자바 프로그래밍 언어를 사용하여 구축되었다. 코쿤의 XML 사용은 HTML 및 PDF와 같은 퍼블리싱 형식의 호환성을 향상시키기 위한 것이다. 콘텐츠 관리 시스템인 Apache Lenya와 Daisy는 이 프레임워크 위에 구축되었다. 코쿤은 또한 데이터 웨어하우스 ETL 도구 또는 시스템 간에 데이터를 전송하는 미들웨어로도 일반적으로 사용된다.

사이트맵
아파치 코쿤은 사이트맵을 사용하여 사용자가 코쿤 소프트웨어의 다양한 구성 요소를 제어할 수 있도록 하며, 코쿤이 파이프라인이라고 부르는 클라이언트-서버 상호 작용을 정의한다.

구성 요소
코쿤 내의 구성 요소들은 기능별로 그룹화된다.

매처
매처는 URL 또는 쿠키와 같은 사용자 요청을 와일드카드 또는 정규 표현식 패턴과 일치시키는 데 사용된다. 각 사용자 요청은 일치하는 것이 발견될 때까지 사이트맵의 매처에 대해 테스트된다. 특정 요청에 대한 응답은 매처 내에서 지정된다.

제너레이터
제너레이터는 추가 처리를 위한 데이터 스트림을 생성한다. 이 스트림은 기존 XML 문서에서 생성될 수 있으며, 디렉터리 구조나 이미지 데이터와 같이 서버의 무언가를 나타내기 위해 처음부터 XML을 생성할 수 있는 제너레이터도 있다.

XSP
제너레이터의 한 유형은 XML 서버 페이지(XSP)이며, 요청 시 동적 콘텐츠를 생성하는 방법을 지정하는 태그 기반 지시문을 포함하는 XML 문서이다. 코쿤 처리 시, 이 지시문들은 생성된 콘텐츠로 대체되어 결과적으로 증강된 XML 문서가 추가 처리(일반적으로 XSLT 변환)될 수 있도록 한다. XSP는 코쿤 생산자, 일반적으로 자바 클래스로 변환되지만, 자바 기반 프로세서가 존재하는 모든 스크립팅 언어도 사용될 수 있다.

지시문은 내장("XSP") 또는 사용자 정의 처리 태그일 수 있으며, 둘 다 로직 시트에 정의된다. 태그는 태그(XML 노드로 표현됨)가 다른 XML 노드 또는 자바와 같은 절차적 코드로 변환되는 방법을 설명하는 XSLT 템플릿을 사용하여 정의된다. 태그는 절차적 논리를 포함하고, 표현식을 대체하며, 웹 서버 환경에서 정보를 검색하고, 기타 작업을 수행하는 데 사용된다.

XSP는 최신 코쿤 릴리스에서는 더 이상 사용되지 않는다.

트랜스포머
트랜스포머는 데이터 스트림을 가져와 어떤 방식으로든 변경한다. 가장 일반적인 변환은 XSLT를 사용하여 하나의 XML 형식을 다른 형식으로 변경하는 것이다. 그러나 다른 형태의 데이터(SQL 명령 등)를 가져오는 트랜스포머도 있다.

시리얼라이저
시리얼라이저는 XML 이벤트 스트림을 클라이언트에 반환될 수 있는 바이트 시퀀스(예: HTML)로 변환한다. 일부 시리얼라이저는 HTML, XHTML, PDF, RTF, SVG, WML 및 플레인 텍스트 등 다양한 형식으로 데이터를 전송할 수 있다.

셀렉터
셀렉터는 Switch 문과 동일한 기능을 제공한다. 요청의 특정 요소를 선택하고 사용할 올바른 파이프라인 부분을 선택할 수 있다.

뷰
뷰는 주로 테스트에 사용된다. 뷰는 파이프라인의 종료 지점이다. 이 시점까지 생성된 XML-스트림을 출력할 수 있다. 따라서 애플리케이션이 올바르게 작동하는지 확인할 수 있다.

리더
콘텐츠를 파싱하지 않고(XML 처리 없음) 게시한다. 이미지 등에 사용된다.

액션
액션은 일부 비즈니스 로직을 실행하거나 새로운 콘텐츠 생성을 관리하는 자바 클래스이다.

파이프라인
파이프라인은 주어진 요청에 대해 다양한 코쿤 구성 요소가 상호 작용하여 응답을 생성하는 방법을 지정하는 데 사용된다. 일반적인 파이프라인은 제너레이터, 그 뒤에 0개 이상의 트랜스포머, 마지막으로 시리얼라이저로 구성된다.

 같이 보기 
 반응자 패턴 - 코쿤이 기반으로 하는 디자인 패턴.
 XProc - XML 파이프라인 모델링을 위한 W3C 표준.

 각주 

 외부 링크 
 The Apache Cocoon Project


분류:아파치 소프트웨어 재단 프로젝트
분류:웹 프레임워크
분류:자바 플랫폼 소프트웨어