b & w logo

Panther Application Server

What is panther?

Panther is a lightweight, modular Java application server, suitable for embedding in a web server. The intention of the project is not to duplicate all the functionality found in a J2EE app server, rather just some of the most commonly used features (Note: panther was formerly known as Wicker).

Why (yet) another application server?

We'll answer this question in chunks:

  1. Panther is not trying to be a full application server, rather it provides a limited subset of services that most app servers provide.
  2. Most app servers seem to be huge monolithic behemoths where it's all or nothing. If you want one service, then you pretty much need them all. Even where you can modify the configuration to only include the services you require, based upon our experience, many projects don't.
  3. Many projects only use a microscopic subset of the features an app server provides. This is particularly true if you want to be cross-appserver/cross-platform, so a modular app server, where you include the bits you want, makes a lot of sense (at least to us). This is, of course, rather similar to the argument certain luminaries have used in the past against the feature bloat in Office software like Word.
  4. There isn't another open source app server out there that does what we want (or that we could get working just the way we wanted).

What does panther provide?

At the moment the following services are provided 'out of the box':

  1. A Stateless Session Bean container.
    Note 1: SSBs were not pooled prior to version 0.9.1, so there -was- a single instance of each EJB in the container. There didn't seem to be any overhead/negative impact doing things this way, except that the beans are truly/completely stateless -- if you're writing code with this is mind, then you shouldn't have any problems, but we recommend using the latest release anyway.

    Note 2: At time of writing only the ejbCreate method has been implemented in panther (the other ejb* methods are not currently called).
  2. deployment and configuration by Jython
  3. transaction manager -- linked to the data source service. This only works with JDBC data sources, and has only been tested with Postgres so far. (Note, transactions do not cross VM boundaries.)
  4. a basic messaging service (multicast, broadcast and lightweight reliable multicast options available)
  5. jdbc distributed caching service, codenamed c3d -- basically a jdbc driver that caches selects to reduce load on the database and to improve performance (slightly)
  6. a python-scripted (well, jython) telnet management console
  7. example mail and datasource (using Jakarta DBCP) python scripts are also included

What is missing?

(Note: this isn't a comprehensive list -- it needs updating)
In no particular order:

What license is panther released under?

A derivation of the Apache 1.0 license. See here.