Timer EJB hang saat memeriksa status

Saya menggunakan Pengatur Waktu EJB di aplikasi saya, tetapi aplikasi tersebut hang setiap kali saya memeriksa status pengatur waktu.

Skenario untuk mereplikasi ini di bawah:

1) Mulai pengatur waktu.

2) Dalam metode batas waktu, panggil metode kelas lain dan tidur di sana selama 30 menit.

3) Sebelum 30 menit berakhir, periksa status pengatur waktu dengan menelepon metode di bawah ini.

    public String getTimerStatus() {
    String returnStatus = "Stopped";
    for (Object obj : timerService.getTimers()) {
        Timer t = (Timer) obj;
        try {
            String scheduled = (String) t.getInfo();
            if (scheduled.equals(TIMER_NAME)) {
                returnStatus = "Running";
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    return returnStatus;
}

4) Aplikasi hang ketika metode t.getInfo() dipanggil, seperti yang ditunjukkan di atas.

Tolong beri tahu saya penyelesaian apa pun untuk masalah ini.


person Ran    schedule 01.02.2012    source sumber
comment
Bisakah Anda menunjukkan beberapa kode lagi? Ide saya adalah Anda mengelola utas yang harus dikelola oleh penampung. Hal ini mungkin menyebabkan masalah yang Anda alami   -  person perissf    schedule 03.02.2012


Jawaban (1)


Ide saya adalah t.getInfo() disinkronkan atau mencoba mendapatkan kunci dengan cara lain. Bisakah Anda memberikan kode untuk metode batas waktu dan metode kelas lain yang dipanggilnya? Apakah Anda menggunakan sinkronisasi?

person balage    schedule 18.02.2012