Eyein’ Orion

As I ranted previously, I’m on the lookout for a beginner-friendly Java Web application server. It doesn’t need to do anything fancy like EJB, it just needs to be easy for first-time Java developers to use while they learn Java and deploy their first project or two.

I was about to take Caucho Resin for a spin, but the fact that their trial download expires after 30 days put me off a little. Sure, “students and hobbyists” can write in for a license waiver, but what about professional developers looking to learn a new technology? I suspect they’d grant a waiver in that case as well, but figured I’d start with a server that is clearly free for non-commercial use.

Orion fit the bill nicely. It’s a fully J2EE 1.3 compliant server, which means it supports Enterprise JavaBeans (EJBs), not just JSP/Servlet Web applications, and it’s free to download and use for non-commercial purposes. The Orion site also claims that Orion is “easily the fastest J2EE-based application server”.

Now, I complained that Tomcat wasn’t suitable for beginners because of its twistily organized, and overly technical configuration files and documentation. Orion is definitely better in both those areas: its configuration files are divided more effectively so that basic configuration tasks are quite straightforward. Their documentation is also fairly pleasant to read, although I deduct points for the occasional “under construction” page.

Orion also simplifies the task of bonding to a full-featured Web server like Apache. Instead of relying on server extensions like Tomcat’s JK2 which instruct the Web server to pass requests on to the Java server, Orion receives all the requests itself and passes them on to the Web server for URL patterns you specify. This solution may be a bit wimpy for production sites, but for first timers it’s elegant and effective.

Unfortunately, Orion does fall down in some crucial areas, both for beginners and for experienced developers. For beginners, the full support for J2EE makes things overly complicated when you don’t want to mess with EJBs. You can’t actually deploy a Web application (like the simple one I took you through last week) without first taking the time to learn how to wrap them inside a J2EE application.

For experienced developers who may consider Orion as a production-ready server (who wouldn’t want the “fastest” Java application server?), things are also a little sticky. Orion doesn’t have a native wrapper, nor does it have a Tomcat-like mechanism for hiding inside a native server like Apache. As a result–and someone correct me if I’m wrong, here–you’d need to grant the server full root privileges on a Linux system before it could listen on Port 80. Most server administrators would throw you out of their office for suggesting such a thing.

So yeah. Orion is free, better documented and more capable than Tomcat, but it’s not the beginner’s panacea I’m looking for.

The next stop on my search will either be Caucho Resin or Macromedia JRun. I’ve heard good things about both, but as with Orion they both provide full support for J2EE. Can either of them offer those advanced capabilities while providing beginner-friendly support for JSP/Servlets?

Free book: Jump Start HTML5 Basics

Grab a free copy of one our latest ebooks! Packed with hints and tips on HTML5's most powerful new features.

  • _dreamer_

    people say that the usage of EJBs is about to expire in a little time period. any ideas?

  • bobo the wonder donkey

    have you checked out
    http://jetty.mortbay.org/jetty/
    ?

    It’s small, fast and well-documented.
    Your linux-related issue remains though.

  • http://www.dvd-software.info hurricane_sh

    What’s wrong with Tomcat? The configuation in 2000 needs two lines of code:
    JAVA_HOME=
    TOMCAT_HOME=

    I think it’s pretty good for both test and production system, by cooperating with an EJB server like JBoss, it’s helpful to understand the whole image, locating the errors, a clear 3-layer system.
    Just my 2 cents.

  • http://www.practicalapplications.net bwarrene

    It does take some getting used to configuring Tomcat – more importantly though – I would like to see a simpler management tool to integrate with Apache. It can be challenging to do what seems to be a straighforward process.

  • http://nervecentral.com Nerveman

    So what’s ServletExec from New Atlanta? Is it an option, or am I way off track! (complete Java newbie here…)

  • Frank

    Kevin,

    Has Caucho’s licensing just recently changed? Last time I used it (around April this year), it was free for personal use.

  • Orion User

    >>”You can’t actually deploy a Web application [in Orion] … without first taking the time to learn how to wrap them inside a J2EE application”< <

    Orion has a default app. All you need to do is to configure your web app as being part of the default app, and then configure the web-site.

    1) In application.xml, add a line:

    2) In default-web-site.xml, add the line:

  • Josh

    You don’t need ‘full’ root access to the entire box. Your system admin can use tools like jail to provide your program root access to it can listen on port 80, but segregate your process from the rest of the running system.

    I don’t remember if Linux has a jail-type command, but it is available on the BSDs.

  • Orion User

    >>”Orion doesn’t have a native wrapper, nor does it have a Tomcat-like mechanism for hiding inside a native server like Apache. As a result–and someone correct me if I’m wrong, here–you’d need to grant the server full root privileges on a Linux system before it could listen on Port 80.”

    1) It is not obvious that running Apache as root is any less dangerous than running Orion as root. (Orion’s strength is that it is little-known. OTOH, being Java-based, its weakness is that it cannot do a setuid().)

    2) One can run Apache as a front-end to Orion (and to most other servers) by Proxying from Apache to the port on which the server is listening. Apache will let you configure it so that, for instance, http://www.mysite.com is forwarded to port 8080.

    This is not as good as having a mod_jk, but it is used all the time.