InfoQ

InfoQ

News

My Bookmarks

Login or Register to enable bookmarks for unlimited time.

The content has been bookmarked!

There was an error bookmarking this content! Please retry.

Struts 2 Experiments with Hot Deployable Plugins

Posted by Andy Roberts on Aug 08, 2007

Sections
Development
Topics
Web Frameworks ,
Java
Tags
OSGi ,
Struts

Apache Struts, the ubiquitous Java web application framework, received a promising feature that permits hot-deployable plugins. Struts developer, Don Brown, revealed last week that work had begun on allowing plugins to be added, removed and upgraded instantly, without the need to restart the entire application.

Brown mentioned how he was impressed by the plugin systems used by Atlassian's JIRA and Confluence products (Atlassian happens to be Brown's employer) which supports hot-deployable plugins. He wanted to bring something similar to Struts, which would clearly benefit from having such a feature. Thus work began on the OSGi plugin.

On top of the advantages of being able to maintain application uptime, and thus eliminate interruptions to users, there are pluses for the application development side also. Don notes:

This capability is so powerful that internally we are moving more and more functionality into plugins as a way to organise our codebase and keep it tightly-focused and agile.

The new Struts plugin allows the developer to split up applications into discrete jars, or "bundles", which when placed in the appropriate location on the server will be picked up by the OSGi plugin and deployed. Minimal effort is required to get the plugin up and running, and one of Brown's goals is to keep bundle development simple by hiding many of the OSGi complexities from the developer (of course, he's preparing for a small backlash as he admits "OSGi experts would lament" at his decision).

Currently, the OSGi Plugin is in its early stages and has not had sufficient levels of testing to be classed as ready for production. There are several limitations in the current release, namely lack of a GUI administration utility; only Velocity templates are supported; plus certain restrictions on what is permissible within a bundle (no 3rd party jars). The source is publically available via the Apache Struts 2 sandbox, and in true Apache style, community participation is welcome. As of yet, there's no hint that the plugin innovations in Struts 2 will be back-ported to Struts 1.

They read my mind by Simon Pink Posted
Re: They read my mind by Don Brown Posted
OSGi will become hotter than it already is. by Richard L. Burton III Posted
Did anything ever come of this exercise? by Andy Doddington Posted
  1. Back to top

    They read my mind

    by Simon Pink

    This is exactly what we need for our applications. We make numerous wesbites, each containing the same modules plus a few custom modules. OSGi is the perfect glue for true modularity. Exciting stuff, I am looking forward to seeing where this leads...

  2. Back to top

    Re: They read my mind

    by Don Brown

    I've found this capability is especially valuable in hosted, or software-as-a-service models, where uptime is paramount. Having the ability to install a new admin tool, report, or nightly job without affecting the site is very useful. Large applications tend to build their own plugin module, so why not make that a standard service in the web framework that even small apps can use?

  3. Back to top

    OSGi will become hotter than it already is.

    by Richard L. Burton III

    You're going to see a strong movement in OSGi support for web based applications and SOA. OSGi provides more than just hot deployment, but the ability to deployment multiple versions of a service at one time. This allows for developers to migrate applications over to a newer version when the time and budget allows for it without having to write a bunch of hackish code to do this. Then again, you should also consider an ESB at that point :)

    Best Regards,
    Richard L. Burton III

  4. Back to top

    Did anything ever come of this exercise?

    by Andy Doddington

    2007 seems an awful long time ago :-(

Educational Content

New-age Transactional Systems - Not Your Grandpa's OLTP

John Hugg discusses high volume transaction processing applications with high and low frequency profiles, and how VoltDB can be used for that purpose.

Cool Code

Kevlin Henney examines code samples to see what can be learned from them starting from the premise that one won’t write great code unless he knows how to read it.

Collaboration: At the Extremities of Extreme

Jason Ayers share the observations he made watching a team of developers collaborating in real time on the same code base, pushing XP, pair programming and continuous integration to their extremes.

Yesod Web Framework

Michael Snoyman presents Yesod, a web framework written in Haskell and containing a web server, templating, ORM, libraries (templating, gravatar, etc.).

Transactions without Transactions

Richard Kreuter and Kyle Banker on how to avoid classical RDBMS transactional systems by using compensation mechanisms, transactional messaging or transactional procedures.

Attila Szegedi on JVM and GC Performance Tuning at Twitter

Attila Szegedi talks about performance tuning Java and Scala programs at Twitter: how to approach GC problems, the importance of asynchronous I/O, when to use MySQL/Cassandra/Redis, and much more.

10 tips on how to prevent business value risk

One category of risk that project teams need to ensure they address is business value failure – delivering a product that fails to provide value for the business investor.

Interview: Software Systems Architecture: Working With Stakeholders Using Viewpoints and Perspectives

InfoQ spoke to the authors of Software Systems Architecture on a couple of new topics, the System Context viewpoint and Agile, which have been added to the second edition.