복붙노트

[SPRING] OSGI를 시작하는 가장 좋은 방법은 무엇입니까? [닫은]

SPRING

OSGI를 시작하는 가장 좋은 방법은 무엇입니까? [닫은]

OSGi 모듈의 모듈 / 서비스 / 비트 응용 프로그램 기능이 특히 좋은 후보가되는 이유는 무엇입니까?

내 응용 프로그램에서 OSGi 사용에 관심이 있습니다. 우리는 Java 샵이고 우리는 Spring을 꽤 광범위하게 사용하므로 OSGi (tm) Service Platforms 용 Spring Dynamic Modules을 사용하고자합니다. 나는 약간의 OSGi를 시험판으로 응용할 수있는 좋은 방법을 찾고있다. 여기 또는 비슷한 OSGi 기술을 사용하는 사람이 있습니까? 함정이 있습니까?

@ 니콜라스 - 고마워, 나는 그것을 보았다. 그것은 좋은 튜토리얼이지만 Hello World 예제가 아닌 내 첫 "진짜"OSGi 번들을 만드는 방법에 대한 아이디어가 더 필요합니다.

@ 데이비드 - 링크 주셔서 감사합니다! 이상적으로, greenfield 앱을 사용하면 모든 것을 동적으로 디자인 할 수 있습니다. 내가 지금 찾고있는 것은 기존 응용 프로그램의 작은 조각에 그것을 소개하는 것입니다. 내가 애플 리케이션의 어떤 부분을 선택할 수 있다고 가정하면, OSGi 기니피그로 그 조각을 더 좋게 만들거나 더 나쁜 것으로 만들지 고려해야 할 몇 가지 요소는 무엇인가?

해결법

  1. ==============================

    1.당신이 OSGi와 OSGi가 아닌 하나의 부분을 가질 수는 없으므로, 전체 응용 프로그램 OSGi를 만들어야합니다. 가장 간단한 형태로 전체 응용 프로그램에서 단일 OSGi 번들을 만듭니다. 분명히 이것은 최선의 방법은 아니지만 OSGi 컨테이너 (Equinox, Felix, Knoplerfish 등)에 번들을 배치하는 느낌을 얻는 것이 유용 할 수 있습니다.

    당신이 OSGi와 OSGi가 아닌 하나의 부분을 가질 수는 없으므로, 전체 응용 프로그램 OSGi를 만들어야합니다. 가장 간단한 형태로 전체 응용 프로그램에서 단일 OSGi 번들을 만듭니다. 분명히 이것은 최선의 방법은 아니지만 OSGi 컨테이너 (Equinox, Felix, Knoplerfish 등)에 번들을 배치하는 느낌을 얻는 것이 유용 할 수 있습니다.

    앱을 구성 요소로 분할하기 시작하려는 다음 단계로 이동하려면 일반적으로 구성 요소에는 일련의 인터페이스와 클래스 종속성을 통해 나머지 응용 프로그램과 격리 될 수있는 일련의 책임이 있어야합니다. 손으로 이들을 식별하는 것은 잘 설계된 고도로 응집되어 있지만 느슨하게 결합 된 응용 프로그램에 익숙하지 않은 인터록 된 소스 코드의 악몽에 이르기까지 다소 다양합니다.

    JDepend와 같은 도구에서 도움을받을 수 있습니다. JDepend는 시스템의 다른 패키지 / 클래스와 Java 패키지의 결합을 보여줍니다. 낮은 원심력 커플 링을 가진 패키지는 높은 원심력 커플 링을 가진 패키지보다 OSGi 번들로 추출하기 쉽습니다. Structure 101과 같은 프로 도구를 사용하여 더 많은 아키텍처 통찰력을 얻을 수 있습니다.

    순수하게 기술 수준에서, 160 개의 OSGi 번들로 구성되어 있고 Spring DM을 사용하는 어플리케이션으로 매일 작업하면서 "정상적인"스프링에서 스프링 DM으로의 전환이 크게 고통스럽지 않다는 것을 확인할 수 있습니다. 여분의 네임 스페이스와 OSGi 고유의 스프링 구성을 별도의 파일로 분리 할 수 ​​있다는 사실은 OSGi 배포 시나리오의 유무에 상관없이 쉽게 할 수 있습니다.

    OSGi는 깊고 다양한 구성 요소 모델이며, 필자가 권장하는 문서입니다.

    일부 링크 :

  2. ==============================

    2.새로운 기술을 배우면 풍부한 도구로 큰 두통없이 사물에 빠지게됩니다. 이 시점에서 ops4j.org의 커뮤니티는 "PAX"라는 풍부한 도구 세트를 제공합니다.

    새로운 기술을 배우면 풍부한 도구로 큰 두통없이 사물에 빠지게됩니다. 이 시점에서 ops4j.org의 커뮤니티는 "PAX"라는 풍부한 도구 세트를 제공합니다.

    그렇다면 OSGi 개관 서비스의 많은 구현이있다.

    .. 그리고 도움이되는 프레임 워크 독립적 인 커뮤니티가 있습니다. -하지만 그건 광고가 아닙니다 ;-)

  3. ==============================

    3.이 질문에 대한 답을 찾은 지 거의 3 년이 지났지 만, 방금 찾은 링크는 정말 좋습니다. 특히 maven을 사용하는 스타터에게 좋습니다. 단계별 설명.

    이 질문에 대한 답을 찾은 지 거의 3 년이 지났지 만, 방금 찾은 링크는 정말 좋습니다. 특히 maven을 사용하는 스타터에게 좋습니다. 단계별 설명.

  4. ==============================

    4.http://neilbartlett.name/blog/osgibook/을 시도하십시오. 이 책은 OSGi 베스트 프랙티스 예제를 다루고 있습니다.

    http://neilbartlett.name/blog/osgibook/을 시도하십시오. 이 책은 OSGi 베스트 프랙티스 예제를 다루고 있습니다.

  5. ==============================

    5.http://njbartlett.name/files/osgibook_preview_20091217.pdf를 사용해보십시오.

    http://njbartlett.name/files/osgibook_preview_20091217.pdf를 사용해보십시오.

    또는

    http://www.manning.com/hall/

    두 번째 책은 내가 읽은 책이 아니지만 그것에 대해 좋은 것을 들었다.

    첫 번째 것은 나에게 매우 유용했습니다. 그는 처음부터 아키텍처를 살펴본 다음 OSGi를 사용합니다.

  6. ==============================

    6.기존 응용 프로그램이 개별 프로세스 / 계층에서 모 놀리 식 또는 피곤합니까?

    기존 응용 프로그램이 개별 프로세스 / 계층에서 모 놀리 식 또는 피곤합니까?

    계층화 된 경우 중간 / 응용 프로그램 계층을 OSGi 컨테이너에서 실행하도록 변환 할 수 있습니다.

    우리 팀의 경험에 비추어 볼 때, OSGi에서 고통스러운 웹 기능을 수행하려고 시도한 것으로 나타났습니다. 다른 문제점은 Hibernate와 Jakarta Commons Logging이다.

    OSGi 스펙은 꽤 읽기 쉽고 클래스 로딩을위한 알고리즘을 보여주는 플로우 차트를 인쇄하는 것이 좋습니다. "NoClassDefFoundError를 얻는 이유는 무엇입니까?"라는 순간을 보장 할 것입니다 : 순서도가 그 이유를 알려줍니다.

  7. ==============================

    7.OSGi로 시작한다면 몇 가지 사항을 명심해야한다.

    OSGi로 시작한다면 몇 가지 사항을 명심해야한다.

    이 스레드의 다른 부분에서 언급했듯이 클래스로드에 대해 아는 것은 정말로 중요합니다. 제 경험상 모든 사람들이 조만간 문제에 봉착하게됩니다.

    기억해야 할 또 다른 중요한 사실은 : 결코 참고 문헌을 보유하지 마십시오! OSGi의 서비스 개념이 구축 된 화이트 보드 패턴을 살펴보십시오 (다른 답변 중 하나의 링크 참조).

    제 경험으로 보면 모 놀리 식 응용 프로그램을 OSGi 기반 응용 프로그램으로 변환해서는 안됩니다. 이것은 보통 심하게 다루기 힘든 혼란을 낳습니다. 새로 시작하십시오.

    자유롭게 사용할 수있는 독립 실행 형 OSGi 구현 중 하나를 다운로드하십시오. Knopflerfish가 다소 좋고 안정적이라는 것을 알았습니다 (저는 많은 프로젝트에서이 도구를 사용합니다). 또한 많은 소스 코드가 포함되어 있습니다. 당신은 여기에서 그것을 발견 할 수있다 : 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

  8. ==============================

    8.나는 Apache Felix 튜토리얼을 정말 좋아한다. 그러나, 나는 일반적으로 응용 프로그램에서 OSGi를 활용하는 것이 "과장이기 때문에이 프레임 워크를 사용합시다."라고 생각하지 않습니다. 디자인에 관한 질문이지만, OSGi가 디자인 측면에서 당신에게 제공하는 모든 것은 바닐라 자바에서도 가능합니다.

    나는 Apache Felix 튜토리얼을 정말 좋아한다. 그러나, 나는 일반적으로 응용 프로그램에서 OSGi를 활용하는 것이 "과장이기 때문에이 프레임 워크를 사용합시다."라고 생각하지 않습니다. 디자인에 관한 질문이지만, OSGi가 디자인 측면에서 당신에게 제공하는 모든 것은 바닐라 자바에서도 가능합니다.

    런타임과 관련하여 기존 애플리케이션을 추가하고 OSGi를 활성화 할 수는 없습니다. 동적 인 디자인이어야합니다. DM은 당신을 쉽게 숨길 수있게 해줍니다.하지만 여전히 그곳에 있습니다. 당신은 그것을 알고 있어야합니다.

  9. from https://stackoverflow.com/questions/16140/whats-the-best-way-to-get-started-with-osgi by cc-by-sa and MIT license