RSS

Tag Archives: java

Membuat Web Service (1)

Untuk menunjukkan bahwa web service dapat menjadi media komunikasi antar sistem dan platform, berikut ilustrasinya. Untuk latihan ini, akan ada dua web service yang mengakses tabel yang berbeda. Anggaplah ada dua aplikasi yang terpisah, aplikasi pertama menyediakan data ISBN dari sebuah judul buku. Aplikasi kedua dapat memberikan informasi harga berdasarkan ISBN. Kemudian ada satu aplikasi client, yang bertugas mengconsume dari dua web service tersebut. Dua web service dibuat dengan .Net kemudian aplikasi client dibuat dengan Java.

Langkah pertama adalah membuat file database dengan menggunakan  Microsoft Access, database terdiri atas dua tabel. Table1, berisi Title dan ISBN, isi dengan beberapa data untuk tes web service.

Dan Table2, berisi ISBN dan Price, isi juga dengan beberapa data untuk tes web service

Simpan database pada folder yang dikehendaki, dalam tugas ini file database disimpan pada C:/Documents and Settings/acer/My Document/Visual Studio 2008/Projects/FirstWebService/FirstWebService/buku.accdb

Kemudian langkah selanjutnya adalah membuat web service dengan menggunakan visual studio 2008

Buka Visual Studio, Klik File-New-Project –C#-ASP.NET Web Service Application dan beri nama, untuk webservice pertama diberinama First Web Service

Akan tampil Service1.asmx (viewcode). Kemudian modifikasi project yang kita buat dengan mengedit beberapa bagian

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml.Linq;
using System.Data.OleDb;

tambahkan using system.Data.OleDb untuk koneksi dengan database yang telah kita buat.
Edit juga bagian

public class Service1 : System.Web.Services.WebService
{
[WebMethod]
public string HelloWorld()
{
return “Hello World”;
}
}

Dengan kode program berikut

public class Service1 : System.Web.Services.WebService
{
string koneksi = “Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:/Documents and Settings/acer/My Documents/Visual Studio 2008/Projects/FirstWebService/FirstWebService/Buku.accdb;
[WebMethod]
public string getISBNFromTitle(string Title)
{
OleDbConnection objConn = new OleDbConnection(koneksi);
objConn.Open();
string sql_query = “SELECT Title,ISBN FROM table1 where Title = ‘” + Title + “‘”;
OleDbCommand objCmd = new OleDbCommand(sql_query, objConn);
OleDbDataReader objDataReader = objCmd.ExecuteReader();
string title = “”;
string hasil = “”;
string isbn = “”;
while (objDataReader.Read())
{
isbn += objDataReader[“ISBN”];
title += objDataReader[“Title”];
}
hasil = “Title = “ + title + “, ISBN = “ + isbn;
return hasil;
}
}
}

FirstWebService yang baru saja dibuat akan memanggil dengan menggunakan input Title dan memanggil ISBN dari database buku.table1 sesuai dengan Title yang dimasukkan

Setelah itu kita dapat melakukan tes pada Web Service yang baru saja kita buat dengan menekan CTRL+F5 atau dengan klik kanan pada Service1.asmx yang ada di Solution Explorer dan memilih view in browser, dan hasil yang tampil

Klik getISBNFromTitle maka akan tampil

Tes dengan memasukkan title yang diinginkan, misal ketik Audit dan klik Invoke, maka akan ditampilkan hasil dari database seperti tampilan berikut

Sampai dengan tahap ini Web Service pertama untuk GetISBNFromTitle telah selesai. Selanjutnya buat Web Service kedua untuk GetPriceFromISBN. Langkahnya sama dengan membuat project untuk FirstWebService, beri nama SecondWebService dan modifikasi kode program dengan kode berikut ;

public class Service1 : System.Web.Services.WebService

{

string koneksi = “Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:/Documents and Settings/acer/My Documents/Visual Studio 2008/Projects/FirstWebService/FirstWebService/Buku.accdb”;

[WebMethod]

public string getPriceFromISBN(string ISBN)

{

OleDbConnection objConn = new OleDbConnection(koneksi);

objConn.Open();

string sql_query = “SELECT ISBN,Price FROM table2 where ISBN = ‘” + ISBN + “‘”;

OleDbCommand objCmd = new OleDbCommand(sql_query, objConn);

OleDbDataReader objDataReader = objCmd.ExecuteReader();

string Price = “”;

string hasil = “”;

string isbn = “”;

while (objDataReader.Read())

{

Price += objDataReader[“Price”];

isbn += objDataReader[“ISBN”];

}

hasil = “ISBN = “ + isbn + “, Price = “ +Price;

return hasil;

}

}

}

SecondWebService yang baru saja dibuat akan memanggil dengan menggunakan input ISBN dan memanggil Price dari database buku.table2 sesuai dengan ISBN yang dimasukkan, berikut tampilan jika kita melakukan run dengan ctrl+F5 atau view in browser

Jika getPricefromISBN di klik akan muncul tampilan untuk invoke

Misal isikan 212 untuk ISBN, maka hasil invoke adalah

Kedua WebService yang dibuat diasumsikan akan berjalan dari sisi server, artinya akan ada aplikasi client yang memanggil, bisa berupa desktop, web maupun aplikasi web untuk mobilephone. Kali ini akan dibuat web application client dengan menggunakan Netbeans IDE 6.9.1

Buka program NetBeans IDE 6.9.1 , buat project baru dengan cara klik File-New Project dan pilih  Java Web-Web Aplication

Beri nama, misalnya ClientJava, kemudian klik Next, akan muncul tampilan pilihan server, misal pilih GlassFish Server 3 kemudian klik Finish.

Tambahkan JAX-WS library, dengan add library. Kemudian dari project ClientJava klik kanan, New-Web Service Reference, masukkan alamat WSDL URL dari web service yang telah kita buat, inputkan nama package dan klik finish. Berikut adalah tampilan tambahan web reference

Setelah itu akan ada tambahan folder Web Service Reference, dari web service yang telah dimasukkan, kita dapat memodifikasi index.jsp untuk memanggil web service dari .NET  getISBNFromTitle dan getPriceFromISBN sehingga bagian body dari index.jsp akan menjadi

<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″>
<title>JSP Page</title>
</head>
<body>
<h1>Latihan Web Service!</h1>    <%– start web service invocation –%><hr/>
<%
try {Client2.Service1 service = new Client2.Service1();
Client2.Service1Soap port = service.getService1Soap();
// TODO initialize WS operation arguments here
java.lang.String title = “Audit”;
// TODO process result here
java.lang.String result = port.getISBNFromTitle(title);
out.println(“Result = “+result);
} catch (Exception ex) {
// TODO handle custom exceptions here
}
%>
<%– end web service invocation –%><hr/>
<%– start web service invocation –%><hr/>
<%
try {
client.Service1 service = new client.Service1();
client.Service1Soap port = service.getService1Soap();
// TODO initialize WS operation arguments here
java.lang.String isbn = “212”;
// TODO process result here
java.lang.String result = port.getPriceFromISBN(isbn);
out.println(“Result = “+result);
} catch (Exception ex) {
// TODO handle custom exceptions here
}
%>
<%– end web service invocation –%><hr/>
</body>
</html>

Kita dapat memasukkan kriteria sesuai pencarian yang kita inginkan misal pada contoh adalah dengan Title:Audit. Setelah itu pada client Java klik kanan pilih deploy  dan program akan memproses pemanggilan melalui GlassFish Server 3 , hasilnya dapat dilihat pada tampilan output  akan menjadi

init:
deps-module-jar:
deps-ear-jar:
deps-jar:
wsimport-init:
wsimport-client-Service1:
files are up to date
wsimport-client-Service1_1:
files are up to date
wsimport-client-generate:
library-inclusion-in-archive:
library-inclusion-in-manifest:
compile:
compile-jsps:
Undeploying …
Initializing…
In-place deployment at C:\Documents and Settings\acer\My Documents\NetBeansProjects\ClientJava\build\web
Initializing…
run-deploy:

BUILD SUCCESSFUL (total time: 3 seconds)

Untuk melihat tampilan dari pemanggilan web service dari aplikasi web sederhana yang telah dibuat, ketik http://localhost:8080/ClientJava/ pada jendela browser. Hasil yang diperoleh, adalah sebagai berikut

Nah, Anda sudah berhasil membuat dua web service dan satu aplikasi yang memanggil data dari dua web service tersebut. Rangkaian web service yang dipanggil dengan client ini yang dapat menjadi dasar dari sebuah service oriented architecture. Ok, see you at next posting. ^_^.

 
Leave a comment

Posted by on October 10, 2012 in Uncategorized

 

Tags: , , , ,