2011-09-01 4 views
9

모듈 식 웹 응용 프로그램을 만드는 솔루션을 찾고 있습니다. 모듈 식 웹 응용 프로그램은 사용자가 자신의 플러그인을 간단한 jar 형태로 제공 할 수 있다는 점에서 모듈 식입니다. 웹 응용 프로그램과 웹 응용 프로그램이 그것을 표시 할 책임이 있습니다.OSGI 모듈 식 웹 응용 프로그램 만들기

이제 캐치는 내 웹 앱을 j2ee 웹 컨테이너에 의존하지 않고 가능한 한 포괄적으로 만들고 싶습니다. 즉 osgi 지원을 제공하고 osgi 번들 자체로 웹 응용 프로그램을 배포하기 위해 웹 컨테이너에 의존하지 않습니다 (실제로 glassfish 및 WAS와 같이 간단하게 만듭니다).

나는 춘분 (equinox)을 사용하려고 계획하고 있으며, 현재 공식 사이트에서 제공하는 서블릿 브리지 만 볼 수 있지만, 나에게 요청을 해석하고 찾은 서블릿에 모든 것을 위임하는 것은 정말 고통 스럽다. 적절한 번들 클래스를 생성 한 다음 다시 웹 애플리케이션에 데이터 만 전달합니다.

내 웹 앱도 번들 인 경우 나에게 멋진 소식입니다. 내가 시도 할 수있는 이상적인 솔루션과 가까운 것이 있습니까? 또는 osgi와 웹 애플리 케이션 (컨테이너)의 두 재난 사이의 다른 통신 방법?

답변

5

OSGi spec은 WAB (Web Archive Bundle) 형식에 대해 자세히 설명합니다.

그리고 Pax Web이 WAB/WAR의 웹 어플리케이션에 대한 큰 지원을 제공합니다 (PAX 웹 춘분, 펠릭스, 등등에 잘 실행) 당신이 ServletContext를 통해 BundleContext를 얻을 인원 웹, 예를 들어, 사용

:

BundleContext bundleContext = (BundleContext) getServletContext().getAttribute("osgi-bundlecontext"); 

을 당신이 언급 한 사용자 주도형 플러그 쳐성을 위해 필자는 플러그 인 번들을 구현하기위한 몇 가지 서비스 인터페이스를 제공하고 웹 응용 프로그램에서는 신고 서비스를 사용하지 않는 한 ServiceTracker을 사용하여 등록을 청취 할 것을 제안했습니다. 업로드 서블릿에서 쉽게 install bundles 수 있습니다.

플러그인을 업로드하는 사용자가 로그인하여 권한을 부여 받아야하므로 추후에 보안 문제가 해결 될 것입니다.


는 편집 : - 당신이 WAR을 배포하는 기존의 웹 애플리케이션 컨테이너 (들)을 원하는 한 주석 필드

사과에 충분한 공간이 여기에 의견을 회신, 난 당신이 질문을 잘못 생각 OSGi 기능이 있습니까? 그렇다면 다른 사람이 언급했거나 WAR에 OSGi 프레임 워크를 삽입 할 때 ServletBridge를 사용하십시오 (비교적 쉽습니다, 예를 들어 this 참조).

ServletContext에서 BundleContext를 가져 와서이 옵션을 선택적으로 만들 수도 있습니다. 그러면 null을 반환 한 다음 고유 한 임베디드 프레임 워크를 시작합니다.그렇게하면 네이티브 OSGi 컨테이너 (예 : Glassfish) 또는 Java EE 앱 서버에서 실행됩니다.

그렇지 않으면 PaxWeb은 HttpService 및 WebApp OSGi 사양을 구현하지만 더 쉽게 사용할 수 있도록 많은 확장 기능을 제공하지만 OSGi 컨테이너에이 기능을 배포해야합니다.

+0

안녕하세요 회신은 흥미 롭습니다. WAB에 대해 알고 있습니다. "내 웹 컨테이너에 의존하여 osgi 지원을 제공하고 osgi 번들 자체로 웹 응용 프로그램을 배포 할 수는 없습니다." 그러나 나는 팍스 웹에 대해 몰랐다. 당신이 준 공식 링크는 부두가 전쟁을 전쟁터로 보급 할 수있는 가능성을 시사했다. 더 설명해 주시겠습니까? – FUD

+0

감사합니다. 나는 링크에서 제안한 방법을 평가할 것입니다. – FUD

1

ServletBridge는 웹 컨테이너 내에 OSGI 컨 시너를 내장하기위한 것입니다. 다른 옵션은 OSGI 컨테이너에 웹 컨테이너 (번들)를 내장하는 것입니다. 다음 기사에서는이를 달성하는 방법에 대해 자세히 설명합니다.

http://java.dzone.com/articles/osgi-and-embedded-jetty

+0

감사합니다. 나는 알고 있지만 특정 웹 컨테이너 및 afaik 포함 서버에 포함되는 것을 원하지 않습니다. 대부분의 서버는 옵션이 아닙니다. – FUD

2

당신은 Apache Sling로 볼 수도 있습니다. OSGi 컨테이너가 내장 된 웹 프레임 워크입니다. OSGi 컨테이너는 Apache Felix이며 꽤 좋습니다.

+0

이것은 멋지게 보이지만 프레임 워크가 지원하는 것에 의해 제한되고 싶지 않습니다. 예를 들어 JSF를 내 웹 응용 프로그램에 사용하고 싶습니다. 아마도 나는 내 질문에 언급 했어야했다. – FUD

1

당신은 ChonCMS을 시도 할 수 있습니다 - http://www.choncms.com

, 그것을 이용하여 작은 웹 응용 프로그램 컨테이너 모듈 식 플랫폼은 자사의 아키텍처는 정확하게, 그것은 기본 CMS 기능을 사용하기 위해 몇 가지 플러그인이 함께 제공됩니다 당신이 요구하는 기반으로

입니다 펠릭스와 플러그인은 런타임에 추가/제거 될 수 있습니다.

문서가 부족할 수도 있지만, 오픈 소스이기 때문에 질문에 답할 수있어서 기꺼이 참여할 수 있으며 더 나은 기여를 할 수 있습니다. 이는 여전히 부화 단계에 있습니다.

관련 문제