Monday, 10 March 2008

Solstice alpha 0.3 released!

I'm very excited to announce that today Arum has released it's first of it’s kind modular rich internet platform combining Adobe’s Flex with OSGi has now been released as an alpha. Arum invites interested parties to download and try it out. For more information see the Solstice product page via the above link.

Solstice is based on the following technology:
  • Adobe Flex
  • BlazeDS
  • OSGi
  • Eclipse Equinox
  • Eclipse Equinox Servlet Bridge
  • Apache Felix
  • db4o
It's very alpha and we'll be doing more work on it as we develop our main product (DiDo), so in the mean time I'm prepared to field questions about it here or via the email address on the Solstice product page.


maz said...

First, great idea / work. Modularity in webapps is very asked for but also so difficult to put in place...

I quickly looked into your docs but the lack of docs / samples makes it quite unclear to see the full scope of your fwk.

Have you done a "OSGi v 4 implementation" in Flex (if that means something) or a Flex UI to interface a in-backend OSGi platform ?
From a Flex perspective, what features are made avail by your framework ? For instance is there a pure client ServiceRegistry in ActionScript ? Can we put UI parts into multiple jars / swfs ?



Chris Brind said...

Hi Maz,

Thanks for your feedback. The documentation is lacking just now and that combined with a couple of known issues is why we decided it should be released as alpha rather than beta.

With regards to r4 compliance, it is as compliance as Equinox + the SCR and CM bundles from Felix. Then we've added a very simplistic Flex UI using BlazeDS to communicate with the server to allow users to manage the container.

For the Flex side of things there is a SolsticeFlexSupport.swc which contains some helper classes. For instance SolsticeBundleLoader which extends ModuleLoader and knows how to handle a SolsticeBundle (the ActionScript representation of the bundle running in the server's OSGi space).

In answer to your last question, yes... you can create Flex Modules and put them in to OSGi bundles and then reference them from other modules. In fact, Solstice categories such bundles as one of "Module" (a general module), "App" (same as a module but loaded through the Solstice application laoder), "Admin" (adds functionality to the management console) and "Auth" (allows custom authentication UI and server code to be written and only a single Auth bundle is support).

Like I say, I really need to sort out the documentation and that will probably be the only change in the next release of Solstice.

sarbogast said...

This is exactly what I need right now, and what I was planning to do for one of my own projects. So first and foremost, THANK YOU.
Then I have 2 questions regarding the documentation:
1-What is the "persistence" directory for and what do you mean by "folder from which your application server's JVM runs"?
2-Where should bundles be deployed (I'm using JBoss 4.2.2.GA too) so that Solstice sees them? Is it OK to drop them in deploy?

Chris Brind said...

Hi Sarbogast,

Firstly, you're welcome.

1) The persistence directory is where Solstice (and the Users bundle) stores the db4o persistence files. Solstice uses db4o, an OODBMS, rather than adding complication with an RDBMS.

And what I mean by "folder from which your application server's JVM runs" is for instance your JBoss' bin directory.

2) Once you deploy Solstice.war simply go to: http://localhost:8080/Solstice/Admin.swf and deploy your bundle through that interface.

Hope that helps.


sarbogast said...

Ok, I hadn't seen that I could upload bundles directly from the admin UI.

So I've installed the auth bundle but now when I start it and reload Admin.swf, I get an error message saying it cannot find URL http://localhost:8080/Solstice/osgi/

Any idea?

Chris Brind said...


Not off the top of my head, but you can try a couple of things.

Your JBoss console is also an OSGi console, so you can control the container from here as I imagine you're not able to get in to the Admin interface now.

Find the auth bundle and stop it and you should now be able to get to the Admin interface again.

Look for "MagicStart" bundle and stop (or uninstall) that. I've noticed a couple of potential problems with this bundle which I'm fixing right now actually. Then start the Auth bundle manually and see what happens.

In case you're wondering the MagicStart bundle will automatically start (and stop) a bundle if required services are available (or unavailable, respectively). In your manifest you can specify a comma seperated list of Service interface names using the "Require-Service" header and MagicStart will use that to determine if your bundle's dependancies are satisfied then kick it off or stop it as appropriate. But as I said, I've noticed a couple of problems with this bundle which I'm fixing right now.


sarbogast said...

I managed to get both of them working by starting JBoss from my IDE instead of the command line. Weird, but it means it has nothing to do with Solstice itself.

Another question: Have you experimented using Spring and/or Hibernate inside your bundles?

Chris Brind said...

Strange! But I'm glad it's working.

Nope, I haven't tried Spring/Hibernate as they are technologies I don't need (and choose not to use), but there's no reason I can think of why it shouldn't work.


sarbogast said...

Spring Dynamic Modules is really a great improvement to ease the configuration of OSGi services, and I can't wait to test it on the Solstice platform. As for Hibernate, I'm not sure yet becausee it is known to have important issues with OSGi's calssloading mechanism, so I guess there are better solutions.

Chris Brind said...

I would be interested to learn how you get on. I've never used Spring because I didn't want to spend hours configuring XML instead of writing code. ;)

And I never considered Spring with OSGi because I feel that the declarative services are more than adequate in most cases. Perhaps it's time to learn more?