OSGi는
Java™에
기반하는 시스템과 호환 가능하고 동적 컴포넌트 모델을 구현하는 모듈
시스템입니다. 엔터프라이즈 시스템은 OSGi를 사용하여 런타임 인프라의 유지관리 기능을
향상시킬 수 있습니다. 번들 양식의 애플리케이션은 다시 시작하지 않고도
원격으로 설치, 시작, 중지, 업데이트, 설치 제거될 수 있습니다.
OSGi 스펙
OSGi 스펙은 공개 표준 조직인 OSGi
Alliance에 의해 정의 및 유지보수됩니다. 이 스펙에서는
음성, 데이터, 멀티미디어 무선/유선 네트워크 관리에 대한
공개 표준을 간략히 소개합니다. OSGi 서비스 플랫폼 스펙에서는
번들을 사용하여 서비스 전달 및 관리에 대한 공통된 공개 아키텍처를 정의합니다.
OSGi 아키텍처
OSGi 서비스 플랫폼의 코어 파트는
Java에
기반한 보안 및 관리 서비스 플랫폼을 정의합니다.
이 플랫폼은 번들로 알려진 확장 및 다운로드 가능한 애플리케이션의 배치를
지원합니다.
스펙에서는 보안 모델, 애플리케이션 라이프사이클 관리 모델, 서비스
레지스트리, 실행 환경, 모듈을 정의합니다.
OSGi 번들
OSGi 번들은 Java 코드, 자원 및 번들과 그 종속 항목을 설명하는 Manifest가 포함된
Java 아카이브 파일입니다. 번들은 애플리케이션의 배치 단위입니다.
OSGi 애플리케이션
OSGi 애플리케이션은
번들 세트를 그룹화하여 일관적인 비즈니스 로직을 제공하게 합니다. 애플리케이션은
웹 사용 번들과 지속성 사용 번들과 같은
다양한 번들 유형으로 구성될 수 있습니다.
OSGi 단편
OSGi 단편은
지정된 호스트 번들 또는 지정된 호스트 번들에 첨부하여 작동할 수 있게 하는
특정 Manifest 헤더를 포함하는
Java
아카이브 파일입니다.
단편은 호스트 번들의 일부로 처리됩니다. 단편의 관련 정의는 정보가 충돌하지 않는 경우
호스트를 분석하기 전에 호스트 번들 정의와 병합됩니다.
가능한 경우 단편 종속성이 해결됩니다. 단편 종속성을 해결할 수 없으면
단편은 호스트 번들에 첨부하지 않습니다. 단편은 고유한 클래스 로더 또는 번들 액티베이터를
보유할 수 없습니다. 호스트 번들에 표시되는 정보는 대체할 수 없습니다.
단편은 자원, 클래스, 허용된 헤더로 번들을 확장하며, 이를 통해
사용자가 번들을 사용자 정의할 수 있습니다.
OSGi 컴포지트 번들
컴포지트 번들은 일관된 동작을 보장하도록 번들을 집합체로 그룹화합니다.
컴포지트 번들은 작업공간 또는 대상 플랫폼 밖에 있는 번들에 대한 참조 또는 번들을
포함합니다. 컴포지트 번들은 특정 버전에서 공유되는 번들 세트의 일관된 동작을 보장합니다.
OSGi 애플리케이션 프레임워크는 Java
컴포넌트의 표준 종속성 인젝션 메커니즘을 정의하는
OSGi 버전 4.2 Blueprint 컴포넌트 모델의
Apache Software Foundation's Aries
공개 구현을 포함합니다. 구현은 Spring 프레임워크에서 파생되며
OSGi 서비스 레지스트리에서 선언적으로 컴포넌트 인터페이스를 서비스로
등록하도록 OSGi에 대해 확장됩니다.
번들 어셈블을 위한 모델
OSGi 도구는 배치 가능한 단위로 애플리케이션을 어셈블링하는 모델을
포함합니다. 단위는 여러 개의 번들로 구성되며 애플리케이션의 구성 번들의
외부 위치 및 버전을 설명하는 메타데이터를 포함합니다.
런타임 컴포넌트
OSGi 도구는
OSGi 프레임워크에서 실행되는 OSGi 애플리케이션의 개발을 지원하며,
웹 애플리케이션 번들, 원격 서비스 통합, JPA를 포함하는 통합 시나리오 및
웹 애플리케이션에 공통되는
엔터프라이즈 Java
기술을 활용합니다.
확장
OSGi 도구는 OSGi Enterprise
Expert Group 스펙을 넘어서는 확장을 포함하여
Java
엔터프라이즈 기술과 OSGi 모듈의 완전한 통합을 제공합니다.
특히 다음 기능을 포함하는(단, 이에 한하지 않음) 지원을 전달합니다.
동적 라이프사이클을 포함하며 여러 개의 버전화된 번들로 구성된 격리된 엔터프라이즈 애플리케이션.
Blueprint 컴포넌트에 대한 선언 트랜잭션 및 보안.
Blueprint 컴포넌트에 대한 컨테이너 관리 JPA.
메시지 구동 Blueprint 컴포넌트.
모듈 Blueprint 서비스에서 자원 참조의 구성.
어노테이션 기반 Blueprint 구성.
로컬 JNDI 및 OSGi 서비스 레지스트리 사이에서 검색 메커니즘의 연합.
SCA 컴포넌트 유형 정의를 반영할 수 있는 완전한 선언 애플리케이션 메타데이터.
OSGi의 이점
OSGi 모듈성은
Java EE
애플리케이션에서 직면한 문제를 처리하는 표준 메커니즘을 제공합니다.
OSGi 프레임워크에서는
다음 이점을 제공합니다.
애플리케이션은 이식 가능하며, 리엔지니어링이 쉽고 변화하는 요구사항에 쉽게 적응할 수 있습니다.
프레임워크에서는 선언 어셈블리 및 단순화된 Spring 프레임워크의
단위 테스트를 제공하지만, 애플리케이션의 일부로 배치되는
써드파티 라이브러리 대신 애플리케이션 서버 런타임의 일부로 제공되는
표준화된 양식을 취합니다.
프레임워크는 Java EE
프로그래밍 모델과 통합되어, 동적 라이프사이클을 포함하는
버전화된 OSGi 번들 세트로 웹 애플리케이션을 배치하는 옵션을 사용자에게 제공합니다.
이는 써드파티 라이브러리 통합을 단순화 및 표준화하여,
애플리케이션 번들 종속성 및 버전 관리를 지원합니다.
프레임워크는 동적 라이프사이클을 포함하는 여러 개의 버전화된 번들로
구성된 엔터프라이즈 애플리케이션에 대한 격리를 제공합니다.
이는 여러 애플리케이션 사이에서 공유되는 버전화된 공통 번들을 호스팅할 수 있는
기본 번들 저장소를 포함하므로,
각 애플리케이션은 각 공통 라이브러리의 사본을 배치하지 않아도 됩니다.