Mengakses Web Service dengan REST


Menyambung dari tulisan saya sebelumnya dimana kita telah membuat sebuah web service dengan nama MathService, sekarang kita akan mencoba untuk mencicipi protokol REST untuk mengakses Web Service.

  1. Klik kanan item MathService dalam folder Application Sources/matematikaws, lalu pilih Properties.
  2. Klik item Message Format, lalu beri tanda cek pada item Enable REST Access to SOAP Ports. Dan klik tombol OK.
  3. Kita harus deploy kembali. Klik kanan kembali MathService, lalu pilih Deploy To > nama_koneksi_AS_Anda.
  4. Setelah selesai, kunjungi web service Anda dari browser melalui OC4J Application Enterprise Manager. Kita akan menguji web service MathService kita dengan menggunakan REST.
  5. Setelah kita klik tombol Test Web Service, akan dibuka jendela baru yang berisi form pengujian:
  6. Kita akan mengetahui URL untuk pemanggilan method doTambah() kita jika diakses dengan metode GET HTTP:
    http://localhost:8888/WSAnnotationApp-MatematikaWS-context-root/MatematikaSoap12HttpPort/doTambah?a=100&b=200
  7. Inilah kekuatan REST, dapat diakses melalui metode HTTP secara langsung dan hasil dokumen request dan responsenya juga sederhana. Berikut contoh hasil response dari REST:
    <ns0:doTambahResponse>
    <rpc:result>result</rpc:result>
    <result>300</result>
    </ns0:doTambahResponse>

Demikian percobaan sederhana saya.

Iklan

Membuat Web Service dengan JSR-181


Seperti yang sudah kita ketahui bersama, sejak JDK 5, telah diterapkan sebuah mekanisme pemrograman baru yang dikenal dengan annotation (atau metadata) pada program Java. Dengan adanya annotation ini, kita dapat meminta kepada java compiler untuk melakukan suatu aksi tertentu berdasar metadata yang kita berikan baik pada class, method atau properti. Konsep ini sudah diusulkan sejak tahun 2002 dalam bentuk JSR-175, dan baru disetujui tahun 2004. Lalu dikembangkan menjadi JSR-269 dan diterapkan pada JDK 6.

Untuk J2EE, terutama terkait dengan web service, juga dikembangkan sebuah spesifikasi annotation untuk Web Service dalam bentuk JSR-181. Maksud dan tujuannya dapat saya cuplikan sedikit dari deskripsinyaa:

The principal goal of the specification is to provide a simplified model for web services development that is easy to learn and quick to develop with. The specification will focus on enabling the commonly needed forms of web services required for achieving robust, maintainable, and highly interoperable integration.

Jika kita ingin menggunakan annotasi JSR-181 ini, setidaknya kita menggunakan J2EE 1.4 compliant container. Standar annotation di JSR-181 antara lain:

  • @WebService (javax.jws.WebService)
    • Sebagai tanda bahwa class kita untuk menerapkan web service
  • @WebMethod (javax.jws.WebMethod)
    • Sebagai tanda bahwa method kita sebagai endpoint antarmuka web service
  • @WebParam (javax.jws.WebParam)
    • Sebagai tanda untuk deklarasi parameter (mewakili elemen wsdl:part pada WSDL) dari method kita
  • @WebResult (javax.jws.WebResult)
    • mendefinisikan nilai yang dihasilkan dari method dalam elemen wsdl:part pada WSDL
  • @SOAPBinding (javax.jws.soap.SOAPBinding)
    • mendefinisikan detil binding SOAP dalam elemen wsdl:binding pada WSDL

Baca lebih lanjut

Membuat Web Service secara Buttom Up


Dalam pembangunan sebuah web service, ada dua pendekatan yang dapat kita gunakan: secara Buttom-Up atau Top-Down. Jika kita menggunakan pendekatan Buttom-Up, yang akan kita buat terlebih dahulu adalah definisi Interface dan Implementatornya. Baru setelah itu dihasilkan WSDL dan pemaketan EAR untuk kemudian di deploy ke Application Server. Sedangkan pendekatan Top-Down dilakukan sebaliknya.

Di sini saya akan mencoba menulis tahapan yang dapat kita lakukan untuk mencoba pendekatan Buttom-Up lalu memanfaatkan Oracle WebServicesAssembler yang sudah dibawakan juga di dalam paket JDeveloper 10.1.3 termasuk di dalamnya terdapat OC4J (Oracle Container for Java) standalone yang dapat kita gunakan untuk percobaan web service.

  • Buatlah sebuah interface Java seperti di bawah ini, dan simpan dengan nama AddInterface.java

package number;

import java.rmi.RemoteException;
import java.rmi.Remote;

public interface AddInterface extends Remote {
public int doAdd(int a, int b) throws RemoteException;
}
Baca lebih lanjut

Pembelian Software


Ini yang saya alami terakhir ini. Ketika membeli sebuah notebook, saya mempertimbangkan untuk membeli yang berlabel tanpa sistem operasi (NO OS) dengan harga yang lebih murah. Bayangan saya, setelah ini saya akan memasang Ubuntu sebagai sistem operasinya, sehingga tetap tidak mengeluarkan biaya lagi. Tapi setelah berjalan kurang lebih seminggu, masalah muncul karena istri saya tidak terbiasa menggunakan Ubuntu (walaupun dia tetap ingin belajar Ubuntu). Tapi karena kondisi ini menghambat sedikit banyak pekerjaannya, akhirnya muncul pertimbangan apakah membeli Windows Vista OEM atau tidak?

Nah, di sinilah letak perbedaan yang dapat saya amati. Muncul banyak pertimbangan yang beragam ketika harus memutuskan harus membeli Windows dengan harga Rp 855.000,00. Mengapa harus banyak pertimbangan muncul? Padahal kalau seandainya saja membeli notebook yang sudah di-bundle dengan Windows Vista, kita merasa tidak masalah, maksudnya tidak muncul pertimbangan-pertimbangan seperti yang saya alami ini. Akhirnya diputuskan untuk tetap membeli Windows, dengan catatan semua aplikasi lainnya harus freeware atau opensource.

Yang menjadi catatan saya di sini adalah ternyata ada faktor psikis yang mempengaruhi ketika harus membeli software legal tersendiri. Saya memahaminya karena ada pertimbangan bahwa ada software lain yang serupa tapi gratis/legal (linux/opensolaris), dan ada juga software lain sejenis yang tidak legal (alias membajak). Mungkin ini yang menjadi faktor yang berpengaruh. Lain memang jika membeli sebuah notebook dengan harga yang sudah termasuk Windows, tidak ada faktor tekanan psikis di sini.

Beginilah bentuk perjuangan untuk mengubah budaya juga…..terus berjalan, tapi harus bertahap.

Instalasi Oracle WebLogic Server 10.3


Seperti halnya J2EE implementator lainnya, seperti JBoss dan Glassfish, Oracle  menawarkan sebuah produk bernama Oracle WebLogic Server 10g R3 (sebelumnya beranama Oracle Application Server) yang di dalamnya menggabungkan antara produk Oracle Fusion Middleware dan BEA System. Seperti yang sudah kita ketahui bahwa Oracle telah mengakuisisi BEA System senilai US $ 8.5 miliar pada januari 2008 yang lalu dan tentu saja akuisisi ini mempengaruhi strategi produk Oracle, terutama di bidang Application Server. Sehingga tidak heran jika, isunya, OC4J akan di”matikan” dan diganti dengan framework dan implementasi J2EE dari BEA.

Oracle WebLogic Server 10g R3 merupakan landasan produk penting dari Oracle WebLogic Suite, yaitu sebuah suite untuk aplikasi enterprise dan SOA yang mendukung grid. Di dalam paket Oracle WebLogic Server terintegrasi dengan produk Oracle Fusion Middleware lainnya seperti Oracle JDeveloper, Oracle Coherence, dan Oracle TopLink. Ukuran file paket Oracle WebLogic Server cukup besar, 735 MB, dan ini sedikit merepotkan (bandingkan dengan GlassFish yang lebih ringan 😀 ).

Pemasangan Oracle WebLogic Server

Saya berhasil mengunduh paket ini dan mencoba memasang di Fedora 9 yang sebelumnya telah ada Oracle Database 10g R 2.0.1 (nama file adalah server103_linux32.bin). Untuk memulai pemasangan, terlebih dahulu pastikan bahwa paket-paket yang dibutuhkan telah terpasang. Paket-paket fedora yang saya pasang sama seperti ketika melakukan pemasangan terhadap database Oracle 10g R2.0.1. Berikut beberapa nama paket tersebut (semoga tidak kurang atau lebih):

  • glibc
  • glibc-common
  • binutils
  • compat-glibc
  • compat-libstdc++
  • compat-libstdc++-devel
  • gcc
  • gcc-c++
  • libstdc++
  • libstdc++-devel
  • openmotif21
  • pdksh
  • setarch
  • make
  • gnome-libs
  • sysstat
  • compat-db

Setelah itu, buat user baru yang nantinya akan digunakan untuk pemasangan Oracle WebLogic Server ini.

# groupadd oinstall
# groupadd dba
# groupadd oper
# useradd -g oinstall -G dba oraias
# passwd oraias

Kemudian, login sebagai user oraias. Kemudian jalankan file server103_linux32.bin. Akan muncul jendela dialog instalasi. Ikuti langkah-langkah instalasi yang menurut saya mudah juga untuk dilakukan. Pada tahapan pemasangan paket, jika kita pilih Custom akan dimunculkan daftar paket yang akan terpasang. Adapun paket yang telah ikut terbawa oleh Oracle WebLogic Server dapat dilihat pada gambar 1.

Gambar 1. Komponen Oracle WebLogic Server 10.3

Baca lebih lanjut

Keyczar


Hanya ingin berbagi informasi saja. Jika ada rekan-rekan yang sedang membutuhkan library yang dapat membantu dalam penerapan beberapa algoritma enkripsi, baik simetrik ataupun asimetrik, ada sebuah library yang dapat digunakan dilingkungan Python dan Java, yaitu Keyczar. Keyczar ini dikembangkan oleh anggota tim keamanan Google dan dikeluarkan di bawah lisensi Apache 2.0. Sekedar mencuplik dari Keyczar google code, jika menggunakan Java ada dua versi JVM yang didukung (masing-masing tersedia pustaka yang berbeda), yaitu JDK 1.5 dan JDK 1.6. Keyczar membutuhkan dua pustaka tambahan yaitu Google-gson dan Log4J.

Jika ingin belajar sedikit banyak tentang enrkripsi, dalam posting diskusi Keyczar tersebut sebuah web site yang menurut saya juga sangat bagus untuk memulai pembelajaran tentang keamanan komputer (enkripsi) ini. Silahkan kunjungi Theory and Practice of Cryptography Mini-Course. Selamat mencoba!

Web 2.0 untuk Indonesia


Semula saya berfikir sejauh mana implementasi 2.0? Bidang apa saja yang sudah tersentuh oleh ide-ide cemerlang untuk menggaet jejaring sosial yang lebih leluasa? Setahu saya jejaring pertemanan sudah terlihat jelas (friendster, myspace, facebook, orkut, dan lain-lain), jejaring sosial profesional juga sudah jelas (linkedin), jejaring data-data bookmark (delicious.com, blinklist.com, furl.net, dan sebagainya), portal rss feeder (digg.com, technorati, dan sebagainya), jejaring perpustakaan digital (Library 2.0), jejaring informasi medis (Health 2.0), jejaring media (youtube, flickr), dan sebagainya. Dan ternyata ide-ide untuk membangun jejaring sosial berbasis Internet ini banyak sekali. Lihat saja di All Things Web 2.0.

OK, banyak. Lalu apa yang bisa kita bangun khusus untuk Indonesia? Maksud saya aplikasi-aplikasi web 2.0 untuk Indonesia? Digital Library dengan konsep Library 2.0? Bisa! Kerja sama untuk berbagi informasi kesehatan dengan konsep Health 2.0? Bisa! Berbagi berita dengan konsep News 2.0? Bisa! Sebetulnya semua bisa. Hanya saja yang saya lihat adalah butuh dukungan dari “penguasa”. “Penguasa” ini bisa penguasa infrastruktur yang dominan (misal untuk jaringan bisa didukung oleh Telkom, untuk berita-berita bisa didukung oleh Kompas, Tempo, Detik.com, dan sebagainya), dari departemen pemerintah yang terkait (misal untuk penerapan Health 2.0 sangat perlu dukungan kebijakan dari departemen kesehatan), atau bisa juga dari komunitas yang kuat untuk dapat memulainya. Artinya: “Penguasa” juga harus mulai melihat konsep web 2.0 ini sebagai sesuatu yang sangat penting.

Tapi mungkin, jika saya lihat kembali dari beberapa ide implementasi web 2.0, masih ada kesempatan untuk dapat mulai membangun sendiri aplikasi web 2.0. Tapi yang perlu diingat adalah kebutuhan server harus yang cukup baik, karena nantinya akan jadi pusat data! Tapi mari kita mulai untuk memikirkan kembali tentang ini.