RMI Interface তৈরি করা

জাভা আরএমআই (Java RMI) - Java Technologies

382

Java RMI (Remote Method Invocation) এমন একটি প্রযুক্তি যা ক্লায়েন্টকে নেটওয়ার্কের উপর অবস্থিত দূরবর্তী অবজেক্টের মেথড কল করতে সক্ষম করে। RMI-তে একটি Remote Interface তৈরি করা হয়, যা ক্লায়েন্ট এবং সার্ভারের মধ্যে যোগাযোগের জন্য মেথডের চুক্তি নির্ধারণ করে।


RMI Interface তৈরি করার ধাপসমূহ

1. Remote Interface তৈরি করুন

  • একটি ইন্টারফেস তৈরি করুন যা java.rmi.Remote ইন্টারফেসটি এক্সটেন্ড করবে।
  • এই ইন্টারফেসে ডিক্লেয়ার করা মেথডগুলোকে RemoteException থ্রো করতে হবে।

2. Implementation Class তৈরি করুন

  • Remote Interface-টি ইমপ্লিমেন্ট করুন এবং java.rmi.server.UnicastRemoteObject এক্সটেন্ড করে ইন্টারফেসের মেথডগুলোর কার্যকারিতা প্রদান করুন।

3. RMI Server তৈরি করুন

  • ইমপ্লিমেন্ট করা অবজেক্টটি Naming.rebind() ব্যবহার করে RMI রেজিস্ট্রিতে রেজিস্টার করুন।

4. RMI Client তৈরি করুন

  • Naming.lookup() ব্যবহার করে RMI রেজিস্ট্রি থেকে রেজিস্টারকৃত অবজেক্টটি রিটার্ন করুন এবং মেথড কল করুন।

কোড উদাহরণ

1. Remote Interface তৈরি করা

import java.rmi.Remote;
import java.rmi.RemoteException;

// Remote Interface
public interface Calculator extends Remote {
    int add(int a, int b) throws RemoteException;
    int subtract(int a, int b) throws RemoteException;
}

2. Implementation Class তৈরি করা

import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;

// Implementation Class
public class CalculatorImpl extends UnicastRemoteObject implements Calculator {
    // Constructor
    protected CalculatorImpl() throws RemoteException {
        super();
    }

    @Override
    public int add(int a, int b) throws RemoteException {
        return a + b;
    }

    @Override
    public int subtract(int a, int b) throws RemoteException {
        return a - b;
    }
}

3. RMI Server তৈরি করা

import java.rmi.Naming;
import java.rmi.registry.LocateRegistry;

public class RMIServer {
    public static void main(String[] args) {
        try {
            // Start RMI Registry
            LocateRegistry.createRegistry(1099);

            // Create an instance of the Calculator implementation
            Calculator calculator = new CalculatorImpl();

            // Bind the object to the RMI registry
            Naming.rebind("rmi://localhost:1099/CalculatorService", calculator);

            System.out.println("RMI Server is ready.");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

4. RMI Client তৈরি করা

import java.rmi.Naming;

public class RMIClient {
    public static void main(String[] args) {
        try {
            // Lookup the remote object
            Calculator calculator = (Calculator) Naming.lookup("rmi://localhost:1099/CalculatorService");

            // Call remote methods
            int sum = calculator.add(10, 20);
            int difference = calculator.subtract(20, 10);

            // Print results
            System.out.println("Sum: " + sum);
            System.out.println("Difference: " + difference);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

RMI Interface তৈরির প্রধান পয়েন্ট

  1. Remote Interface:
    • Remote Interface জাভার Remote ইন্টারফেস এক্সটেন্ড করে।
    • প্রতিটি মেথড RemoteException থ্রো করতে হবে।
  2. Implementation Class:
    • ইমপ্লিমেন্ট ক্লাস UnicastRemoteObject এক্সটেন্ড করে।
    • রিমোট মেথডগুলোর কার্যকারিতা প্রদান করতে হবে।
  3. RMI Server:
    • RMI Registry শুরু করতে হবে (LocateRegistry.createRegistry() ব্যবহার করে)।
    • Naming.rebind() ব্যবহার করে অবজেক্ট রেজিস্টার করতে হবে।
  4. RMI Client:
    • Naming.lookup() এর মাধ্যমে রিমোট অবজেক্ট রিট্রিভ করতে হবে।
    • রিমোট মেথডগুলোকে সাধারণ মেথডের মতো ব্যবহার করা যায়।

RMI Interface তৈরি করা জাভার অবজেক্ট-অরিয়েন্টেড ক্ষমতাকে নেটওয়ার্কিং-এর সাথে সংযুক্ত করার একটি শক্তিশালী উপায়। এটি সহজেই ডিস্ট্রিবিউটেড অ্যাপ্লিকেশন তৈরি করতে সহায়ক। RMI এর মাধ্যমে জাভা ক্লায়েন্ট এবং সার্ভারের মধ্যে সহজে কমিউনিকেশন এবং ডাটা আদান-প্রদান করা সম্ভব।

Content added By

Remote Interface কী?

Remote Interface হলো একটি Java Interface, যা RMI-এর মাধ্যমে ক্লায়েন্ট এবং সার্ভারের মধ্যে যোগাযোগ করতে ব্যবহৃত হয়। এটি এমন মেথড ডিফাইন করে, যা ক্লায়েন্ট রিমোট সার্ভারে কল করতে পারে।

মূল বৈশিষ্ট্য:

  1. java.rmi.Remote ইন্টারফেস এক্সটেন্ড করে।
  2. সমস্ত মেথডগুলোতে অবশ্যই throws RemoteException থাকতে হবে।
  3. এই ইন্টারফেসটি ক্লায়েন্ট এবং সার্ভারের মধ্যে একটি কন্ট্রাক্ট হিসেবে কাজ করে।

Remote Interface তৈরির ধাপ

ধাপ ১: java.rmi.Remote ইন্টারফেস এক্সটেন্ড করা

  • Remote Interface তৈরির জন্য java.rmi.Remote ইন্টারফেস এক্সটেন্ড করতে হবে।

ধাপ ২: Remote মেথড ডিফাইন করা

  • Remote মেথড ডিক্লেয়ার করতে হবে এবং এগুলোতে throws RemoteException যোগ করতে হবে।

Remote Interface উদাহরণ

নিচে একটি উদাহরণ দেওয়া হলো যেখানে একটি Calculator Remote Interface তৈরি করা হয়েছে।

import java.rmi.Remote;
import java.rmi.RemoteException;

/**
 * Remote Interface for Calculator Service
 */
public interface Calculator extends Remote {
    // Remote method for addition
    int add(int a, int b) throws RemoteException;

    // Remote method for subtraction
    int subtract(int a, int b) throws RemoteException;
}

কোডের ব্যাখ্যা:

  1. extends Remote:
    • এটি ইন্টারফেসকে RMI Remote Interface হিসেবে চিহ্নিত করে।
  2. throws RemoteException:
    • রিমোট মেথড কলের সময় নেটওয়ার্ক বা অন্যান্য সমস্যাগুলোর জন্য এই এক্সসেপশন থ্রো হতে পারে।
  3. মেথড ডিফিনিশন:
    • add এবং subtract মেথডগুলো ক্লায়েন্টের পক্ষে সার্ভার অবজেক্টে রিমোট কল পরিচালনা করবে।

Remote Interface তৈরি এবং ব্যবহারের ধাপসমূহ

1. Remote Interface তৈরি

  • একটি ইন্টারফেস তৈরি করুন যা Remote ইন্টারফেস এক্সটেন্ড করবে এবং এর মেথডগুলোতে throws RemoteException ব্যবহার করুন।

2. Remote Object (Implementation) তৈরি

  • Remote Interface এর জন্য একটি ক্লাস তৈরি করুন এবং সেটি UnicastRemoteObject এক্সটেন্ড করবে।
  • উদাহরণ:

    import java.rmi.server.UnicastRemoteObject;
    import java.rmi.RemoteException;
    
    public class CalculatorImpl extends UnicastRemoteObject implements Calculator {
        protected CalculatorImpl() throws RemoteException {
            super();
        }
    
        @Override
        public int add(int a, int b) throws RemoteException {
            return a + b;
        }
    
        @Override
        public int subtract(int a, int b) throws RemoteException {
            return a - b;
        }
    }
    

3. Server তৈরি এবং Remote Object রেজিস্টার করা

  • সার্ভার ক্লাস তৈরি করুন এবং Remote Object রেজিস্ট্রি সার্ভিসে রেজিস্টার করুন।
  • উদাহরণ:

    import java.rmi.registry.LocateRegistry;
    import java.rmi.registry.Registry;
    
    public class Server {
        public static void main(String[] args) {
            try {
                Calculator calculator = new CalculatorImpl();
                Registry registry = LocateRegistry.createRegistry(1099);
                registry.rebind("CalculatorService", calculator);
                System.out.println("Server is ready.");
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    

4. Client তৈরি এবং Remote Object ব্যবহার

  • ক্লায়েন্ট থেকে Remote Object এর মেথড কল করা হবে।
  • উদাহরণ:

    import java.rmi.registry.LocateRegistry;
    import java.rmi.registry.Registry;
    
    public class Client {
        public static void main(String[] args) {
            try {
                Registry registry = LocateRegistry.getRegistry("localhost", 1099);
                Calculator calculator = (Calculator) registry.lookup("CalculatorService");
                System.out.println("Addition: " + calculator.add(10, 20));
                System.out.println("Subtraction: " + calculator.subtract(30, 15));
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    

Remote Interface এর গুরুত্ব

  1. ডিস্ট্রিবিউটেড অ্যাপ্লিকেশন:
    • Remote Interface ছাড়া ক্লায়েন্ট এবং সার্ভারের মধ্যে কমিউনিকেশন সম্ভব নয়।
  2. টাইপ সেফটি নিশ্চিত করে:
    • ক্লায়েন্ট এবং সার্ভারের মধ্যে কম্প্যাটিবল মেথডগুলোর সঠিক সংজ্ঞা নিশ্চিত হয়।
  3. বহুমুখী ব্যবহার:
    • একটি Remote Interface একাধিক সার্ভার বা ক্লায়েন্টে সহজে ব্যবহার করা যায়।

সারাংশ

Remote Interface হলো RMI-তে ক্লায়েন্ট এবং সার্ভারের মধ্যে যোগাযোগের ভিত্তি। এটি Remote Method এর ডিক্লেয়ারেশন দেয় এবং RMI API এর মাধ্যমে টাইপ-নিরাপদ এবং সুশৃঙ্খল ডিস্ট্রিবিউটেড অ্যাপ্লিকেশন তৈরি করতে সহায়তা করে। Remote Interface তৈরির সময় RemoteException এবং Remote ইন্টারফেস সঠিকভাবে ব্যবহার নিশ্চিত করা গুরুত্বপূর্ণ।

Content added By

Java RMI (Remote Method Invocation)-এর একটি গুরুত্বপূর্ণ ধাপ হল Remote Interface তৈরি করা এবং তাতে Remote Methods সংজ্ঞায়িত করা। Remote Interface হল একটি ইন্টারফেস যা java.rmi.Remote ইন্টারফেসটি এক্সটেন্ড করে।

Remote Method হলো এমন মেথড যা ক্লায়েন্ট মেশিন থেকে সার্ভারে কল করা যায়। প্রতিটি Remote Method-এ java.rmi.RemoteException থ্রো করতে হয়, কারণ এটি নেটওয়ার্ক বা রিমোট কমিউনিকেশন সমস্যা হ্যান্ডেল করে।


Remote Interface তৈরি করার ধাপ

  1. Remote Interface তৈরি করুন:
    Remote Interface-এ সমস্ত মেথড সংজ্ঞায়িত করুন যা ক্লায়েন্ট কল করবে।
  2. java.rmi.Remote ইন্টারফেস এক্সটেন্ড করুন:
    Remote Interface অবশ্যই java.rmi.Remote এক্সটেন্ড করতে হবে।
  3. মেথডে throws RemoteException যুক্ত করুন:
    প্রতিটি Remote Method অবশ্যই throws RemoteException ডিক্লেয়ার করতে হবে।

উদাহরণ: Remote Interface এ Remote Method সংজ্ঞা

Remote Interface তৈরি:

import java.rmi.Remote;
import java.rmi.RemoteException;

// Remote Interface
public interface Calculator extends Remote {
    // Remote Methods
    int add(int a, int b) throws RemoteException;
    int subtract(int a, int b) throws RemoteException;
    int multiply(int a, int b) throws RemoteException;
    double divide(int a, int b) throws RemoteException;
}

বর্ণনা:

  1. Calculator Interface: এটি একটি Remote Interface।
  2. Remote Methods:
    • add(int a, int b) দুটি সংখ্যা যোগ করে।
    • subtract(int a, int b) দুটি সংখ্যার বিয়োগফল প্রদান করে।
    • multiply(int a, int b) দুটি সংখ্যার গুণফল প্রদান করে।
    • divide(int a, int b) দুটি সংখ্যার ভাগফল প্রদান করে।
  3. প্রতিটি মেথড RemoteException থ্রো করতে পারে।

Remote Interface এর কাজের ভূমিকা

  • Remote Interface শুধুমাত্র মেথডের সিগনেচার সংজ্ঞায়িত করে।
  • Remote Interface-এর মেথডগুলি সার্ভার-এ বাস্তবায়িত হয়।
  • ক্লায়েন্ট Remote Interface ব্যবহার করে সার্ভারের মেথড কল করতে পারে।

Remote Interface এর মাধ্যমে মেথড কলের প্রক্রিয়া

  1. সার্ভারে ইমপ্লিমেন্টেশন:
    সার্ভার Remote Interface-এর ইমপ্লিমেন্টেশন ক্লাসে মেথডগুলি বাস্তবায়ন করে।

    উদাহরণ:

    import java.rmi.server.UnicastRemoteObject;
    import java.rmi.RemoteException;
    
    public class CalculatorImpl extends UnicastRemoteObject implements Calculator {
        public CalculatorImpl() throws RemoteException {
            super();
        }
    
        @Override
        public int add(int a, int b) throws RemoteException {
            return a + b;
        }
    
        @Override
        public int subtract(int a, int b) throws RemoteException {
            return a - b;
        }
    
        @Override
        public int multiply(int a, int b) throws RemoteException {
            return a * b;
        }
    
        @Override
        public double divide(int a, int b) throws RemoteException {
            if (b == 0) {
                throw new ArithmeticException("Division by zero is not allowed");
            }
            return (double) a / b;
        }
    }
    
  2. Remote Object Binding:
    সার্ভারে Remote Object RMI Registry-তে bind করা হয়।

    উদাহরণ:

    import java.rmi.registry.LocateRegistry;
    import java.rmi.registry.Registry;
    
    public class Server {
        public static void main(String[] args) {
            try {
                CalculatorImpl calculator = new CalculatorImpl();
                Registry registry = LocateRegistry.createRegistry(1099);
                registry.rebind("CalculatorService", calculator);
                System.out.println("Calculator Service is ready!");
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    
  3. ক্লায়েন্ট থেকে Remote Method কল:
    ক্লায়েন্ট RMI Registry থেকে Remote Object পায় এবং Remote Method কল করে।

    উদাহরণ:

    import java.rmi.registry.LocateRegistry;
    import java.rmi.registry.Registry;
    
    public class Client {
        public static void main(String[] args) {
            try {
                Registry registry = LocateRegistry.getRegistry("localhost", 1099);
                Calculator calculator = (Calculator) registry.lookup("CalculatorService");
    
                System.out.println("Addition: " + calculator.add(5, 3));
                System.out.println("Subtraction: " + calculator.subtract(5, 3));
                System.out.println("Multiplication: " + calculator.multiply(5, 3));
                System.out.println("Division: " + calculator.divide(10, 2));
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    

Remote Interface-এ Remote Method সংজ্ঞা দেওয়ার সময়:

  1. java.rmi.Remote ইন্টারফেস এক্সটেন্ড করুন।
  2. প্রতিটি Remote Method-এ throws RemoteException যুক্ত করুন।
  3. মেথডের শুধুমাত্র সিগনেচার সংজ্ঞা দিন।

এই ধাপগুলো অনুসরণ করলে Remote Object সহজে তৈরি এবং ক্লায়েন্ট থেকে সার্ভার মেথড কল করা সম্ভব হয়। RMI প্রযুক্তি Distributed Systems এর জন্য কার্যকর এবং টাইপ সেফ সমাধান প্রদান করে।

Content added By

Java RMI (Remote Method Invocation) ব্যবহারের সময়, ক্লায়েন্ট এবং সার্ভারের মধ্যে নেটওয়ার্কের মাধ্যমে যোগাযোগ ঘটে। এই প্রক্রিয়ায় অনেক সমস্যার সম্ভাবনা থাকে, যেমন নেটওয়ার্ক ব্যর্থতা, সার্ভার ডাউন হওয়া, বা ডেটা ট্রান্সমিশন ত্রুটি। এ ধরনের ব্যতিক্রমগুলি সঠিকভাবে পরিচালনা করার জন্য Java RMI-তে RemoteException ক্লাস ব্যবহার করা হয়।


RemoteException কী?

RemoteException হল একটি চেকড এক্সসেপশন (Checked Exception), যা RMI সিস্টেমে মেথড কল চলাকালীন কোনো রিমোট অবজেক্টের সাথে যোগাযোগে সমস্যা হলে ছোড়া হয়। এটি জাভার java.rmi প্যাকেজের অংশ।

সিগনেচার:

public class RemoteException extends IOException
  • Superclass: IOException
  • Interfaces: Serializable

RemoteException কখন ছোড়া হয়?

RMI-এর কাজ করার সময় নিম্নলিখিত পরিস্থিতিতে RemoteException ঘটতে পারে:

  1. নেটওয়ার্ক ব্যর্থতা:
    • নেটওয়ার্ক সংযোগ ভেঙে গেলে।
  2. সার্ভার ডাউন:
    • সার্ভার বন্ধ থাকলে বা সার্ভার রিমোট মেথড কল গ্রহণে অক্ষম হলে।
  3. Serialization বা Deserialization ত্রুটি:
    • রিমোট মেথড কলের প্যারামিটার বা রিটার্ন ভ্যালু সিরিয়ালাইজ বা ডিসিরিয়ালাইজ করতে সমস্যা হলে।
  4. Stub বা Skeleton সম্পর্কিত সমস্যা:
    • যদি Stub বা Skeleton ঠিকভাবে কাজ না করে।

RemoteException এর প্রয়োজনীয়তা

  1. ব্যতিক্রম পরিচালনা করা সহজ:
    • RemoteException এর সাহায্যে RMI মেথডের ব্যতিক্রমগুলো স্পষ্টভাবে চিহ্নিত করা যায়।
  2. নেটওয়ার্ক এবং ডিস্ট্রিবিউটেড সিস্টেম ত্রুটি হ্যান্ডলিং:
    • RMI মেথড কল চলাকালীন যে কোনো নেটওয়ার্ক ত্রুটি RemoteException দিয়ে হ্যান্ডেল করা যায়।
  3. Checked Exception:
    • এটি একটি Checked Exception, তাই ডেভেলপারকে বাধ্যতামূলকভাবে এটি হ্যান্ডেল করতে হয়।
    • এটি ডেভেলপারকে মেথডের ব্যতিক্রমগুলো আগে থেকেই বিবেচনা করতে উৎসাহিত করে।
  4. ডিস্ট্রিবিউটেড অ্যাপ্লিকেশন নিরাপদ করা:
    • RemoteException ক্লায়েন্ট এবং সার্ভারের মধ্যে যে কোনো যোগাযোগ সমস্যা সঠিকভাবে পরিচালনা করতে সাহায্য করে।
  5. ডিবাগিং সহজ করে:
    • RemoteException এর মাধ্যমে নেটওয়ার্ক বা রিমোট অবজেক্ট সম্পর্কিত ত্রুটির সঠিক কারণ দ্রুত শনাক্ত করা যায়।

RemoteException উদাহরণ

রিমোট ইন্টারফেস:

import java.rmi.Remote;
import java.rmi.RemoteException;

public interface MyRemote extends Remote {
    String sayHello() throws RemoteException;
}

রিমোট ইম্প্লিমেন্টেশন:

import java.rmi.server.UnicastRemoteObject;
import java.rmi.RemoteException;

public class MyRemoteImpl extends UnicastRemoteObject implements MyRemote {
    public MyRemoteImpl() throws RemoteException {
        super();
    }

    @Override
    public String sayHello() throws RemoteException {
        return "Hello from the RMI Server!";
    }
}

ক্লায়েন্ট:

import java.rmi.Naming;

public class RMIClient {
    public static void main(String[] args) {
        try {
            MyRemote remoteService = (MyRemote) Naming.lookup("rmi://localhost/RemoteHello");
            String response = remoteService.sayHello();
            System.out.println("Server Response: " + response);
        } catch (RemoteException e) {
            System.err.println("RemoteException occurred: " + e.getMessage());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

RemoteException ব্যবস্থাপনার সেরা পদ্ধতি

  1. অ্যাপ্লিকেশন-লেভেল ব্যতিক্রম হ্যান্ডলিং:
    • RemoteException এর জন্য নির্দিষ্ট হ্যান্ডলার তৈরি করা উচিত।
  2. Fallback পরিকল্পনা:
    • যদি নেটওয়ার্ক ত্রুটি হয়, তবে রিকোভারির জন্য বিকল্প ব্যবস্থা রাখা।
  3. ব্যতিক্রম লগিং:
    • RemoteException ঘটলে এটি লগ করা, যাতে ভবিষ্যতে সমস্যার উৎস বিশ্লেষণ করা যায়।
  4. পুনঃচেষ্টা ব্যবস্থা:
    • নেটওয়ার্ক সংযোগ অস্থায়ীভাবে ব্যর্থ হলে পুনরায় চেষ্টা করার ব্যবস্থা রাখা।

RemoteException হল Java RMI এর একটি অপরিহার্য অংশ, যা রিমোট মেথড কলের সময় যোগাযোগ সংক্রান্ত যে কোনো সমস্যাকে হ্যান্ডেল করতে ব্যবহৃত হয়। এটি ডেভেলপারদের ব্যতিক্রম ব্যবস্থাপনায় প্রস্তুত থাকতে সহায়তা করে এবং ডিস্ট্রিবিউটেড অ্যাপ্লিকেশনগুলোর নির্ভরযোগ্যতা ও নিরাপত্তা বৃদ্ধি করে।

Content added By

জাভা RMI (Remote Method Invocation) ব্যবহার করে আমরা একটি রিমোট ইন্টারফেস তৈরি করতে পারি, যা সার্ভার এবং ক্লায়েন্টের মধ্যে যোগাযোগের একটি চুক্তি হিসাবে কাজ করে। এই রিমোট ইন্টারফেসে ডিক্লেয়ার করা মেথডগুলো ক্লায়েন্ট দ্বারা দূরবর্তীভাবে ডাকা যায়।


RMI Interface তৈরির ধাপ

  1. Remote Interface তৈরি করা:
    Remote Interface হলো একটি সাধারণ Java Interface, যা java.rmi.Remote ইন্টারফেসটি এক্সটেন্ড করে।
    • সকল মেথডে throws RemoteException যুক্ত থাকতে হবে।
  2. Remote Object এর Implementation:
    Remote Interface ইমপ্লিমেন্ট করে একটি Remote Object তৈরি করা হয়।
  3. RMI Registry তে Remote Object রেজিস্টার করা:
    Remote Object একটি নির্দিষ্ট নাম দিয়ে RMI Registry তে রেজিস্টার করা হয়।
  4. Client এর মাধ্যমে Remote Method কল করা:
    ক্লায়েন্ট RMI Registry থেকে Remote Object-এর রেফারেন্স পায় এবং সেই রেফারেন্স দিয়ে মেথড কল করে।

RMI Interface এবং উদাহরণ

Step 1: Remote Interface তৈরি

import java.rmi.Remote;
import java.rmi.RemoteException;

// Remote Interface তৈরি
public interface Calculator extends Remote {
    int add(int a, int b) throws RemoteException;
    int subtract(int a, int b) throws RemoteException;
}

বৈশিষ্ট্য:

  • Calculator ইন্টারফেসটি Remote ইন্টারফেসটি এক্সটেন্ড করেছে।
  • মেথডগুলোতে throws RemoteException ব্যবহার করা হয়েছে।

Step 2: Remote Object ইমপ্লিমেন্টেশন

import java.rmi.server.UnicastRemoteObject;
import java.rmi.RemoteException;

// Remote Object ইমপ্লিমেন্ট করা
public class CalculatorImpl extends UnicastRemoteObject implements Calculator {

    // কনস্ট্রাক্টর
    protected CalculatorImpl() throws RemoteException {
        super();
    }

    // Remote Method ইমপ্লিমেন্টেশন
    @Override
    public int add(int a, int b) throws RemoteException {
        return a + b;
    }

    @Override
    public int subtract(int a, int b) throws RemoteException {
        return a - b;
    }
}

Step 3: Server-Side Implementation

import java.rmi.Naming;

public class CalculatorServer {
    public static void main(String[] args) {
        try {
            // Remote Object তৈরি
            Calculator calculator = new CalculatorImpl();

            // RMI Registry তে রেজিস্টার
            Naming.rebind("rmi://localhost:1099/CalculatorService", calculator);

            System.out.println("Calculator Service is ready.");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Step 4: Client-Side Implementation

import java.rmi.Naming;

public class CalculatorClient {
    public static void main(String[] args) {
        try {
            // RMI Registry থেকে Remote Object রেফারেন্স পাওয়া
            Calculator calculator = (Calculator) Naming.lookup("rmi://localhost:1099/CalculatorService");

            // Remote Method কল করা
            int sum = calculator.add(10, 20);
            int difference = calculator.subtract(30, 15);

            System.out.println("Sum: " + sum);
            System.out.println("Difference: " + difference);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

RMI Application রান করার ধাপ

  1. RMI Registry চালু করুন:

    rmiregistry
    
  2. Server Side রান করুন:

    java CalculatorServer
    
  3. Client Side রান করুন:

    java CalculatorClient
    

আউটপুট

Calculator Service is ready.
Sum: 30
Difference: 15

  1. Remote Interface জাভা RMI এর একটি অপরিহার্য উপাদান যা ক্লায়েন্ট এবং সার্ভারের মধ্যে যোগাযোগের নিয়ম নির্ধারণ করে।
  2. উদাহরণটি একটি সাধারণ Calculator Service দেখায়, যেখানে ক্লায়েন্ট রিমোট সার্ভারে add এবং subtract মেথড কল করে।
  3. এই প্রক্রিয়া বড় অ্যাপ্লিকেশনের ক্ষেত্রে বিতরণকৃত সিস্টেম তৈরির জন্য কার্যকর।
Content added By
Promotion

Are you sure to start over?

Loading...