Bank Operation Using RMI

Example : 1 Banking System Using RMI

Interface File
import java.rmi.*;
public interface BankIntf extends Remote
{
int withdraw(int a,int amt)throws RemoteException;
int deposit(int b,int amt)throws RemoteException;
int balance(int amt)throws RemoteException;
}

Implementation File

import java.rmi.*;
import java.rmi.server.*;
public class BankImpl extends UnicastRemoteObject implements BankIntf
{
public BankImpl()throws RemoteException
{}
public int withdraw(int a,int amt)throws RemoteException
{
amt=amt-a;
return(amt);
}

public int deposit(int b,int amt)throws RemoteException
{
amt=amt+b;
return(amt);
}
public int balance(int amt)throws RemoteException
{
return(amt);
}
}

Server

import java.rmi.*;
public class BankServer
{
public static void main(String args[])
{
try
{
BankImpl bankimpl=new BankImpl();
Naming.rebind("BankServer",bankimpl);
System.out.println("Serevr is ready");
}

catch(Exception e)
{
System.out.println("Exception :"+e);
}
}
}

Client

import java.io.*;
import java.rmi.*;
public class BankClient
{
public static void main(String args[])
{
int ch;
try
{
String bankserverURL="rmi://"+args[0]+"/BankServer";
BankIntf bankintf=(BankIntf)Naming.lookup(bankserverURL);
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
System.out.println("\nEnter the UserName:");
String s=br.readLine();
System.out.println("\nEnter the Account Number:");
int ac=Integer.parseInt(br.readLine());
System.out.println("\nEnter the Initial Amount:");
int amt=Integer.parseInt(br.readLine());
do
{
System.out.println("\n\t1.Withdraw\n\t2.Deposit\n\t3.Balance\n\t4.Exit");
System.out.println("\nEnter your choice:");
ch=Integer.parseInt(br.readLine());
switch(ch)
{
case 1:
System.out.println("\nEnter amount of Withdraw:");
int wd=Integer.parseInt(br.readLine());
System.out.println("\nUserName:"+s);
System.out.println("Account Number:"+ac);
if(wd>amt)
System.out.println("Balance less unable to proceed withdraw");
else
{
amt=bankintf.withdraw(wd,amt);
System.out.println("Balance:"+amt);
}
break;
case 2:
System.out.println("\nEnter amount of deposit:");
int dp=Integer.parseInt(br.readLine());
System.out.println("\nUserName:"+s);
System.out.println("Account Number:"+ac);
amt=bankintf.deposit(dp,amt);
System.out.println("Balance:"+amt);
break;
case 3:
System.out.println("\nUserName:"+s);
System.out.println("Account Number:"+ac);
amt=bankintf.balance(amt);
System.out.println("Balance:"+amt);
break;
}
}while(ch<4);
} catch(Exception e)
{
System.out.println("Exception :"+e);
}
}
}

Steps to compile RMI
C:\set path=c:\jdk1.5\bin;
C:\jdk1.5\bin>javac BankIntf.java
C:\jdk1.5\bin>javac BankImpl.java
C:\jdk1.5\bin>javac BankServer.java
C:\jdk1.5\bin>javac BankClient.java
C:\jdk1.5\bin>rmic BankImpl
C:\jdk1.5\bin>start rmiregistry
C:\jdk1.5\bin>java BankServer
Serevr is ready

Open New Command Prompt

C:\set path=c:\jdk1.5\bin;
C:\jdk1.5\bin>java BankClient 170.100.40.37
Enter the UserName:Jaya
Enter the Account Number:100
Enter the Initial Amount:5000
1.Withdraw
2.Deposit
3.Balance
4.Exit
Enter your choice:1
Enter amount of Withdraw:1000
UserName:Jaya
Account Number:100
Balance:4000

1.Withdraw
2.Deposit
3.Balance
4.Exit
Enter your choice:2
Enter amount of deposit:6000
UserName:Jaya
Account Number:100
Balance:10000
1.Withdraw
2.Deposit
3.Balance
4.Exit
Enter your choice:3
UserName:Jaya
Account Number:100
Balance:10000
1.Withdraw
2.Deposit
3.Balance
4.Exit
Enter your choice:4