Yuppp, tulisan kali ini bakal ngebicarain gimana cara ngebikin web
service instan yang bisa dipake jadi tugas kuliah. Sebenarnya,
requirement dari tugas gw kali ini cuma mengimplementasikan web service.
Sangat minimal emang requirement-nya. Kalo diliat dari situsnya
netbean, sejam juga selesai tuh. Cuma berhubung dosennya rese, jadi
musti pake yang namanya database. Masalahnya, menurut sang dosen, inti
dari web service adalah berbagi operasi penting yang gak bisa dilakukan
oleh suatu client. Nah, hal yang mirip2 gitu adalah gimana caranya
mengakses suatu data yang krusial untuk dibagi, tapi perlu di-share
penggunaannya. Jadilah harus ada suatu mekanisme pengaksesan data di
server web service yang nantinya akan dikirimkan oleh client dari web
service. Kira-kira gambarannya gini:
Jadi....Kasusnya gini. Ada sebuah server yang memiliki database tentang
harga kurs. Server akan memberikan informasi ini kepada client. Hanya
informasi harga. Server gak melakukan hal lain, selain memberikan data
tersebut. Untuk di-client, berguna menampung harga yang diberikan server
dan melakukan perkalian terhadap input user. Jadi yang dah gw bikin,
interface nya, pas jalan program sebagai berikut:
Jadiiiii... Yang perlu dilakukan pertama kali untuk mengimplementasikan
hal ini, pastinya ngebikin databasenya. Asumsi, gw dah tau wahai reader
semua, gimana cara ngebikin database-nya. Gw pake MySQL bundle-an dari
XAMPP, dan nama database adalah "konversi" dengan 1 tabel (yaitu
"mata_uang"), dengan gambaran data sebagai berikut:
Setelah itu, yang perlu kita lakukan adalah membuat web service di sisi
server web service dengan menggunakan netbean (Gw pake Netbean versi
"6.9.1" dan java versi "1.6.0_26-b03"). Selalu ingat, bahwa web service
gak punya yang namanya interface terhadap end-user. Yang dimiliki oleh
server hanya operasi. Jadi, sekarang kita bikin satu operasi konversi.
Langkah2nya adalah:
Klik File --> New Project. Pilih Categories : "Java Web" dan Project
bagian "Web Application". Tekan Next, terus ganti deh namanya sesuai
keinginan. Kalo gw, hasilnya adalah seperti ini:
Pilih Server, pastikan memilih Server GlassFish 3, dan Java EE
Version-nya adalah Java EE 6 Web. Lalu tekan Finish (gw melewatkan
pemilihan framework, coz gw gak make framework pas bikinnya. Jadi
langkah berikutnya gw abaikan sampe muncul satu project yang dah gw
bikin).
Langkah selanjutnya adalah membuat si web service sehingga memiliki
operasi yang meminta input "mata uang asal" konversi dan "mata uang ke"
konversi (Jadi maxutnya, kalo dari USD --> IDR, USD jadi mata uang
asal, IDR jadi mata uang ke). Caranya adalah, klik kanan di bagian
project yang sudah terbentuk tadi, pilih new, dan pilih "Web Service".
Lalu akan muncul suatu window pop-up untuk menentukan nama kelas dan
lain-lain. Yang perlu dilakukan adalah mengeset namanya. Gw nge-set
dengan hasil seperti ini:
Lalu, pergi ke bagian Desain (tab atas sebelah kiri), tekan bagian add operation dan masukkan parameter sebagai berikut:
Setelah itu tekan OK, dan akan muncul suatu operasi. Operasi dari web
service ini, masih memiliki operasi yang kosong dengan return value
adalah 0. Sekarang, tugas kita adalah membuat method-nya. Method yang
akan kita buat adalah untuk mengambil nilai database. Cara pengambilan
yang gw lakukan agak sedikit ribet bin rumit, coz gw make kelas lain
buat koneksinya, dan enggak nanamin di operasi web service. Jadi,
langkah berikut yang kita lakukan adalah membuat 1 kelas untuk koneksi
yaitu kelas DbManager. Caranya, pilih New--> Java Class -->
Masukkan nama adalah DbManager seperti berikut:
Isi dari kelas ini adalah sebagai berikut:
package konversi;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class DbManager {
/* digunakan untuk menampung koneksi */
private Connection conn = null;
boolean connected = false;
public DbManager(){
}
public void Connect() throws SQLException {
boolean flag = false;
try{
Class.forName("com.mysql.jdbc.Driver");
}catch (Exception e){
e.printStackTrace();
flag=true;
}
if(!flag){
try {
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/konversi","root","");
connected= true;
}catch(SQLException e){
throw new SQLException();
}
}
}
public ResultSet fetchRows(String sql){
ResultSet rs = null;
try{
Statement st = conn.createStatement();
rs = st.executeQuery(sql);
}catch(Exception e){
System.out.println(e.getMessage());
}
return rs;
}
}
Lalu buat lagi sebuah kelas baru, yaitu kelas Uang dengan isi sebagai berikut:
package konversi;
import java.sql.ResultSet;
public class Uang {
private DbManager dbMgr = new DbManager();
private String asal;
private String ke;
private int harga;
public String getAsal() {
return asal;
}
public void setAsal(String asal) {
this.asal = asal;
}
public String getKe() {
return ke;
}
public void setKe(String ke) {
this.ke = ke;
}
public int getHarga() {
return harga;
}
public ResultSet viewMhs(Uang u){
try{
dbMgr.Connect();
}catch(Exception ex){
ex.printStackTrace();
}
String query = "SELECT harga FROM `mata_uang` WHERE `MataUangAsal`='"+u.getAsal()+"' AND `MataUangKonversi`='"+u.getKe()+"'";
ResultSet resultMhs = dbMgr.fetchRows(query);
return resultMhs;
}
}
Dan tugas berikutnya adalah, menambahkan baris program pada operasi web
service untuk memanggil kelas2 yang telah dibuat sebelumnya. Hasil kode
dari kelas operasi yang terbentuk setelah dilakukan penambahan kode
adalah:
package konversi;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
*
* @author Asus
*/
@WebService()
public class KonversiKurs {
/**
* Web service operation
*/
@WebMethod(operationName = "TukarUang")
public int TukarUang(@WebParam(name = "asal")
String asal, @WebParam(name = "ke")
String ke) {
//TODO write your implementation code here:
System.out.println("harga ");
Uang u = new Uang();
u.setAsal(asal);
u.setKe(ke);
ResultSet result = null;
int harga=0;
result = u.viewMhs(u);
try {
while(result.next()){
harga = result.getInt("harga");
}
} catch (SQLException e) {
e.printStackTrace();
}
return harga;
}
}
Kalo ada error, kemungkinan library MySQL JDBC belum terintegrasi dengan
project tadi. Cara menambahkannya adalah dengan melakukan klik kanan
pada project, lalu pilih properties. Di selebah kanan, pilih
"libraries", dan klik "Add Library" lalu pilih MySQL JDBC.
Dan jadilah service-nya. Tinggal lakukan klik kanan di bagian project
web application yang tadi, terus pilih Deploy. Kalo mau tau udah jalan
ati belum service-na tinggal pilih bagian "Web Service" di bagian
Project, terus pilih satu tingkat di atas operasi yang terbentuk, dan
klik kanan, lalu pilih "Test Web Service".
Karena Service dah jadi, Langkah selanjutnya adalah membuat client-nya.
Cara membuat klien adalah, buat sebuah project baru. Pilih Categories
"Java", dan project "Java Application". Setelah terbentuk project baru,
klik kanan di project tersebut, lalu Pilih New--> Web Service Client.
Masukkan referensi web service, sehingga client bisa meng-generate dan
mengenali service dari server dengan memasukkan WSDL dari web service.
WSDL didapat pada saat meng-klik link WSDL yang muncul saat melakukan
"Test Web Service" di langkah sebelumnya. Berikut gambarannya:
Dan terbentuklah suatu folder "Web Service References" di sebelah kanan
Project tadi. Hal berikutnya yang kita lakukan adalah membuat suatu GUI
untuk ditampilkan pada end-ser. Pada Project, pilih New-->JFrame
Form, atur namanya sesuai keinginan. Maka akan terbentuk satu kelas
Jframe. Dan pada bagian desain, desain-lah form tersebut sehingga
berbentuk seperti ini:
Lalu, pada kelas tersebut, di bagian source (Di tab atas ada pilihan
source dan design), tambahkan kode untuk memanggil web service. Caranya,
klik kanan pada source, lalu pilih Insert code. Akan muncul pilihan
untuk memasukkan kode dari web service. Pilih call web service
operation, muncul window pop-out dan pilih operasi tukarUang. Gambar
sebagai berikut:
Akan tergenerate satu method bersifat static dari java. Method bersifat
static ini artinya bisa dipanggil tanpa membentuk objek dari kelas c
method. Jadi tinggal panggil ajah pas menjalankan Event dari Button.
Jadi tugas selanjutnya adalah membuat Event dari Button. Klik kanan pada
Button "Konversi", terus pilih "Event" --> "Action" -->
"ActionPerformed,...........". Setelah itu, akan terganti ke dalam mode
source, dan paste kode berikut pada method yang dijalankan ketika action
button dijalankan:
package konversi;
tring a = asalMataUang.getSelectedItem().toString();
S String b = KeMataUang.getSelectedItem().toString();
int angka_nominal = Integer.parseInt(nominal.getText());
int harga = angka_nominal*tukarUang(a, b);
jTextField2.setText(String.valueOf(harga));
Lihat kan, disana, kita tinggal memanggil method tukarUang(a,b). Untuk
kode diatas, nama variabel dari setiap textfield dan combobox mohon
disesuaikan sendiri. Gw nganggap lo dah ahli banget buat hal ini. Jadi
gak bakal gw bahas lanjut.
1 comment:
konfigurasi alamat server pada aplikasi client itu kan sudah paten,, nah bagaimana caranya agar konfigurasi alamat server ada di luar / disimpan pada sebuah file misalnya..
Post a Comment