OrbixWeb 3.0 is a CORBA 2.0 compliant, 100% Pure Java ORB with better lifecycle management of distributed objects. It includes many useful services which make it easier to develop, deploy and manage distributed applications in the Internet age.
In today's computing age of Internet and multi-tier architecture, combining Java and CORBA offers the best solution. If you want to do it, then you might want to look into Iona's OrbixWeb 3.0 as one of the leading edge, robust and proven solutions. OrbixWeb is a fully CORBA 2.0 compliant distributed application development environment for Java.
Iona and CORBA
In the CORBA world, Iona has many firsts to its credit - including the first commercially available CORBA compliant ORB in 1993. With a strong research background of founders, it has always been a technology leader. In OrbixWeb version 3.0, Iona has removed remaining C++ code from its support utilities. The basic ORB was already Pure Java. This version comes with many new services, improved server object invocation and OMG-compliant Java mapping.
Basics of OrbixWeb Architecture
Orbix ORB is implemented as a pair of libraries (for client and server) and the Java based activation daemon orbixdj (orbixd for C++). The daemon is needed only on servers' hosts. It is primarily responsible for (re)launching server processes and connects the client/server for the first time. The daemon maintains a simple database called Interface Repository which maintains the activation modes, access lists and other information about the server. In case of "in process" activation, no separate process is started but the server runs within the same VM (virtual machine). This improves performance. For non-Java servers you will have to use "out process" activation. Manual activation would be required for persistent servers and you might use it for your legacy server. Orbix supports different thread models - namely, per-client, thread-pool and per-client-thread.
After establishing the connection, the requests are passed directly from the client to the server. The messaging component within the libraries manages the (un)marshalling, protocol and synchronization. Orbix supports its proprietary and OMG IIOP protocol.
As a CORBA-based developer you might need to begin with writing the interfaces, using OMG's Interface Definition language, for your object.
Then you compile the IDLs using Iona's supplied IDL-to-language compiler. The IDL to language compiler (Java, C++, Smalltalk, Ada) generates (client side proxy) stubs and (server side) skeletons in that language. OrbixWeb 3.0 completely supports the OMG IDL to Java mapping including the Java ORB portability interfaces. You don't have to recompile stub and skeleton for use against different vendor's ORBs. If you use a previous version of OrbixWeb then I have bad news for you. The new Java IDL mapping is different from OrbixWeb's previous version. You must convert to the new interfaces. The good news is that you can use migration utilities.
Develop Dynamic Client and Servers
In a different scenario, you might not need to start with writing IDL; that is, using Dynamic Invocation Interfaces (DII). In this case, your client might not know the interfaces at compile time. In such cases, the client program browses the Interface Repository (IFR), gets the methods and parameters, formulates the request, sends the request and then polls and processes the result. You can use trader service (OrbixTrader) and naming service (OrbixNames) for getting the object reference that is required for IFR. OrbixWeb also supports Dynamic Skeleton Interface (DSI) which is for developing a dynamic server.
Develop Web Applications Using OrbixWeb
OrbixWeb 3.0 supports Internet Inter-ORB Protocol (IIOP) communication. It enables the Object invocation and callbacks to be sent across the Internet. A client applet along with any browser can download the stub and related OrbixWeb classes. OrbixWeb does not depend upon static embedded browser classes or plugins. Thus, if required, you can change the ORB configuration information on-the-fly. The applet then uses Internet ORB Protocol (IIOP) to communicate with the backend services on the Web server.
Using OrbixWeb for Web
One of the most serious concerns you might have for Internet applications is security. To protect the internal hosts from the hacker's attack, you might need to use Iona's Wonderwall. Wonderwall is a mechanism for firewall navigation by IIOP requests. This proxy allows IIOP traffic to be filtered and routed at the firewall. The Wonderwall "proxifies" the Interoperable Object reference (IOR) of an object and allows remote invocation on the proxy IOR. Once a proxy for the IOR has been established, the client can communicate with the proxy through a single, known port.
If your client is beyond another corporate firewall, OrbixWeb tunnels your IIOP request through HTTP. Basically your client's request gets "wrapped up" in HTTP by the applet's ORB classes. This is known as "HTTP tunneling".
In addition to the wonderwall, you can use OrbixSSL to gain more security. OrbixSSL API (available separately) uses 128bit encryption with DEC, RC4 algorithms. You can use OrbixSSL to replace your default IIOP with the SSL-IIOP protocol.
Iona's Strong Base of Services
Orbix implements many important CORBA compliant services. OrbixEvent implements Event specification. OrbixTalk is a messaging support system based on IP multicast. For IBM customers, Orbix offers Orbix+MQSeries, bringing the power of IBM's messaging middleware in a CORBA environment. OrbixTrader, a CORBA-compliant trader service, is like the yellow pages. OrbixNames is a naming service, which binds meaningful names to object references. For database oriented systems, Orbix comes with OrbixOTS, which implements CORBA transaction services. Orbix has excellent adapters for object databases like Versant, ObjectStore and other ODBMS.
Customize the ORB with
OrbixWeb provides a wide range of integration hooks which give you control and flexibility over the ORB:
Installing, Configuring and
- Loaders - Implement your persistence mechanism using loaders.
- Filters - Expose the request path before, and after marshaling. Implement debugging authentication mechanisms.
- ThreadFilters - Use it to configure a server side thread model to thread-per-request, thread-pool or thread-per-client.
- Transformers - Used for facilitating data privacy
- Callbacks - Use client callback interfaces which a server can invoke without your client explicitly requesting information
- Locators - Override the mechanism for determining target object locations using locators API
- Smart proxies - Override the client stubs. Typically, you can use it to improve performance by implementing client-side caching. You can otherwise use smart proxies for sever rebinding (fail safe), breakpoints or for non-supported type conversions (legacy systems).
The installation of OrbixWeb is straightforward. I installed it on my NT boxes. The configuration was easy too. The GUI-based, user-friendly configuration tool would make your administration easier. You can change the properties of ORB and wonderwall on-the-fly. OrbixWeb maintains the properties as properties class.
You can also monitor your server objects through a GUI-based server manager. Orbix provides different access privileges for clients to invoke, launch or use the server. You can also register the server as one of different invocation modes, shared modes or unshared (per client) or per method (invocation). The secondary modes could be multiple client, per client or per client process. You can maintain server privileges like owner, launch or invoke privilege. All of this gives you better control over server object management.
Configuration Tool and Server Manager
Orbix is one of the few to support both client-side and server-side ActiveX, COM components. It enables you to develop Visual Basic, PowerBuilder and ActiveX as both client and server objects.
- Licensing: Iona charges $100 per runtime for multi-processor machines. Single-processor runtimes are free.
- Firewall: The Wonderwall approach was tightly integrated with the Orbix.
- Debugging: Using APIs we might develop and integrate debugging support, but it would have been nice to have seen it built-in with the product. I hope to see RDBMS adapters very soon.
What Did I Miss?
OrbixWeb: A Flexible, Easy-to-Use and Robust CORBA Framework
- Performance: You might need to do some testing of performance reliability before selecting any ORB. I found OrbixWeb to be pretty good.
- Comparing vendors: The comparison of different ORB vendors can be scaled based on different factors. Such a comparison requires a separate effort.
For a long time, Iona has maintained a technological edge in the CORBA market. This experience has enriched Iona's expertise in many industries. Orbix offers better control over the ORB and server management. It also provides more services than other vendors. Allowing applets as both client and server objects, Web naming, Wonderwall and SSL, Orbix is suitable for Internet. Recently, Iona has licensed COM from Microsoft. We can definitely expect the best integration of both the technologies from Iona in future.
About the Author
Khanderao Kand is presently working as Senior Software Engineer at Arbor Software. He can be contacted at [email protected]