RMI Registry ম্যানেজমেন্ট এবং Naming Convention

RMI Registry এবং Naming Service - জাভা আরএমআই (Java RMI) - Java Technologies

279

RMI Registry হল একটি সার্ভার-সাইড রেজিস্ট্রি যেখানে রিমোট অবজেক্টগুলি bind করা হয়, যাতে ক্লায়েন্ট অ্যাপ্লিকেশনগুলো সহজেই তাদের রেফারেন্স পেতে পারে। এটি RMI কমিউনিকেশনের একটি গুরুত্বপূর্ণ অংশ। RMI Registry সাধারণত port 1099-এ কাজ করে, তবে এটি কাস্টম পোর্টেও চালানো যেতে পারে।


RMI Registry ম্যানেজমেন্ট

RMI Registry শুরু করা

  1. Java 5 এবং তারপরে: RMI Registry শুরু করার জন্য LocateRegistry.createRegistry(port) ব্যবহার করা হয়।
    উদাহরণ:

    import java.rmi.registry.LocateRegistry;
    
    public class RMIRegistryExample {
        public static void main(String[] args) {
            try {
                LocateRegistry.createRegistry(1099); // Default port 1099
                System.out.println("RMI Registry is running...");
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    
  2. External Command Line Tool: RMI Registry শুরু করতে rmiregistry কমান্ড ব্যবহার করা যেতে পারে।

    rmiregistry 1099
    
    • উপরের কমান্ডটি 1099 পোর্টে একটি RMI Registry শুরু করবে।

RMI Registry এ অবজেক্ট Bind করা

Naming.rebind বা Naming.bind ব্যবহার করে রিমোট অবজেক্ট রেজিস্ট্রি-তে নিবন্ধিত করা হয়।

import java.rmi.Naming;

public class Server {
    public static void main(String[] args) {
        try {
            LocateRegistry.createRegistry(1099); // RMI Registry তৈরি করা
            HelloImpl hello = new HelloImpl();
            Naming.rebind("rmi://localhost:1099/HelloService", hello);
            System.out.println("HelloService is bound to the RMI Registry.");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

RMI Registry থেকে অবজেক্ট Unbind করা

RMI Registry থেকে রিমোট অবজেক্ট সরানোর জন্য Naming.unbind() ব্যবহার করা হয়।

import java.rmi.Naming;

public class UnbindExample {
    public static void main(String[] args) {
        try {
            Naming.unbind("rmi://localhost:1099/HelloService");
            System.out.println("HelloService is unbound from the RMI Registry.");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Naming Convention

RMI Registry-তে রেজিস্টার করা রিমোট অবজেক্টগুলোর জন্য নির্দিষ্ট Naming Convention অনুসরণ করা হয়। এর মাধ্যমে ক্লায়েন্ট সহজে রেজিস্ট্রি থেকে সঠিক রিমোট অবজেক্ট খুঁজে পায়।

Naming Structure

rmi://<host>:<port>/<service_name>
  1. rmi://:
    • এটি RMI প্রটোকল নির্দেশ করে।
  2. :
    • সার্ভারের হোস্ট নাম বা IP অ্যাড্রেস।
    • উদাহরণ: localhost, 192.168.1.100
  3. :
    • RMI Registry এর পোর্ট নম্বর। ডিফল্ট পোর্ট 1099।
  4. <service_name>:
    • রিমোট অবজেক্টের একটি ইউনিক নাম।
    • উদাহরণ: HelloService, CalculatorService

উদাহরণ

  1. Default Port ব্যবহার করে:

    rmi://localhost/HelloService
    
  2. Custom Port ব্যবহার করে:

    rmi://192.168.1.100:5000/CalculatorService
    

RMI Registry ব্যবহারের সময় সাধারণ ত্রুটি ও সমাধান

1. RMI Registry চলছে না

  • ত্রুটি:

    java.rmi.NotBoundException
    
  • সমাধান:
    নিশ্চিত করুন যে RMI Registry চলছে এবং সঠিক পোর্টে কানেক্ট করা হয়েছে।

2. Stub ক্লাস মিসিং

  • ত্রুটি:

    java.rmi.UnmarshalException: error unmarshalling arguments
    
  • সমাধান:
    • জাভার নতুন সংস্করণে ম্যানুয়ালি Stub জেনারেট করার প্রয়োজন নেই।
    • Ensure correct implementation and deployment of remote object.

3. Network Connectivity সমস্যা

  • ত্রুটি:

    java.rmi.ConnectException: Connection refused to host
    
  • সমাধান:
    • নিশ্চিত করুন যে সার্ভার এবং ক্লায়েন্ট সঠিক নেটওয়ার্কে আছে।
    • ফায়ারওয়াল বা নিরাপত্তা ব্যবস্থা চেক করুন।

RMI Registry এর গুরুত্বপূর্ণ টিপস

  1. Custom Ports ব্যবহার করুন:
    • একাধিক RMI Registry চালাতে চাইলে আলাদা পোর্ট নম্বর ব্যবহার করুন।
  2. Security Manager ব্যবহার করুন:

    • RMI কমিউনিকেশন সুরক্ষিত করার জন্য SecurityManager যোগ করুন।
    System.setSecurityManager(new SecurityManager());
    
  3. Service Name যথাযথভাবে নামকরণ করুন:
    • রিমোট অবজেক্টের জন্য ইউনিক এবং অর্থবহ নাম ব্যবহার করুন।
  4. Proper Cleanup:
    • প্রোগ্রাম বন্ধ করার আগে unbind বা rebind নিশ্চিত করুন।

RMI Registry হল RMI ভিত্তিক ডিস্ট্রিবিউটেড অ্যাপ্লিকেশন তৈরি করার একটি গুরুত্বপূর্ণ উপাদান। Naming Convention এর মাধ্যমে রিমোট অবজেক্টগুলোর রেজিস্ট্রেশন ও অ্যাক্সেস সহজ হয়। উপরের ধাপগুলো অনুসরণ করে আপনি RMI Registry এবং এর Naming Convention এর কার্যকর ব্যবহার শিখতে পারবেন।

Content added By
Promotion

Are you sure to start over?

Loading...