OSGI를 시작하는 가장 좋은 방법은 무엇입니까?
애플리케이션 기능의 모듈/서비스/비트를 OSGi 모듈에 특히 적합한 후보로 만드는 것은 무엇입니까?
애플리케이션에서 OSGi를 사용하는 것에 관심이 있습니다.저희는 자바샵이고 Spring을 상당히 광범위하게 사용하고 있기 때문에 OSGi(tm) 서비스 플랫폼에 Spring Dynamic Modules를 사용할 생각입니다.OSGi의 일부를 응용 프로그램에 시범적으로 통합할 수 있는 좋은 방법을 찾고 있습니다.여기 OSGi 기술이나 비슷한 기술을 사용해 본 사람이와 유사한 OSGi 기술을 사용해 본 사람이 있습니까?함정이 있습니까?
@니콜라스 - 고마워요, 그거 봤어요.좋은 튜토리얼이지만, 헬로 월드의 예시가 아닌 첫 번째 "진짜" OSGi 번들을 수행하는 방법에 대한 아이디어를 더 찾고 있습니다.
@david - 링크 감사합니다!이상적으로는 그린필드 앱으로 모든 것을 역동적으로 설계할 수 있습니다.하지만 지금 제가 찾고 있는 것은 기존 애플리케이션의 작은 부분에 그것을 도입하는 것입니다.제가 어떤 앱이든 선택할 수 있다고 가정할 때, OSGinia pig로서 그 앱을 더 좋게 만들거나 더 나쁘게 만들 수 있는 고려 요소는 무엇입니까?
한 부분 OSGi와 한 부분 OSGi가 아닌 다른 부분을 가질 수 없기 때문에 전체 앱 OSGi를 만들어야 합니다.가장 간단한 형태로 전체 애플리케이션에서 하나의 OSGi 번들을 만들 수 있습니다.분명히 이것은 모범 사례는 아니지만 OSGi 컨테이너(Equinox, Felix, Knoplerfish 등)에 번들을 배포하는 데 유용할 수 있습니다.
앱을 구성 요소로 분할하기 시작하려면 일반적으로 구성 요소는 일련의 인터페이스 및 클래스 종속성을 통해 응용 프로그램의 나머지 부분과 분리될 수 있는 일련의 책임을 져야 합니다.이러한 것들을 직접 손으로 직접 확인하는 것은 접착력이 뛰어나지만 느슨하게 결합된 애플리케이션의 경우에는 다소 간단한 것에서부터 익숙하지 않은 연동 소스 코드의 경우에는 악몽과도 같은 것까지 다양할 수 있습니다.
시스템의 다른 패키지/클래스에 대한 Java 패키지의 결합을 보여줄 수 있는 JDepend와 같은 도구에서 일부 도움말을 얻을 수 있습니다.저역류 결합 패키지는 고역류 결합 패키지보다 OSGi 번들로 추출하기가 더 쉬워야 합니다.Structure 101과 같은 프로 툴을 사용하면 훨씬 더 많은 아키텍처 통찰력을 얻을 수 있습니다.
160개의 OSGi 번들로 구성된 애플리케이션으로 매일 작업하고 Spring DM을 사용하면 "정상적인" Spring에서 Spring DM으로 전환하는 것이 상당 부분 불편함이 없음을 확인할 수 있습니다.추가 네임스페이스와 OSGi 관련 Spring 구성을 별도의 파일로 분리할 수 있고 분리해야 한다는 사실은 OSGi 구축 시나리오의 유무와 관계없이 보다 쉽게 구성할 수 있습니다.
OSGi는 깊고 넓은 구성 요소 모델이며, 설명서는 다음과 같습니다.
- OSGi R4 규격:Core 및 Compendium 사양의 PDF를 확인해 보십시오. 표준적이고 권위가 있으며 매우 읽기 쉽습니다.항상 편리하게 바로 가기를 원하신다면 상담을 받아보실 수 있습니다.
- OSGi 모범 사례를 읽어 보십시오. 할 수 있는 일은 많지만 해야 할 일은 약간 적으며 절대로 해서는 안 되는 일도 있습니다(예: DynamicImport: *).
일부 링크:
- OSGi 모범 사례 및 Apache Felix 사용
- Peter Kriens와 BJ Hargrave가 OSGi 모범 사례에 대한 Sun 프레젠테이션에서 발표합니다.
- OSGi의 핵심 개념 중 하나는 서비스(Services)입니다. 서비스가 청취자 패턴을 화이트보드 패턴으로 대체하는 이유와 방법에 대해 알아보십시오.
-
내 경험상 봄 디엠 구글 그룹은 매우 반응이 좋고 친절합니다.
Spring DM Google 그룹은 더 이상 활동하지 않고 이곳에 포럼이 있는 Gemini Blueprint 프로젝트로 Eclipse.org 로 이동했습니다.
새로운 기술을 배울 때는 풍부한 툴링을 통해 큰 고민 없이 작업에 참여할 수 있습니다.이 시점에서 ops4j.org 의 커뮤니티는 다음을 포함하는 "PAX"라는 풍부한 도구 세트를 제공합니다.
- 팍스 러너:펠릭스, 이쿼녹스, 크노플러피쉬, 컨시어지 사이를 쉽게 달리고 바꿀 수 있습니다.
- 팍스 컨스트럭트:쉽게 제작할 수 있는 OSGi 프로젝트 구축, 구성 및 구축
- 팍스 드론:Junit과 함께 OSGi 번들을 테스트하면서 프레임워크를 독립적으로 사용(PaxRunner 사용)
OSGi 개요 서비스는 다음과 같이 다양하게 구현됩니다.
- Pax 로깅(로깅),
- 팍스 웹(http 서비스),
- Pax Web Extender(전쟁 지원),
- 팍스 코인(구성),
- Pax Shell(쉘 구현, 차기 osgi 릴리즈의 일부)
- 더 많은 것들이외에도.
.. 그리고 도움이 되는 프레임워크 독립 커뮤니티가 있습니다. 그러나 지금은 광고 ;-)
이 답변은 질문을 받은 지 거의 3년 만에 나온 것이지만, 방금 찾은 링크는 특히 메이븐을 사용하는 초보자에게 매우 좋습니다.단계별 설명.
기존 애플리케이션이 단일 애플리케이션입니까, 아니면 별도의 프로세스/계층으로 계층화되어 있습니까?
계층화된 경우 중간/앱 계층을 OSGi 컨테이너에서 실행하도록 변환할 수 있습니다.
저희 팀의 경험상 OSGi에서 웹 작업을 시도하는 것이 고통스러웠습니다.다른 고통의 지점은 동면과 자카르타 커먼즈 벌목입니다.
OSGi 사양은 꽤 읽기 쉬우며 클래스 로딩 알고리즘을 보여주는 순서도를 출력하는 것을 추천합니다."NoClassDefFFoundError가 발생하는 이유는 무엇입니까?"라는 질문을 받게 될 것입니다.": 순서도가 그 이유를 알려줄 것입니다.
http://neilbartlett.name/blog/osgibook/ 을 이용해 보세요.이 책은 OSGi의 모범 사례를 직접 소개하고 있습니다.
http://njbartlett.name/files/osgibook_preview_20091217.pdf 을 이용해 보십시오.
오어
두번째는 제가 직접 읽은 책은 아니지만 좋은점을 들었습니다.
첫번째는 저에게 매우 유용했습니다.그는 처음에는 아키텍처를 안내하고 OSGi를 직접 사용합니다.
OSGi부터 시작한다면 몇 가지 생각해 볼 것이 있습니다.
이 스레드의 다른 곳에서 언급했듯이 클래스 로딩에 대해 아는 것은 매우 중요합니다.제 경험으로는 모든 사람들이 조만간 그것과 관련된 문제에 부딪히게 됩니다.
기억해야 할 또 다른 중요한 것은 절대로 언급을 하지 말라는 것입니다!OSGi의 서비스 개념이 구축된 화이트보드 패턴을 살펴봅니다(다른 답변 중 하나에 있는 링크 참조).
제 경험으로는 단일 애플리케이션을 OSGi 기반 애플리케이션으로 전환하려고 하면 안 됩니다.이로 인해 보통 심각하고 감당할 수 없는 혼란이 발생합니다.새로 시작합니다.
무료로 사용 가능한 독립 실행형 OSGi 구현 중 하나를 다운로드합니다.크노플러피쉬는 상당히 좋고 안정적이라는 것을 알게 되었습니다. (저는 그것을 많은 프로젝트에 사용합니다.소스코드도 많이 들어있습니다.여기에서 확인하실 수 있습니다: http://www.knopflerfish.org
또 다른 좋은 튜토리얼은 여기에서 찾을 수 있습니다.https://pro40.abac.com/deanhiller/cgi-bin/moin.cgi/OsgiTutorial
OSGi Alliance의 Peter Kriens는 http://www.infoq.com/interviews/osgi-peter-kriens 라는 멋진 인터뷰를 했습니다.그의 홈페이지와 블로그(항상 좋은 글로 읽히는)는 여기 http://www.aqute.biz 에서 확인할 수 있습니다.
저는 아파치 펠릭스 튜토리얼을 정말 좋아합니다.하지만 일반적으로 애플리케이션에서 OSGi를 활용하는 것은 "과잉이니 이 프레임워크를 사용하자"는 결정 중 하나가 아니라고 생각합니다.이것은 디자인에 대한 질문에 가깝지만, OSGi가 제공하는 디자인 측면의 모든 것은 바닐라 자바로도 가능합니다.
런타임의 경우 기존 응용프로그램을 추가하고 OSGi를 활성화할 수 없습니다.역동적이기 위해서는 디자인이 필요합니다.봄 디엠은 그것을 당신에게 숨기기 쉽지만, 그것은 여전히 존재하고 당신은 그것을 인식할 필요가 있습니다.
언급URL : https://stackoverflow.com/questions/16140/whats-the-best-way-to-get-started-with-osgi
'codememo' 카테고리의 다른 글
| 정적 클래스, 인터페이스 또는 xml 리소스 중에서 안드로이드에서 상수를 정의하는 가장 좋은 방법은 무엇입니까? (0) | 2023.10.20 |
|---|---|
| 각도 2 구성 요소 생성기 대 OnInit (0) | 2023.10.20 |
| jenkins에서 npm/grunt 명령을 실행하는 방법 (0) | 2023.10.20 |
| "CSS"(style.php)의 전역 변수에 액세스 (0) | 2023.10.20 |
| SQLPlus에서 SPOL을 사용할 때 데이터 행 사이에 빈 줄이 표시됩니다. (0) | 2023.10.20 |