New Protocol Offers Simple, Efficient Java RMI
Burlap/Hessian is an alternative remote object invocation and Web services protocol that's available as an open source Java framework. Learn how it enables simpler, more efficient Java RMI.
by Edmon Begoli
|
he Burlap/Hessian protocol is an alternative remote object invocation and Web services protocol supplied as an open source Java framework through Caucho Technology. If you want POJO (Plain Old Java Objects)-based object distribution, efficient serialization, distributed Java objects that hardly need a Web container, maximal ease of use, and a minimal learning curve, then you should give Burlap/Hessian a serious look. Although primarily a Java remote object invocation protocol, it offers stable implementations for C++, C#, Python, and PHP as well. I first ran across Burlap/Hessian while working with the Spring framework. Its exceptional simplicity and efficiency inspired me to write this article. I begin with an explanation of how the protocol works, follow that with a demonstration for establishing a Hessian-based distributed architecture, and close with some practical suggestions for how to use the protocol. Burlap/Hessian Architecture Burlap/Hessian remote objects are just ordinary Java objects that implement some interfaces. They don't require special proxy, home, or remote classes. One of the inherent benefits of this object-and-interface model is that it promotes the good object-oriented design practice of design by interface. Design by interface mandates that client objects depend on abstractions and never on concrete classes. Furthermore, the Burlap/Hessian protocol fully leverages the host environment's Web container capabilities. Hessian server is nothing more than a servlet that can dispatch Burlap or Hessian serialized objects via the Web. Hessian remote objects are configured in a web.xml file (as examples will demonstrate shortly). As previously mentioned, Burlap/Hessian serializes Java objects using a proprietary serialization mechanism. The serialization process is completely transparent to the application (i.e., you do not need to implement any special interfaces to make objects serializable). Burlap/Hessian serialization is very efficient, and the produced serialized object snapshots (either XML or binary) are very compact.
|
Application Development in a Hessian-Based Distributed Architecture This section demonstrates the typical steps involved in establishing a Hessian-based distributed architecture. The sample scenario involves two applications: one for inventory management and the other for order management. The inventory management app is a standalone J2EE application that enables its users to track and manage their parts inventory over the Web. This example takes a plain Java object ( InventoryTracker ) and exposes it to the ordering management application that needs inventory lookup services. Step 1. Enable server components for the remote invocation [Hint: If you want to expose the server objects but you cannot make any changes to them, you can apply the Adapter design pattern. Expose the Adapter object that implements the needed interface and then have it delegate the remote method invocations to the actual business component.] As previously stated, this example exposes the plain Java object The following is the Step 2. Configure the server component for the remote invocation (over the Web) Using the standard Servlet parameter settings in the web.xml file, specify the service implementation object (parameter: The Burlap/Hessian protocol fully leverages the Web container capabilities of the host environment. As you can see, the Hessian server is nothing more than a servlet that can dispatch either Burlap or Hessian serialized objects via the Web. As the service provider, you can choose whether to have a special-purpose Web application for the remote services or to have an already functional Web application expose the remote objects. Step 3. Invocation on the client It is actually a very simple interaction. The client code needs to know the URL of the Hessian servlet. It will use this URL along with the interface class to obtain the interface implementation from the As you probably noticed, the only actual coupling point between the clients' application code and the Burlap- or Hessian-specific classes is through the The most attractive aspect of the Burlap or Hessian client-to-server interaction is that it is accomplished in a true Web services fashion. The client effectively locates the remote object (as a URL) over HTTP (or HTTPS), and from that point it interacts with the object in a true POJO fashion.
|
Suggested Practical Uses for Burlap/Hessian The following are practical implementations for Burlap/Hessian that can benefit your development today: With Spring Framework If you develop enterprise applications using the Spring framework, Burlap and Hessian are already available to you through the framework in a completely transparent fashion. Spring does not require your application to use a particular remoting protocol, since the framework transparently injects the remote dependencies. In this scenario, I recommend using the Burlap/Hessian protocol to take full advantage of Hessian's performance, simple Web application deployment model, and ease of use. With Spring, switching from the Burlap or the Hessian protocol to a more conservative JSR-endorsed protocol such as RMI is a matter of changing configuration. For Localized Object Remoting Some developers may take issue with using a Java distributed computing framework that is not endorsed by the official Java specification. However, if you have to perform distributed computing between just a few applications, Hessian may be the practical way to go. You would save a significant amount of money that you would otherwise spend on EJB training, development, administration, and maintenance. Moreover, Hessian's lightweight architecture and mild—almost non-existent—coupling with the application code will keep your applications from becoming strategically dependent on this proprietary framework. Federation of Portable Devices The authors of the Burlap/Hessian protocol have proposed using it for small devices such as cell phones. This is a rather interesting proposal, and I think it warrants serious consideration. Its small deployment footprint (it can be deployed with only a few core classes), efficient serialization algorithm, and simple infrastructural requirement make Burlap/Hessian a good candidate for a remote protocol implementation in small devices.
Edmon Begoli is a software architect with 10 years of professional experience on large commercial and public software projects. He currently works for a large public institution.
|