Anda di halaman 1dari 7

Message-Driven Bean

BAB IX MESSAGE-DRIVEN BEAN

9.1 IDENTITAS
Kajian
Penggunaan Message-Driven Bean dalam aplikasi enterprise
Topik
1. Implementasi Message-Driven Bean
Referensi
1. Sierra, Kathy & Bert Bates. 2003. Head First EJB. OReilly
Kompetensi Utama
1. Mampu mengetahui konsep Message-Driven Bean
2. Mampu menggunakan Message-Driven Bean dalam aplikasi enterprise
Lama Kegiatan Praktikum
1. Pertemuan Terbimbing : 1 x 120 menit
2. Kegiatan Mandiri : 2 x 120 menit
Parameter Penilaian
1. Jurnal Pengamatan
2. Tugas Akhir

H a l 57

Message-Driven Bean
9.2 PERTANYAAN PENDAHULUAN
Kerjakan tugas pendahuluan ini, jika sudah selesai, kumpulkan kepada asisten anda. Waktu
pengerjaan maksimal 10 menit.
1. Jelaskan apa itu Message-Driven Bean
2. Apa yang membuat Message-Driven Bean sangat berbeda dibanding dua jenis Bean yang lain?

H a l 58

Message-Driven Bean
9.3 PRAKTIK
Pada bagian ini dipelajari mengenai bagaimana menggunakan Message-Driven Bean dalam aplikasi
enterprise.
9.3.1 Soal
Dengan menggunakan enterprise application project yang telah dibuat pada praktikum sebelumnya,
implementasikan Message-Driven Bean yang akan menulis sebuah string ke server.
9.3.2 Langkah Penyelesaian
1. Membuat Message-Driven Bean dalam aplikasi enterprise
a. Klik kanan pada folder PrakEnterprise-ejb pada project, pilih Message-Driven Bean
b. Beri nama bean TestMsg dan isi field package dengan beans. Pilih Project Destinations
dan klik Add. Isi Destination Name dengan jms/PrakEnterprise dan Destination Type
dengan Queue. Klik OK dan Next

c. Tidak ada yang perlu diganti. Klik Finish

H a l 59

Message-Driven Bean
d. Modifikasi prosedur onMessage(), isi dengan aksi yang akan dilakukan ketika Bean
dikirim pesan: menulis sebuah string ke server
1. System.out.println("Bean terpanggil!");
2. Membuat servlet untuk pengirim pesan ke Bean
a. Buat servlet pada folder PrakEnterprise-war, beri nama MessageServlet dan package
servlets
b. Tambahkan atribut bertipe kelas javax.jms.ConnectionFactory yang di-inject dengan
annotation Resource
1. @Resource(mappedName = "jms/PrakEnterpriseFactory")
2. private ConnectionFactory cf;
c. Tambahkan atribut bertipe kelas javax.jms.Queue yang di-inject dengan annotation
Resource
1. @Resource(mappedName = "jms/PrakEnterprise")
2. private Queue queue;
d. Tambahkan kode di dalam prosedur processRequest() untuk melakukan koneksi dengan
API JMS dan mengatur setting transaksi pesan
1. Connection conn = cf.createConnection();
2. Session sess = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
3. MessageProducer mp = sess.createProducer(queue);
e. Tambahkan kode di dalam prosedur processRequest() untuk memproses dan
menyiapkan pesan agar siap dikirim, lalu mengirim pesan ke Bean dan menutup semua
koneksi
1. ObjectMessage msg = sess.createObjectMessage();
2. mp.send(msg);
3. mp.close();
4. conn.close();
3. Catatan
a. Jika deploy/run mengalami error karena nama resource jms/PrakEnterprise tidak
ditemukan, artinya NetBeans gagal membuat otomatis JMS connection. Buat secara
manual di admin panel Glassfish (http://localhost:4848, user: admin, pass: adminadmin)
pada bagian JMS Resources. Buat jms/PrakEnterpriseFactory pada Connection Factories
dan buat jms/PrakEnterprise pada Destination Resources
9.3.3 Solusi Lengkap
1. /* TestMsg.java */
2. ...
3. @Override
4. public void onMessage(Message message) {
5.
System.out.println("Bean terpanggil!");
6. }
7. }

H a l 60

Message-Driven Bean
1. /* MessageServlet.java */
2. ...
3. public class MessageServlet extends HttpServlet {
4.
5.
@Resource(mappedName = "jms/PrakEnterpriseFactory")
6.
private ConnectionFactory cf;
7.
@Resource(mappedName = "jms/PrakEnterprise")
8.
private Queue queue;
9.
10. protected void processRequest(HttpServletRequest request,
HttpServletResponse response)
11.
throws ServletException, IOException {
12.
try {
13.
Connection conn = cf.createConnection();
14.
Session sess = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
15.
MessageProducer mp = sess.createProducer(queue);
16.
17.
ObjectMessage msg = sess.createObjectMessage();
18.
mp.send(msg);
19.
mp.close();
20.
conn.close();
21.
} catch(Exception e) {
22.
System.out.println(e);
23.
}
24. }
25. ...
9.3.4 Pengamatan
1. Apa kegunaan dari parameter false dan auto-acknowledge dari prosedur createSession?
2. Apa bentuk objek yang dikirim ke JMS API dari Message-Driven Bean?

H a l 61

Message-Driven Bean
9.4 TEST AKHIR
Modifikasi prosedur onMessage() dalam Message-Driven Bean agar dapat melakukan query database.

H a l 62

Message-Driven Bean
9.5
9.5.1

RESUME
Tugas Pendahuluan
Kerjakan
a. Pertanyaan pendahuluan (2 soal)
b. Pengamatan praktik (2 soal)
Kumpulkan jawaban anda sebelum praktikum dimulai.

9.5.2

Jurnal
Kerjakan bagian Tugas akhir dan/atau soal yang yang diberikan oleh asisten di kelas, dan
kumpulkan jawaban anda kepada para asisten sebelum praktikum diakhiri.

H a l 63

Anda mungkin juga menyukai