<$BlogRSDUrl$>

Tuesday, September 28, 2004

Tambahan lagi... contoh code RMI

Terdapat beberapa orang yg bertanyakan tentang sistem chatting/message menggunakan socket dan rmi. Saya telah hasilkan code contoh utk nye:

Skeleton code utk sistem message ini menggunakan rmi dah siap. Source codenya boleh diperolehi dpd http://www.geocities.com/hamdimy22/java/rmi/assignment_ver_0.1.zip

Utk runkan dia, step2nya adalah:

1. download file tersebut dan unzip ke mana2 dir yg berpatutan.

2. buka satu command prompt dan pergi ke dir tadi.

3. edit file env.bat utk merujuk kpd dir Java yg telah diinstall kat dlm pc. Kemudian runkan file env.bat tersebut. Utk linux, hasilkan script yg seumpama dgnnya.

4. hasilkan 2 lagi command prompt utk run sebagai User1 dan User2.

5. Utk runkan message server, kat command prompt pertama, runkan file run.bat. Batch file ini akan compile semua class Java (*.java) dlm dir assignment dan dir assignment\comm\rmi, rmic kan kedua2 class yg perlu di rmic, dan runkan server iaitu class assignment.SimpleMessageAppServer. Perhatikan output kat console adalah spt:
Registry created
Bindings Finished
Waiting for Client requests


6. Utk runkan User1, kat command prompt kedua, runkan file user1.bat. Batch file ini akan runkan class assignment.comm.rmi.SimpleMessageAppClientCommunicationRMI. Perhatikan output kat console kat command prompt User1 adalah spt:
Lookup //10.8.193.61:1099/RmiServer completed.
Message listener added to server.
Message from User1 : Test...
Message from User1 : Testing...1...2...3

sementara kat command prompt server:
Registry created
Bindings Finished
Waiting for Client requests
Message listener added.
User User1 is logging in.
Message from User1 : Test...
sendMsgToAll : User1
Message from User1 : Testing...1...2...3
sendMsgToAll : User1


7. Utk runkan User2, kat command prompt kedua, runkan file user1.bat. Batch file ini akan runkan class assignment.comm.rmi.SimpleMessageAppClientCommunicationRMI. Perhatikan output kat console kat command prompt User2 adalah spt:

Lookup //10.8.193.61:1099/RmiServer completed.
Message listener added to server.
Message from User2 : Test...
Message from User2 : Testing...a...b...c

sementara kat command prompt User1:
Lookup //10.8.193.61:1099/RmiServer completed.
Message listener added to server.
Message from User1 : Test...
Message from User1 : Testing...1...2...3
Message from User2 : Test...
Message from User2 : Testing...a...b...c

sementara kat command prompt server:
Registry created
Bindings Finished
Waiting for Client requests
Message listener added.
User User1 is logging in.
Message from User1 : Test...
sendMsgToAll : User1
Message from User1 : Testing...1...2...3
sendMsgToAll : User1
Message listener added.
User User2 is logging in.
Message from User2 : Test...
sendMsgToAll : User2
sendMsgToAll : User1
Message from User2 : Testing...a...b...c
sendMsgToAll : User2
sendMsgToAll : User1


Design sistem ini masih agak lemah, tak sesuai utk penggunaan komersial. Tapi, kalau setakat utk assignment dan utk belajar rmi, ia sudah mencukupi. Teknik2 yg digunakan, baik dari segi design mahupun java rmi, adalah pada tahap sederhana. So, elok la ubah mana2 yg patut supaya lebih serasi dgn diri masing2.

Perhatikan, tiada rmiregistry yg perlu dirunkan. Kalau sesiapa yg baru belajar rmi, mungkin belajar, utk runkan rmi, mesti runkan dulu rmiregistry. Tapi, dlm kes ini, JANGAN runkan rmiregistry, kalau tidak, error nanti. Cuba cari kenapa. Ada dlm code saya.

Perhatikan juga file run.bat. Class server iaitu class assignment.SimpleMessageAppServer, telah terima "assignment.comm.rmi.SimpleMessageAppServerCommunicationRMIBridge" sebagai argument dia iaitu args[0]. class assignment.comm.rmi.SimpleMessageAppServerCommunicationRMIBridge ini adalah jambatan yg menghubungkan kedua2 message server dan semua message client, menggunakan RMI. Utk menggunakan Socket, ganti class ini dgn yg sewaktu dgnnya. Perhatikan package assignment.comm.rmi ini. Hasilkan package assignment.comm.socket dan hasilkan fungsi yg setara dgnnya. Sepatutnya, antara terhasil ialah class yg sewaktu dgn assignment.comm.rmi.SimpleMessageAppServerCommunicationRMIBridge ini. Utk tukar sistem message ini dpd menggunakan rmi kpd socket, ubah je dlm run.bat ini supaya merujuk kpd class yg sewaktu tu dan run balik. Sepatutnya keseluruhan message server dan keseluruhan message client boleh run begitu saje, mencapai max code reuse.

Faham ke? Ada soalan?

Lupa la plak. Dlm class assignment.comm.rmi.SimpleMessageAppServerCommunicationRMIBridge dan class assignment.comm.rmi.SimpleMessageAppClientCommunicationRMI, kena tukar dpd "//10.8.193.61:1099/RmiServer" kpd ip address atau hostname yg sesuai. Compile semula dgn runkan file run.bat

Hasratnya, nilai "//10.8.193.61:1099/RmiServer" ni nak letak dlm properties file, utk memudahkan apa2 perubahan dilakukan. Tak sempat plak. Tak pe la. Boleh buat sendiri sebagai latihan.


Tambahan

Pembunuh orang2 palestin dpd golongan orang yahudi dilepaskan atau diringankan hukumannya. Berita dpd Aljazeera.


Macam2

Echo ver 1.1.3 dah release. Echo, yg saya faham adalah satu lagi web apps framework. Bezanya, ia cuba lari dpd page orientation yg selalunya ada dlm satu2 web apps yg dibina menggunakan, cthnya jsp/php/struts/webwork/etc. Lesen dia pun dah support Mozilla license sekali, selain GPL dan LPGL. Pilih mana2 yg kita suka. Best gak :) Perbincangan tentangnya di theserverside. Artikel tentangnya di IBM developerworks: part 1 dan part 2.

RIFE - offers an alternative approach to web application development and design.

Satu syarikat baru yg fokus kat open source sw testing telah ditubuhkan, Source Labs. Perbincangan tentangnya di theserverside.

JSR-166: java.util.concurrent back-ported to Java 1.4. Perbincangan tentangnya di theserverside.

YourKit Java Profiler ver 3.0 dah release. Perrghh! Mahal gak, lebih rm1,000.00 harganya utk 1 developer.




Comments: Post a Comment

This page is powered by Blogger. Isn't yours?