Here is an example policy file to use with the server program. You need to start the RMI registry. The RMI registry is a simple server-side bootstrap naming facility that enables remote clients to obtain a reference to an initial remote object. You need to specify, using the java.rmi.server.codebase property, where the server's classes.
#Java Remote Mothod Invocation##Calculator Example
The Java Remote Method Invocation (Java RMI) is a Java API that performs the object-oriented equivalent of remote procedure calls (RPC), with support for direct transfer of serialized Java classes and distributed garbage collection.
Remote Procedure Call: Message passingRemote Procedure Call (RPC) is a protocol that allows programs to call procedures located on other machines.RPC uses the client/server model. The requesting program is a client and the service-providing program is the server.The client stub acts as a proxy for the remote procedure.The server stub acts as a correspondent to the client stub.
- Load Page
####ScreenShots
A simple example of a Java-RMI setup using Maven
Project Setup
There are three subprojects in this example: RMIClient, RMIServer, and RMIInterfaces. These should be self-explanatory. The server sets up a basic class to be used as a remote object. The client then connects to it. Since both the client and the server need to be able to know the definition of the interface, that is broken out into a separate project that they both have as a dependency.
This project should build out of the box with Maven.
Running the project
Running this can be a somewhat involved task, but here's the simple way to do it:
- Run the rmiregistry program. This should be in $JAVA_HOME/bin.
rmiregistry -J-Djava.rmi.server.useCodebaseOnly=false
- Run the RMIServer. Make sure that when setting the RMI server codebase, the path ends with a /, otherwise it will not work.
java -Djava.rmi.server.useCodebaseOnly=false -Djava.rmi.server.codebase=file:C:pathtoclasses com.rm5248.rmiserver.RMIServerMain
- Run the RMIClient. Make sure that when setting the RMI server codebase, the path ends with a /, otherwise it will not work. Also ensure that client.policy is accessible by the application.
java -Djava.rmi.server.useCodebaseOnly=false -Djava.rmi.server.codebase=file:C:pathtoclasses -Djava.security.policy=client.policy com.rm5248.rmiclient.RMIClientMain
Everything should now come up and you should see a message in the server window. The client prints out the number of characters that it sent to the server.
Other Notes
If you improve this example in any way, feel free to send a pull request.