Overview of RMI over IIOP
The following sections provide a high-level view of RMI over IIOP:
What Are RMI and RMI over IIOP?
To understand RMI-IIOP, you should first have a working knowledge of RMI. Remote Method Invocation is the standard for distributed object computing in Java. RMI enables an application to obtain a reference to an object that exists elsewhere in the network, and then invoke methods on that object as though it existed locally in the client's virtual machine. RMI specifies how distributed Java applications should operate over multiple Java virtual machines. RMI is written in Java and is designed exclusively for Java programs.
RMI over IIOP extends RMI to work across the IIOP protocol. This has two benefits that you can leverage. In a Java to Java paradigm this allows you to program against the standardized Internet Interop-Orb-Protocol (IIOP). If you are not working in a Java-only environment, it allows your Java programs to interact with Common Object Request Broker Architecture (CORBA) clients and execute CORBA objects.CORBA clients can be written in a variety of languages (including C++) and use the Interface-Definition-Language (IDL) to interact with a remote object.
Overview of WebLogic RMI-IIOP
RMI over IIOP is based on the RMI programming model and, to a lesser extent, the Java Naming and Directory Interface (JNDI). For detailed information on WebLogic RMI and JNDI, refer to Using WebLogic RMI and Programming with WebLogic JNDI. Both technologies are crucial to RMI-IIOP and it is highly recommended that you become familiar with their general concepts before starting to build an RMI-IIOP application.
The WebLogic Server 8.1 implementation of RMI-IIOP allows you to:
- Connect Java RMI clients to WebLogic Server using the standardized IIOP protocol
- Connect CORBA/IDL clients, including those written in C++, to WebLogic Server
- Interoperate between WebLogic Server and Tuxedo clients
- Connect a variety of clients to EJBs hosted on WebLogic Server
This document describes how to create applications for various clients types that use RMI and RMI-IIOP. How you develop your RMI-IIOP applications depends on what services and clients you are trying to integrate.
Figure 1-1 shows RMI Object Relationships for objects that use IIOP.
Figure 1-1 RMI Object Relationships
Support for RMI-IIOP with RMI (Java) Clients
You can use RMI-IIOP with Java/RMI clients, taking advantage of the standard IIOP protocol. WebLogic Server 8.1 provides multiple options for using RMI-IIOP in a Java-to-Java environment, including the new J2EE Application Client (thin client), which is based on the new small footprint client jar. To use the new thin client, you need to have the wlclient.jar (located in WL_HOME/server/lib) on the client side's CLASSPATH. For more information on RMI-IIOP client options, see Overview of RMI-IIOP Programming Models.
Support for RMI-IIOP with Tuxedo Client
WebLogic Server 8.1 contains an implementation of the WebLogic Tuxedo Connector, an underlying technology that enables you to interoperate with Tuxedo servers. Using WebLogic Tuxedo Connector, you can leverage Tuxedo as an ORB, or integrate legacy Tuxedo systems with applications you have developed on WebLogic Server. For more information, see the WebLogic Tuxedo Connector Guide.
Support for RMI-IIOP with CORBA/IDL Clients
The developer community requires the ability to access J2EE services from CORBA/IDL clients. However, Java and CORBA are based on very different object models. Because of this, sharing data between objects created in the two programming paradigms was, until recently, limited to Remote and CORBA primitive data types. Neither CORBA structures nor Java objects could be readily passed between disparate objects. To address this limitation, the Object Management Group (OMG) created the Objects-by-Value specification . This specification defines the enabling technology for exporting the Java object model into the CORBA/IDL programming model--allowing for the interchange of complex data types between the two models. WebLogic Server can support Objects-by-Value with any CORBA ORB that correctly implements the specification.
Protocol Compatibility
Interoperability between WebLogic Server 8.1 and WebLogic Server 6.x and 7.0 is supported in the following scenarios:
Server-to-Server Interoperability
The following table identifies supported options for achieving interoperability between two WebLogic Server instances.
To
Server
From Server
WebLogic Server 6.0
WebLogic Server 6.1 SP2 and any service pack higher than SP2
WebLogic Server 7.0
WebLogic Server 8.1
WebLogic Server 6.0
RMI/T3HTTP HTTP HTTPWeb Services1 HTTPWeb Services2 WebLogic Server 6.1 SP2 and any service pack higher than SP2
HTTP RMI/T3RMI/IIOP3HTTPWeb Services RMI/T3RMI/IIOPHTTPWeb Services RMI/T3RMI/IIOP4HTTPWeb Services5 WebLogic Server 7.0
HTTP RMI/T3RMI/IIOP6HTTP RMI/T3RMI/IIOPHTTPWeb Services RMI/T3RMI/IIOPHTTPWeb Services7 WebLogic Server 8.1
HTTP RMI/T3RMI/IIOP8HTTP RMI/T3RMI/IIOPHTTPWeb Services9 RMI/T3RMI/IIOPHTTPWeb Services Sun JDK ORB client10
RMI/IIOP11 RMI/IIOP12 RMI/IIOP13 RMI/IIOP14
1. Must use portable client stubs generated from the "To Server" version
2. Must use portable client stubs generated from the "To Server" version
3. No transaction propagation
4. No transaction propagation, Known problems with exception marshalling
5. Must use portable client stubs generated from the "To Server" version
6. No transaction propagation
7. Must use portable client stubs generated from the "To Server" version
8. No transaction propagation. Known problems with exception marshalling
9. Must use portable client stubs generated from the "To Server" version
10. This option involves calling directly into the JDK ORB from within application hosted on WebLogic Server.
11. JDK 1.3.x only. No clustering. No transaction propagation
12. JDK 1.3.x only. No clustering. No transaction propagation
13. JDK 1.3.x or 1.4.1. No clustering. No transaction propagation
14. JDK 1.3.x or 1.4.1. No clustering. No transaction propagation
Client-to-Server Interoperability
The following table identifies supported options for achieving interoperability between a stand-alone Java client application and a WebLogic Server instance.
To
Server
From Client (stand-alone)
WebLogic Server 6.0
WebLogic Server 6.1
WebLogic Server 7.0
WebLogic Server 8.1
WebLogic Server 6.0
RMIHTTP HTTP HTTPWeb Services1 HTTPWeb Services2 WebLogic Server 6.1
HTTP RMI/T3HTTPWeb Services RMI/T3HTTPWeb Services3 RMI/T3HTTPWeb Services4 WebLogic Server 7.0
HTTP RMI/T3RMI/IIOP5HTTP RMI/T3RMI/IIOPHTTPWeb Services RMI/T3RMI/IIOPHTTPWeb Services6 WebLogic Server 8.1
HTTP RMI/T3RMI/IIOP7HTTP RMI/T3RMI/IIOPHTTPWeb Services8 RMI/T3RMI/IIOPHTTPWeb Services Sun JDK ORB client9
RMI/IIOP10 RMI/IIOP11 RMI/IIOP12 RMI/IIOP13
1. Must use portable client stubs generated from the "To Server" version
2. Must use portable client stubs generated from the "To Server" version
3. Must use portable client stubs generated from the "To Server" version
4. Must use portable client stubs generated from the "To Server" version
5. No transaction propagation
6. Must use portable client stubs generated from the "To Server" version
7. No transaction propogation. Known problems with exception marshalling
8. Must use portable client stubs generated from the "To Server" version
9. This option involved calling directly into the JDK ORB from within a client application.
10. JDK 1.3.x only. No clustering. No transaction propagation
11. JDK 1.3.x only. No clustering. No transaction propagation
12. JDK 1.3.x or 1.4.1. No clustering. No transaction propagation
13. JDK 1.3.x or 1.4.1. No clustering. No transaction propagation