o rg
RMI
T CP socket
CORBA
Binary
T CP
Java, C++,
socket
Python dll
Binary
HT T P
Java dan harus pake spring Java dan library hessian Java dan library hessian Semua platf orm bisa
Cukup besar, cocok untuk intranet Cukup besar, cocok untuk intranet Cocok untuk internet, karena berbasis text Cocok untuk internet, karena berbasis text Cocok untuk internet, karena berbasis text
Binary
HT T P
aman
Hessian
Text / XML
HT T P
Hessian
aman
Webservice
Text / XML
HT T P
aman
HT T P
Pilihan f avorit : 1. Aplikasi intranet : Spring Remoting Http Invoker 2. Aplikasi internet : HT T P call with json/XML + Https + Two way ssl handshake kalau aplikasinya critical. Kalau seperti twitter atau f acebook sih ga perlu sampe Two way ssl handshake. Implementasi T hree T ier Untuk mengerti implementasi T hree Tier, baca blog saya terdahulu mengenai arsitektur three tier dan perlu dipelajari dulu apa itu remoting, sebaiknya baca blog endy tentang spring remoting dan http invoker. Kalau anda sudah pernah membuat aplikasi desktop dengan Hibernate dan Spring, sebaiknya langsung saja lihat contoh kodenya. Persiapan pertama adalah membuat aplikasi desktop dengan menggunakan Spring f ramework. Proses development tidak ada yang istimewa, lakukan seperti biasa. Dalam proses development ini masih menggunakan arsitektur client server, sehingga tidak perlu repot menjalankan web server seperti tomcat atau glassf ish. Development sangat nyaman, cepat dan tidak ribet. Setelah developement selesai, berikutnya adalah f ase deployment. Dalam f ase ini barulah kita deploy aplikasi yang sudah dibuat dalam arsitektur three tier. Brilian bukan? develop dengan arsitektur client-server yang ringkas, deploy dengan arsitektur three tier yang robust. Proses perubahan arsitektur client server ke three tier hanya melibatkan 3 f ile konf igurasi saja, tanpa ada perubahan sama sekali di kode java-nya. 1. konf igurasi spring untuk expose service menjadi http invoker : server-httpinvoker-ctx.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="ht t p://www.springframework.org/schema/beans" xmlns:xsi="ht t p://www.w3.org/2001/XMLSchema-inst ance" xmlns:p="ht t p://www.springframework.org/schema/p" xmlns:cont ext ="ht t p://www.springframework.org/schema/cont ext " xmlns:t x="ht t p://www.springframework.org/schema/t x" xsi:schemaLocat ion=" ht t p://www.springframework.org/schema/beans ht t p://www.springframework.org/schema/beans/spring-beans-2.5.xsd ht t p://www.springframework.org/schema/cont ext ht t p://www.springframework.org/schema/cont ext /spring-cont ext -2.5.xsd ht t p://www.springframework.org/schema/t x ht t p://www.springframework.org/schema/t x/spring-t x-2.5.xsd"> <bean id="t ransaksiServiceHt t pInvoker" class="org.springframework.remot ing.ht t pinvoker.Ht t pInvokerServiceExport er" p:service-ref="t ransaksiService" p:serviceInt erface="org.javadeskt op.pos.service.TransaksiService" /> <bean id="mast erServiceHt t pInvoker" class="org.springframework.remot ing.ht t pinvoker.Ht t pInvokerServiceExport er" p:service-ref="mast erService" p:serviceInt erface="org.javadeskt op.pos.service.Mast erService" /> </beans> Dalam konf igurasi diatas kita membuat bean dengan nama transaksiServiceHttpInvoker dan masterServiceHttpInvoker, kedua bean ini digunakan untuk mengekspose TransaksiService dan MasterService agar bisa diakses dari client yang berada di jaringan berbeda menggunakan remote protokol http invoker. 2. konf igurasi spring untuk client invoke http invoker dr server : client-contex-httpinvoker.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="ht t p://www.springframework.org/schema/beans" xmlns:xsi="ht t p://www.w3.org/2001/XMLSchema-inst ance" xmlns:cont ext ="ht t p://www.springframework.org/schema/cont ext " xmlns:t x="ht t p://www.springframework.org/schema/t x" xmlns:p="ht t p://www.springframework.org/schema/p" xsi:schemaLocat ion="ht t p://www.springframework.org/schema/beans ht t p://www.springframework.org/schema/beans/spring-beans-2.5.xsd ht t p://www.springframework.org/schema/cont ext ht t p://www.springframework.org/schema/cont ext /spring-cont ext -2.5.xsd ht t p://www.springframework.org/schema/t x ht t p://www.springframework.org/schema/t x/spring-t x2.5.xsd"> <bean id="t ransaksiService" p:serviceUrl="ht t p://localhost :8080/javadeskt op-server/TransaksiService" p:serviceInt erface="org.javadeskt op.pos.service.TransaksiService" /> <bean id="mast erService" p:serviceUrl="ht t p://localhost :8080/javadeskt op-server/Mast erService" p:serviceInt erface="org.javadeskt op.pos.service.Mast erService" /> </beans> Konf igurasi di atas diletakkan di client, bean transaksiService dan masterService digunakan untuk mengakses service Spring yang berada di server localhost port 8080. Kalau servernya berada di tempat lain, ganti localhost dengan alamat IP server. 3. Buat satu Project web, kemudian tambahkan konf igurasi berikut ini di dalam web.xml-nya
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="ht t p://java.sun.com/xml/ns/javaee" xmlns:xsi="ht t p://www.w3.org/2001/XMLSchema-inst ance" xsi:schemaLocat ion="ht t p://java.sun.com/xml/ns/javaee ht t p://java.sun.com/xml/ns/javaee/webapp_2_5.xsd"> <cont ext -param> <param-name>cont ext CongLocat ion</param-name> <param-value> classpat h:applicat ionCont ext .xml classpat h:server-ht t pinvoker-ct x.xml </param-value> </cont ext -param> <list ener> <list ener-class>org.springframework.web.cont ext .Cont ext LoaderList ener</list ener-class> </list ener> <servlet > <servlet -name>mast erServiceHt t pInvoker</servlet -name> <servlet -class>org.springframework.web.cont ext .support .Ht t pRequest HandlerServlet </servlet class> </servlet > <servlet > <servlet -name>t ransaksiServiceHt t pInvoker</servlet -name> <servlet -class>org.springframework.web.cont ext .support .Ht t pRequest HandlerServlet </servlet class> </servlet > <servlet -mapping> <servlet -name>mast erServiceHt t pInvoker</servlet -name> <url-pat t ern>/Mast erService</url-pat t ern> </servlet -mapping> <servlet -mapping> <servlet -name>t ransaksiServiceHt t pInvoker</servlet -name> <url-pat t ern>/TransaksiService</url-pat t ern> </servlet -mapping> </web-app> Konf igurasi web.xml ini digunakan untuk membuat servlet mapping yang memberikan alamat ke bean transaksiServiceHttpInvoker dan masterServiceHttpInvoker agar bisa diakses lewat protokol http dari client. Penutup Tulisan ini bertujuan untuk membuka wawasan tentang implementasi arsitektur T hree Tier dalam aplikasi desktop. Masih banyak teknik lain dalam implementasi arsiktektur T hree Tier. Kalau anda f amiliar dengan arsitektur aplikasi Java ME yang terhubung dengan Server, anda pasti tidak asing lagi dengan konsep T hree Tier. Tidak semua aplikasi desktop harus menggunakan konsep T hree Tier, silahkan disesuaikan dengan kebutuhan masing-masing dan pastikan anda mengerti manf aat T hree Tier dibanding Client-Server, beserta kelemahanya. Tidak ada teknologi yang sempurnya. Semoga bermanf aat.