Over a million developers have joined DZone.

Taking the SpringSource Application Platform for a Spin

DZone 's Guide to

Taking the SpringSource Application Platform for a Spin

· Java Zone ·
Free Resource
Let's dip our toes into the SpringSource Application Platform's Beta program. "Legacy" archives, i.e., WARs and EARs, are advertized as being supported, so theoretically one should be able to deploy apps even though they're not OSGi bundles. The Beta program, live since yesterday, seems a good place to start.

So, I headed over to the Beta Program page and filled out the form. Apart from the standard details, SpringSource was curious about whether my interest in its platform comes out of its OSGi support or its Spring basis, as well as my OS and my currently used server platforms (which, as far as I understand, are all servers, not server platforms, at least not in the way that SpringSource's offering is a server platform):

What was pretty cool was that as soon as I completed the form above, I was presented with a login form. I had expected to have to wait for some kind of confirmation message or something similar. But, no, I was good to go right away. I downloaded and unzipped the archive I found on the following page, read the (very good) documentation and discovered that applications autodeploy when placed in the "pickup" folder, which is what I did, with a Tomcat sample app, as highlighted below:

Next I ran the two scripts you see in the "bin" folder above. First, I ran "setupClasspath.sh" (would have been nice if some output had been displayed, so I could see what had been set exactly, without needing to look into the shell script itself) and then the "startup.sh", which showed me the following interesting info:

Nice. The server is clearly running. I went to my browser, opened it at the spot specified in the user document, and saw the app had been successfully deployed, i.e., the browser displayed the same as it would normally do for the application I tested. Then I had a look at the online admin console, which showed me that my app was deployed, while enabling me to manually deploy anything else from there:

All very intuitive, an experience that was seamless with what I would expect a server to do for me. I did find the whole experience very fast and fluid. As stated above, I was very impressed by the documentation, which is very extensive, considering we're only dealing with a Beta release here. Very nicely organized, nice friendly font, clear instructions, and so on:

I haven't looked through the latter of the two above in great detail yet, but the former presents everything one would want, even including the admin user/password, which would have presented a frustrating experience if it hadn't been documented. The biggest thing I'm missing right now is information on how to move from a WAR to a PAR. "What?" you ask, "what on earth is a PAR!?" A PAR is a "Platform ARchive", a collection of OSGi bundles. To really gain from the SpringSource Application Platform, one would have a PAR instead of a WAR (or EAR). But, I think it is incumbent upon SpringSource to explain, step by step, how one moves from a WAR (or EAR) to a PAR. I.e., not only high level statements on what one would do in principle, but practical steps using an actual example application. (Maybe they've done so, but I haven't yet come across it in the documentation.)

Finally, not all my test applications successfully deployed. All those in which I was using the Wicket framework failed, with this message in the browser:

Not only am I hoping that there's nothing about Wicket that should prevent it from being deployed to the SpringSource Application Platform, but I'm also hoping that there'll be better diagnostics in messages such as the above by the time the official release comes out.

Nevertheless, aside from those caveats, I'm very impressed by the SpringSource Application Platform's ease of use and speed, even without OSGi bundle deployment. Have you tried it? Want to share your experiences here?


Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}