2009-04-09 6 views
14

Ich mag das Konzept von modularen Bundles, wie es von OSGi implementiert wird.Mini-OSGi, das in einer Sandbox ausgeführt werden kann (wie AppEngine oder WebStart)?

Ich mag "Managed Deployment" Dienste wie Google App Engine (für Web-Anwendung) oder Java WebStart (für Client-Software) auch.

Diese beiden Ideen scheinen sich-andere eher gut konzeptionell zu ergänzen.

Der OSGi-Standard enthält jedoch einige Funktionen, die es unmöglich machen, dass Implementierungen wie Felix oder Equinox auf virtuellen Sandbox-Maschinen wie AppEngine oder Webstart ausgeführt werden. In diesen Umgebungen ist es beispielsweise nicht möglich, direkten Zugriff auf ein Dateisystem zu erhalten, wodurch der OSGi-Bundle-Cache ausgeschlossen wird, der zum Speichern von permanenten Bundle-Status und nativen Bibliotheken verwendet wird.

Nun, ich habe kein großes Interesse an der Verwendung von nativen Bibliotheken oder habe persistent Bündel Zustand. Gibt es ein Framework, das das Kernbündel- und Servicekonzept von OSGi implementiert (idealerweise in einer kompatiblen Weise, so dass OSGi-Bundles wie es eingesetzt werden kann), aber ohne einen Bundle-Cache (und andere Einrichtungen, die nicht in einer Sandbox verfügbar sind) arbeiten kann? ?

Ich bin auf der Suche nach so etwas wie eine begrenzte Version von Felix, die auf App Engine oder WebStart funktioniert.

Natürlich, wenn der WebStart Motor und die Google App Engine nur OSGi Framework-Service bereitgestellt out-of-the-Box, das wäre toll, auch ...

Update: Ein weiterer sehr einschränkender Aspekt der App Engine ist, dass du keine neuen Threads starten kannst. Dies verhindert (unter anderem) das asynchrone Paket-Lebenszyklus-Management. Offensichtlich kein Problem mit WebStart.

Antwort

0

Wenn Ihr einziges Problem aus dem Bündel Cache kommt und Sie brauchen es nicht, können Sie es erhalten werden können, diese Eigenschaft auf null in Equinox oder Felix von Set los? Ich bin mir ziemlich sicher, dass dieser Cache nicht obligatorisch ist Equinox zu laufen (weiß nicht für Felix)

1

Ich bin mir ziemlich sicher, dass es getan werden kann, und This eclipse help page könnte Sie wahrscheinlich starten. Wenn ich es richtig verstehe, müssen Ihre Bundles signiert sein und Ihre jnlp-Datei muss alle Berechtigungen anfordern.

+0

Ja, die „Anforderung alle Berechtigungen“ Teil das Problem ist ... – Thilo

+0

Können Sie das ellaborate? Ich meine: Wenn Ihr Code legitime Bedürfnisse hat, warum bitten Sie den Benutzer nicht, Berechtigungen zu erteilen, um diese Bedürfnisse zu erfüllen? Alles, was dich in diesem Bereich einschränkt? –

+0

Der Anwendungscode benötigt keinen Dateisystemzugriff. Aber OSGi braucht es intern. Ist das ein legitimes Bedürfnis? Vielleicht, vielleicht nicht. – Thilo

1

Sie sollten mit Chris Aniszczyk sprechen. Er hat es mit Equinox und Knopffish gemacht. Sehen Sie den Screenshot hier: http://twitpic.com/300lk Er plante darüber zu bloggen, aber ich denke er ist im Moment ziemlich beschäftigt. Hier ist der Link zu seinem Blog: http://mea-bloga.blogspot.com/

+0

Interessant. Ich hoffe, er bloggt darüber.Ich habe mein eigenes kleines Experiment hier begonnen: http://drop.io/appengine/ http://miniosgi.appspot.com/ – Thilo

+0

Er hat jetzt darüber bloggen: http://eclipsesource.com/blogs/2009/04/10/osgi-on-appengine/ – Thilo

+0

Das ist das Problem, wenn Leute zu viele Blogs haben. Es ist schwer, sie alle einzuholen (vor allem wenn man sie nicht alle kennt ;-)) Danke für den Zeiger. Sieht so aus, als wären sie noch nicht in das Threading-Problem geraten, aber das, mit dem du konfrontiert warst, traf den Speicher ... –