Stateless এবং Singleton Bean এ Timer Service ব্যবহার

EJB Timer Service - ইজেবি (EJB) - Java Technologies

263

Timer Service হল EJB (Enterprise JavaBeans)-এর একটি ফিচার যা নির্দিষ্ট সময়ে বা নির্দিষ্ট সময় পরপর মেথড কল করার জন্য ব্যবহৃত হয়। এটি Stateless এবং Singleton Beans-এ ব্যবহৃত হতে পারে, যেখানে আপনি ব্যাকগ্রাউন্ড কাজ বা নির্দিষ্ট সময়ের পরে কিছু কার্যক্রম চালাতে পারেন, যেমন ব্যাচ প্রসেসিং বা সময়ভিত্তিক টাস্ক।

এখানে আমরা দেখব Stateless এবং Singleton BeansTimer Service কিভাবে ব্যবহার করা যায় এবং এর উদাহরণ কীভাবে কোডে অন্তর্ভুক্ত করা হয়।


১. Timer Service Overview

Timer Service EJB container দ্বারা পরিচালিত হয় এবং এটি ক্লায়েন্টের অনুরোধ ছাড়াই একটি নির্দিষ্ট সময়ে নির্দিষ্ট মেথড কল করতে সাহায্য করে। TimerService এর সাহায্যে আপনি একটি one-time বা periodic টাইমার তৈরি করতে পারেন যা স্বয়ংক্রিয়ভাবে নির্দিষ্ট সময়ে মেথড চালাবে।

Timer Service ব্যবহার করার জন্য, EJB Beans (যেমন Stateless অথবা Singleton) এ @Schedule অ্যানোটেশন বা প্রোগ্রামেটিকভাবে টাইমার তৈরি করা যায়।


২. Stateless Bean এ Timer Service ব্যবহার

Stateless Bean গুলি ক্লায়েন্টের সাথে কোনো অবস্থা সংরক্ষণ করে না এবং এর জীবনচক্র খুবই ছোট, একবার একটি মেথড কল করার পর সেটি ধ্বংস হয়ে যায়। তবে, Stateless Session BeanTimer Service ব্যবহার করে আপনি এক বা একাধিক নির্দিষ্ট সময়ে বা নির্দিষ্ট সময়ের পরে মেথড কল করতে পারেন।

Stateless Bean Example:

import javax.ejb.Stateless;
import javax.ejb.Timer;
import javax.ejb.TimerService;
import javax.annotation.Resource;
import javax.ejb.Timeout;

@Stateless
public class MyTimerStatelessBean {

    @Resource
    private TimerService timerService;

    public void startTimer() {
        // One-time timer that triggers after 10 seconds
        timerService.createTimer(10000, "One-time Timer");
    }

    @Timeout
    public void timeoutMethod(Timer timer) {
        // This method will be called when the timer triggers
        System.out.println("Timer triggered at: " + timer.getTime());
    }
}

ব্যাখ্যা:

  • @Stateless: এটি একটি Stateless Session Bean নির্দেশ করে।
  • TimerService: এটি TimerService ইনস্ট্যান্সের মাধ্যমে টাইমার তৈরি এবং পরিচালনা করা হয়।
  • startTimer(): একটি টাইমার তৈরি করে যা ১০ সেকেন্ড পরে ট্রিগার হবে।
  • @Timeout: এই অ্যানোটেশনটি সেই মেথডকে নির্দেশ করে যা টাইমার ট্রিগার হলে কল হবে।

৩. Singleton Bean এ Timer Service ব্যবহার

Singleton Bean হল EJB Beans এর একটি বিশেষ ধরনের যা একটি single instance তৈরি করে এবং পুরো অ্যাপ্লিকেশনে শুধুমাত্র একবার রানের জন্য থাকে। Singleton BeansTimer Service ব্যবহার করে আপনি একাধিক টাইমার সেট করতে পারেন যা নির্দিষ্ট সময়ে অথবা নির্দিষ্ট সময় পরপর কাজ করবে।

Singleton Bean Example:

import javax.ejb.Singleton;
import javax.ejb.Timer;
import javax.ejb.TimerService;
import javax.annotation.Resource;
import javax.ejb.Schedule;

@Singleton
public class MyTimerSingletonBean {

    @Resource
    private TimerService timerService;

    public void startTimers() {
        // Periodic timer that triggers every 30 seconds
        timerService.createTimer(0, 30000, "Periodic Timer");
    }

    @Schedule(hour = "*", minute = "*/1", persistent = false)
    public void scheduledMethod() {
        // This method will be called every minute
        System.out.println("Scheduled method triggered every minute.");
    }

    @Timeout
    public void timeoutMethod(Timer timer) {
        // This method will be called when the timer triggers
        System.out.println("Periodic Timer triggered at: " + timer.getTime());
    }
}

ব্যাখ্যা:

  • @Singleton: এটি Singleton Bean নির্দেশ করে, যার একক ইনস্ট্যান্স অ্যাপ্লিকেশন জুড়ে ব্যবহার হবে।
  • TimerService: এটি TimerService ইনস্ট্যান্সের মাধ্যমে টাইমার তৈরি এবং পরিচালনা করা হয়।
  • @Schedule: এই অ্যানোটেশনটি সময় নির্ধারণ করে, যা নির্দিষ্ট সময়ে নির্দিষ্ট মেথড কল করবে (এখানে প্রতি এক মিনিটে)।
  • @Timeout: এটি টাইমার ট্রিগার হলে কল হবে এমন মেথড।

৪. Timer Service এর বিভিন্ন ধরনের ব্যবহার

Timer Service এর সাহায্যে আপনি বিভিন্ন ধরনের টাইমার তৈরি করতে পারেন:

  • One-time Timer: একবার টাইমার শুরু হলে সেটি একবারই কল করবে। (উপরের উদাহরণে ১০ সেকেন্ড পরে)
  • Periodic Timer: নির্দিষ্ট সময় পরপর মেথড কল করবে। যেমন, প্রতি ৩০ সেকেন্ডে বা প্রতি মিনিটে।
  • Persistent Timer: এটি পুনরায় চালু হওয়ার পরে ডাটাবেসে সংরক্ষিত হবে, এবং EJB Container পুনরায় শুরু হলে এটি পুনরায় চালু হবে।

Persistent Timer Example:

import javax.ejb.Singleton;
import javax.ejb.TimerService;
import javax.annotation.Resource;
import javax.ejb.Schedule;
import javax.ejb.Timeout;
import javax.ejb.Timer;

@Singleton
public class PersistentTimerBean {

    @Resource
    private TimerService timerService;

    public void createPersistentTimer() {
        timerService.createTimer(10000, 20000, "Persistent Timer");
    }

    @Timeout
    public void onTimeout(Timer timer) {
        // This method is called when the timer triggers
        System.out.println("Persistent Timer triggered at: " + timer.getTime());
    }
}

এখানে, createTimer(10000, 20000, "Persistent Timer") প্রথমে ১০ সেকেন্ড পরে শুরু হবে এবং পরবর্তী ২০ সেকেন্ড পর পর পুনরায় ট্রিগার হবে।


৫. Timer Service ব্যবহার করার সুবিধা

  1. Automated Task Scheduling: আপনি কোন কাজকে নির্দিষ্ট সময়ে বা নির্দিষ্ট সময় পরপর অটোমেটিকভাবে সম্পাদন করতে পারেন।
  2. Background Processing: ব্যাকগ্রাউন্ডে নির্দিষ্ট সময়ের পরে কাজ করার জন্য এটি উপকারী। উদাহরণস্বরূপ, ব্যাচ প্রসেসিং বা টাইম-সেন্সিটিভ কাজ।
  3. Asynchronous Operation: Timer Service asynchronousভাবে কাজ করে, তাই এটি সার্ভার বা অ্যাপ্লিকেশন ব্যবহারকারীর সাথে যোগাযোগ না করেও কাজ চালিয়ে যেতে পারে।
  4. Stateful and Stateless Beans এর জন্য উপযোগী: আপনি Stateless এবং Singleton Beans উভয়েই Timer Service ব্যবহার করতে পারেন, তবে Stateful Beans এ Timer ব্যবহার নিষিদ্ধ।

সারাংশ

Timer Service হল একটি শক্তিশালী ফিচার যা Stateless এবং Singleton Beans তে নির্দিষ্ট সময়ে বা নির্দিষ্ট সময় পরপর মেথড কল করার জন্য ব্যবহৃত হয়। এটি ব্যাকগ্রাউন্ড কাজের জন্য উপকারী এবং মেসেজ-চালিত অ্যাপ্লিকেশনগুলির জন্য আদর্শ। Eclipse তে EJB Timer Service কনফিগার করে আপনি একাধিক টাইমার তৈরি এবং পরিচালনা করতে পারেন, যা অ্যাপ্লিকেশনের কার্যকারিতা বৃদ্ধি করে এবং নির্দিষ্ট সময়ে কার্যক্রম সম্পন্ন করতে সাহায্য করে।

Content added By
Promotion

Are you sure to start over?

Loading...