RMI and Native Method Calls
RMI is a Java-only remote object scheme, so it doesn’t provide a direct connection between objects implemented in different languages, as CORBA does. But, using Java’s Native Interface API , it is possible to wrap existing C or C++ code with a Java interface and then export this interface remotely through RMI.
To demonstrate, let’s suppose we have some (legacy) native code
that implements the withdrawal, deposit, and transfer operations for a
particular banking system. We can create an implementation of our
Account interface that uses this
native code to implement the deposit(), withdraw(), and transfer() methods on our remote interface.
The implementation for a NativeAccountImpl is shown in Example 13-4. The only
significant difference between this implementation and our original
AccountImpl is that the deposit(), withdraw(), and transfer() methods are declared native, so
the method bodies are not provided here.
Example 13-4. Remote object using a native method implementation
import java.rmi.server.UnicastRemoteObject; import java.rmi.RemoteException; import java.util.List; import java.util.ListIterator; public class NativeAccountImpl extends UnicastRemoteObject implements Account { // Our current balance private float mBalance = 0; // Name on account private String mName = ""; // Create a new account with the given name public NativeAccountImpl(String name) throws RemoteException { mName = name; } public String getName() throws RemoteException ...Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access