lthough IronFlare’s Orion Application Server is hardly a giant in the app server market, there is no arguing its position as a hunter in pursuit. Orion has quietly grown in popularity and respect as a J2EE application server in Java programming circles thanks to IronFlare’s recent licensing arrangement with Oracle. Oracle has integrated Orion into Oracle9iAS as OC4J (Oracle Containers for J2EE)lends significant credibility and momentum to its already strong app server product.
This article discusses some of the strengths that make Orion an app server to watch, as well as the weaknesses that come with being a new product.
Performance: Orion Beats the Big Guys
Orion is fastvery fast. I performed some benchmark tests to update the assessments I made about Orion in “Choose the Right J2EE Application Server for You” (January 2001) and I found that my results were fairly consistent with Orion’s existing Apache vs. Orion benchmarks. Since then, I have used a useful and freely available load-testing tool from Microsoft called WAS (Web Application Stress tool) to confirm that Orion is still out in front of Apache for static page performance. On my Linux (kernel 2.4) box running Orion 1.5.2, I can retrieve a small HTML file at approximately 220 pages/second over a 100Mbps network connection. Apache 1.3.19 operates at approximately 180 pages/second.
Oracle’s benchmarks also reiterate the latency and throughput advantages of Orion against some of its major competitors. Compared to Tomcat, WebSphere, and App Server X, Orion handles several times as many pages in a fraction of the time.
Footprint: Efficient Package
Orion is a tight software package (28MB, including docs and GUI tools). Orion also makes efficient use of memory and CPUs when running EJB, JSP, and servlet code. I have found that J2EE code ported from other J2EE application servers I have used ran leaner and with less hardware requirements on Orion. If you expect to your memory and CPU consumption to balloon when users hit your system, you will be pleasantly surprised with Orion. When I did my first port from a mainstream application server to Orion, I assumed I had very different settings or I had done something wrong because my JSP/servlet software (largely a JSP/servlet application using a connection pool to an Oracle 8i database) was running so quickly on the Orion instance.
Orion supports Jikes (a wonderful, high-speed Java compiler from IBM) for run-time compilation and integrates with it very easily. Jikes is a good deal stricter than javac in many programming steps, forcing better coding habits in my opinion. With Jikes, compiling servlets, JSPs, and EJBs is very quick, simplifying the developer cycle from code modification to functional tests via the Web browser. You also can choose from a number of JVMs depending on your preferencea good thing because JVMs vary significantly in performance.
The OC4J benchmarks that I reviewed for this article include JSP, servlets, and EJBs in their test suites, and they confirm my conclusion that Orion’s performance is very fast. I could not find a single case in which Orion came second in performance, even when I standardized the JVM, javac, and system configuration.
JSP and Servlets
Orion is able to execute JSP and servlet code very efficiently, particularly on Linux where I have used these two technologies most heavily. You might wish to check out Orion’s JSP benchmarks. I found Tomcat performs better than reported in the Orion benchmarks, but the fact that the benchmarks are one year old may explain that.
Orion provides a reasonable amount of configuration regarding EJB performance and behavior. Orion’s EJB management is configured via orion-ejb-jar.xml. Follow the link for a good discussion of the parameters that can be configured. You will find most of the standard configurable parameters such as session timeout, entity pool timeout, copy-by-value control, etc. I stay away from entity beans and write my own data layer in EJBs and JDBC for better performance and productivity. On a related note, deploying EJBs and entire applications is incredibly fast due to Orion’s hot-swap deployment features. Unlike other Web app servers, the interval from EJB modification to test can be as quick as a second or two, which is great for development environments.
Not much needs to be said hereOrion’s pricing is very competitive. You don’t have to pay for development licenses, and deployment licenses are US$1,500 per server independent of the number of CPUs on your server. In fact, I worry that Orion’s pricing structure is too generous. Some companies use Orion for prototyping and development and then move to more costly application servers for production. Porting development code from Orion to larger production instances is relatively easy and it encourages more open development practices. Low-cost developer licenses would supply revenue that IronFlare could use to support its Web presence and speed up product development.
Installation (Quick and Easy); Deployment (Not)
Setting Up Orion
You may want to tweak the default-web-site.xml file in the config directory.
Orion 1.5.2 has an alpha of some graphical deployment/administration tools, which show real promise. In particular, I think Orion is stepping in the right direction with its EAR (Enterprise ARchive) and WAR (Web application ARchive) deployment creation tools. (You can access these through consoleadmin.jar, or through earassembler.jar and webappassembler.jar directly.) These tools simplify the deployment and installation of a production-ready application. Their EJBMaker tool creates and maintains EJBs, but not with the functionality that JBuilder or similar high-end IDEs do.
Orion’s ease of deployment positions it well for efficient developmentsmall intervals between code modification and EJB tests make for quick coding cycles. I’ve found that the installation and/or update of one or more EJBs can be very slow and time consuming with many other application servers. Orion’s auto generation of stubs further speeds up the EJB installation process.
Orion offers strong support for the J2EE specifications. In the previous review I pointed out Orion’s thorough J2EE support in comparison to some of its competitors. The lead is now less pronounced, and some competitors seem to have caught up. Case in pointcompare WebLogic’s specification support to that of Orion. BEA has indicated EJB 2.0 compliance ahead of the pack (in WebLogic 6.1), which is impressive when you consider that the formal vote on EJB 2.0 took place on September 4, 2001.
Granted, statements of support aren’t always reality. My experience with porting software to/from WebLogic and Orion is that J2EE software moved back and forth quite seamlessly with both provided that your coding and design decisions plan for it (i.e., avoiding proprietary extensions).
Orion itself is not yet J2EE certified, probably due to the costs of certification more than anything else. Oracle’s OC4J software is certified with the 1.2.2 and 1.3 JDK (see: OC4J Certification Matrix and Oracle9iAS Containers for J2EE (OC4J) Technical FAQ)Third-Party Integration
If you are not happy with Orion’s integrated Web server, you can integrate it with another server such as Apache. Apache configuration is addressed in Orion’s FAQ pages and in an orionsupport.com article. If you’re into debugging and IDE integration, you may have a bit of work ahead of you. Because of the small Orion userbase, there are fewer samples of IDE and debugging integration. I did find the following articles fairly helpful:
- Orionsupport.com’s JBuilder 4.0 debugging tutorial
- Oracle.com’s Oracle9iAS and JDeveloper integration tutorial
- Sitraka.com’s app server integration tutorial for tying JProbe into Orion 1.3.x and 1.4.x (no word on 1.5.x support yet)
- Orionserver.com’s Debugging Orion with Kawa and NetBeans FAQ
The latest versions of Orion come integrated with a small Java-coded relational database called Hypersonic SQL. Haven’t heard of it? Most haven’t. You may want to switch to a more standard database and define your own data source. Orion does not come with optimized JDBC drivers like WebLogic’s tuned Oracle JDBC drivers, which could be a disadvantage. If you really care about performance, you should go with Oracle’s JDBC/OCI bridged driver (but always test an assortment of connection pool configurations and JDBC drivers to find the right combination).
Orion 1.5.2 comes with Xalan (XSLT processor) and Xerces (SAX/DOM XML parser) allowing it to provide strong XML/XSLT performance out of the box. Does this mean that it competes with other mainstream J2EE servers? The default Xerces/Xalan JAR files that come with Orion may be missing some features you require because they are not the most recent versions. A quick “jar -tvf Xerces.jar | more” will allow you to look for the *.info file that indicates the Xerces version. You may wish to experiment with the newer Xerces and Xalan versions, but be prepared to revert to the original copies if you start running into troubles.The Hunter Has Its Limits
As you can tell, I enjoy working with Orion. However, the following issues limit Orion’s appeal for certain applications and users:
- Administration?The biggest nuisance with Orion is its configuration and administration. Understanding the mechanism and becoming familiar with Orion’s environment takes quite a bit of time and effort. Once you conquer this learning curve, it is a fairly efficient approach but more documentation and sample configurations would have helped the learning process.
- Support?Orion’s online support documentation is so lacking that an independent site, orionsupport.com was established. Combine this resource with the reportedly unreliable but fairly active Orion mailing list and you have a reasonable support network. I have not yet run into specific Orion bugs, but a quick perusal through IronFlare’s bug tracking mechanism (Bugzilla) shows some significant bugs awaiting action. Then again, I give kudos to Orion for disclosing the full scope of its outstanding and corrected bugs.
- Documentation?Orion’s documentation is sometimes sparse and not always clearly laid out. This makes locating specific answers or problems difficult. Orion doesn’t match WebSphere’s and WebLogic’s mountains of documentation and online support. It suffers from a lack of sample code, tutorials, tech notes, white papers, etc., and at the time this article was written, its Tutorial Section had not been updated since September 3, 2000.
- Customer Testimonials?The Orion site lists some customers who use Orion on their but the app server needs more enterprise-oriented sites with mission-critical needs for data to use, talk about, and brag about it to lure risk-averse architects.
- User Interface?I’m not one for complex, large administration GUIs, having suffered through long delays while running other J2EE vendors’ massive admin consoles over X11 on DSL. However, the Orion interface is not at all elegant or easy to navigate.
Why are support and documentation such a striking point? Consider the following scenario. You’re running into connection pool problems in Orion. You go to groups.google.com (perhaps one of the most useful technical tools on the Web) and search for “Orion connection pool.” You receive six resultsnot much help there. In contrast, searching for “WebLogic connection pool” returns 4,140 results (searches run on September 9, 2001). Low discussion traffic places more reliance on the quality and response time of IronFlare’s technical support team and the Orion mailing list.
Orion is a wonderful J2EE application server. I hope for big things from IronFlare, and I also hope that Oracle’s licensing of the IronFlare container technology will provide even more momentum to the evolving Orion app server. However, when choosing new technology, safe solutions, broad user support, and proven, long-term performance are critical selection criteria for the types of projects I generally work on. Consequently, I’d like to see more evidence that Orion can be a safe and strong solution on an enterprise scale (e.g., clustering and scalability features under demanding real-world conditions). In the meantime, I recommend Orion for smaller projects until it can fulfill its considerable potential.