The company is The Mind
Electric (TME) and the
envelope is one of simplicity.
TME has tried to build a
Web services platform with a simple
conceptual model and an
easy-to-understand API. It is
working on a next-generation
product they're calling a "Web
services fabric" code named GAIA
but this review focuses on their current
platform, Glue 4.1.
Today APIs are proliferating like rabbits
and frameworks are getting larger and more
complex. When I wear my developer hat, I
prefer to work at the API level. It helps to
promote an understanding of the mechanics
of the system, but it gets harder and
harder to keep up. Graphical tools, like
wizards, can hide the complexity of large
frameworks, but after the initial code-generation
phase is done most of these tools
are not useful or tend to get in the way.
With the ever-increasing complexity of
application servers, Glue takes a welcome
step in the right direction, the direction of
simplicity.
If you're looking to put your toe in the
water of Web services but recoil from the
complexity of working with a full-blown
J2EE application server, then Glue may be
the product for you.
Glue Professional comes with support
via TME's online issue tracker
and includes these high-end features:
IDE plug-ins
Getting Started
You can download Glue from the TME Web
site. Installation was quick and simple. I was
pleasantly surprised to find that the installer
automatically set up my environment. I could
get down to running through the examples
without additional twiddling. This may seem
trivial, but you would be surprised how many
platforms require additional setup and configuration
(e.g., proper CLASSPATH setting) after
the installer has run.
Glue comes with a full complement of API
documentation in Javadoc format and a Users
Guide. The installer also sets up links to the
online TME interest group and issue tracker.
The Simplest of Services
Getting a service up and running in Glue is
incredibly easy. Any Java object can become a
service by simply publishing an instance of
the object to the Glue registry. There is no preprocessing
or configuration required.
Listing 1 (the code is below) shows a
basic object called Converter that converts
temperature in Fahrenheit to Celsius. It
requires only two lines of code to expose this
object as a Web service. Line 25 starts a Web
server that accepts messages via the /glue path.
Line 26 exports the object as a Web service.
Other than the import statements at lines 4 and
5, that's all that's required.
By default, Glue exports all public, static,
and instance methods of the object. If I want to
expose only a subset of the methods I can create
a Java interface that defines the set of methods
I choose to expose. The interface.class is
published along with the object and Glue
exports the methods of the interface. If I don't
have control of the source code of the object, I
can control method exposure by supplying a
Context object that contains a list of method
properties.
A Simple Client
Writing a Web service client using Glue is
also easy. Listing 2 shows a test client for the
Converter service. Line 11 binds to the service
and returns an object that implements the published interface. The service can now be treated as a standard Java object.
There are a few things in this example that
need further explanation. The first parameter of
the bind method is the URL of the WSDL for the
Web service. To obtain the WSDL for the Web
service I just need to append .wsdl to the service
URL. Glue will generate the WSDL automatically
from the interface and cache it for future use.
The second argument of the bind is the class of
the interface for the service. I didn't define an
interface for my Web service, but Glue can generate
one from the service definition with its
wsdl2java tool.
This example may seem overly simplistic but
TME provides a large assortment of examples
that exercise a wide range of Glue's features
including support for .NET.
Advanced Features
You may worry that a tool that provides such
a simple interface would not offer the power and
flexibility that a typical large enterprise would
need. Glue has more advanced features than
most would need.
If you want to monitor or modify the message
stream, Glue provides a feature called
Interceptors. Interceptors are leveraged throughout
Glue to provide advanced processing of
SOAP headers and attachments.
Glue supports SOAP over the Java Message
Service (JMS). Both synchronous and asynchronous
messaging styles are supported and services
can be published simultaneously over JMS
and HTTP.
For those who insist on only using Java standard
APIs, Glue provides implementations of
JAX-RPC and JAXM.
Hard-core techies can completely bypass the
use of Java interfaces and Java/XML serialization.
Glue provides the ability to directly create,
invoke, and process raw SOAP messages.
Finally, for high-volume systems Glue can
reduce the size of SOAP messages by utilizing
optimizations like tag substitution, envelope
omission, and HREF inlining.
Interoperability
Although Glue runs easily out of the box as
a stand-alone lightweight application server, it
can plug into any application server that supports
servlets. In this hosted mode, Glue can
expose any stateless session bean as a Web
service. The Users Guide provides instructions
for installing glue under BEA WebLogic,
WebSphere, and SunONE application servers.
If you're an IDE jockey you'll be happy to
find plug-ins for JBuilder, Eclipse, and IDEA.
Conclusion
I was definitely happy with the speed at
which I could install Glue and get a scratch
Web service up and running. But I was really
impressed when I began to dig in and found a
depth of features I had not expected from a
platform that strived for simplicity. I've always
liked the adage, "Good tools make simple
tasks easy and complex tasks possible." I think
that adage sticks with Glue.
Company Info
The Mind Electric
15455 Dallas Parkway
Millenium Building, 6th Floor
Addison, TX 75001
Phone: (972) 764-5115
Fax: (972) 764-3215
Web: http://www.themindelectric.com
E-mail: info@themindelectric.com
Licensing Information
Developer License: $1000 per developer
Runtime License: $2000 per CPU
Testing Environment
OS: Windows XP Professional (Service Pack 1)
Hardware: Intel Pentium III – 996 MHz – 512 MB RAM
About the Author
Paul Maurer is a principal in the financial services practice of
a leading consulting services company.
paul@paulmaurer.net
Glue 4.1 from The Mind Electric by Paul Maurer
WSJ Vol 03 Issue 11 - pg.31