Pada artikel sebelumnya Create Web Service saya memaparkan bagaimana koneksi komunikasi antara client dengan server melalui web service dapat digunakan untuk mengkoneksikan satu tempat ke tempat lain dan client menggunakan standar XML (eXtensible Markup Language) dalam paparan tersebut ruang lingkup VB .NET sedang kali ini saya akan membahasnya jika lintas bahasa pemrograman, apakah web service tersebut dapat melakukan komunikasi ataukah tidak ? mari sama-sama mencari tahu. yang pertama terima kasih masukan dari teman saya SCS_BISA_CODING untuk membuat review ini.
kali ini akan saya paparkan bahwa lintas platform pun web service tetap akan jalan, misal kita mau invoke web service dari Java ke VB NET
Instalasi Apache Axis
Apache Axis merupakan SOAP Engine dan salah satu toolkit untuk web service java. Di dalam apache axis sudah terdapat library yang digunakan untuk develop java yang akan di akses oleh client. Untuk mendapatkan apache axis bisa download di http://ws.apache.org/axis. Pada saat tulisan ini dibuat penulis menggunakan axis versi terbaru yaitu axis 1.4.
Untuk menjalankan Axis penulis menggunakan Apache Tomcat 1.5 dan untuk instalasinya apache Tomcat ikuti tinggal di ekstrak ke direktori. Jangan lupa untuk mengistal Java SDK untuk frameworknya. Setelah instalasi tomcat selesai maka selanjutnya install Apache Axis,langkahnya sebagai berikut :
1. Ekstrak file axis yang telah di download (pada saat uji coba penulis meletakkan semua hasil instalasi di direktori C:\). Setelah itu akan terbentuk file sebagai berikut :
…\DIRECTORI\axis-1_4
\docs
\lib
\sample
\webapps
\axis
2. Copy semua file library axis yang ada di dalam folder axis-1_4\lib ke dalam library tomcat. Jangan lupa untuk menambahkan file activation.jar, karena apache axis tidak menyertakan file library activation.jar. Untuk mendapatkan file activation.jar bisa cari di internet dengan cara googling dan download file tersebut kemudian letakkan di dalam library tomcat.
3. Copy folder axis di dalam folder webapp\axis ke directory C:\. Sehingga tersusun directory sebagai berikut C:\axis
4. Buat mapping path pada tomcat TOMCAT_HOME\conf\Catalina\localhost\axis.xml dan tulis script di bawah ini :
Buat file java dengan nama Hello.java dan buat scrip di bawah ini kemudian simpan :
public class Hello
{
public String getMsg(String msg)
{
return (“Heloo “ + msg + “Ini Web Service Java”);
}
}
Metode JWS
Pada contoh kali ini penulis menggunakan metode JWS untuk deployment axis karena metode ini merupakan metode deployment yang paling mudah. Dengan menggunakan metode JWS, deployment web service sangat mudah hanya dengan membuat file java biasa dan simpan file tersebut di bawah folder CONTEXT_PATH/axis dan rename akhiran .java dengan .jws. Sebagai contoh file Hello.java menjadi Hello.jws dan untuk mengakses WSDL dari web service dengan url http://localhost:8080/axis/Hello.jws?WSDL. Setelah selesai lakukan uji coba dengan start Apache Tomcat dan panggil seperti contoh URL sebelumnya maka akan muncul tampilan sebagai berikut :
Gambar 1. Tampilan wsdl dari Web Service Java.
Akses Client Web Service dengan .NET
Setelah selesai sukses membuat Java Web Service sekarang kita melakukan invoke data dari client. Pada uji coba ini penulis menggunakan VB.NET untuk melakukan akses data web service. Langkah untuk mamanggil fungsi web service adalah sebagai berikut :
1. Lakukan web reference dengan melakukan discovery pada http://localhost:8080/axis/Hello.jws?wsdl
2. Gunakan script di bawah ini untuk memanggil fungsi web service
Dim ws As New jws1.HelloService
MsgBox(ws.getMsg(TextBox1.Text))
Hasilnya akan tampak pada gambar di bawah ini yang menunjukkan bahwa akses web service java dengan akses client dari VB.NET telah berhasil.
Akses Web Service .NET dengan Java
Untuk mengakses web service .NET dengan Java langkahnya tidak teralu berbeda jauh. Karena semua web service manggunakan metode yang sama untuk distribusi data yaitu XML. Ok nggak usah lama – lama lagi, mari kita mulai untuk mempraktekkan cara invoke web service .NET melalui Java. Berikut code dari .NET Web Service
Imports System.Web
Imports System.Web.Services
Imports System.Web.Services.Protocols
private Message m_strMsg_ = new Message ();
private Envelope m_envelope = new Envelope ();
private DataHandler m_strReturnMsg = null;
private PrintWriter out = null;
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req, resp);
}
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
out = resp.getWriter();
this.m_url = new URL
(“http://localhost:1684/WebSite10/Service.asmx”);
try
{
out.print(GetCustomerData ());
}
catch(Exception e)
{}
}
public synchronized void setWebServiceURL (URL url)
{
this.m_url = url;
}
public synchronized URL getWebServiceURL ()
{
return this.m_url;
}
public synchronized String GetCustomerData () throws SOAPException {
String strReturn = “”;
if (this.m_url == null)
{
throw new SOAPException (Constants.FAULT_CODE_CLIENT,
“URL tidak ditemukan”);
}
this.m_soapUri = “http://ws.pdawir.iseng/getData”;
MsgBody ourBody = new MsgBody ();
this.m_envelope.setBody (ourBody);
m_strMsg_.send (this.getWebServiceURL(),
this.m_soapUri, this.m_envelope);
try
{
this.m_strReturnMsg = this.m_strMsg_.receive();
strReturn=this.m_strReturnMsg.getContent().toString();
}
catch (Exception exception)
{
exception.printStackTrace ();
}
return strReturn;
}
}
Code di atas digunakan untuk melakukan deserialisasi data XML yang dikirimkan oleh .NET Web Service yang hasilnya berupa data dalam bentuk SOAP, seperti tampak pada gambar di bawah ini :
Hasil deserializer data xml .NET menjadi SOAP
Jika proses Deserializer berhasil maka akan tampak seperti pada gambar di atas dan siap untuk dilakukan invoke. Untuk melakukan invoke data web menggunakanan code seperti contoh di bawah ini dan hasilnya akan tampak seperti gambar di bawah
String endPoint = “http://localhost:9080/WSNET/servlet/WebServicesClient.wsnet”;
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(new java.net.URL(endPoint));
call.setOperationName(“getMsg”);
call.addParameter(“op1″, XMLType.XSD_STRING, ParameterMode.IN);
call.setReturnType(XMLType.XSD_STRING);
String msg = (String) call.invoke( new Object[]{“”});
out.println(msg);
Ref :
Nanang Blog
WAL
24 Februari 2010
Invoke Web Service Lintas Platform
Langganan:
Posting Komentar (Atom)
2 komentar:
Setuju banget mas waL,, rekan2 mahasiswa kebanyakan hanya menggunakan WebService untuk satu jenis bahasa pemograman saja,,
Pendapat saya, knpa koq pake WebService..
XML adalah tipe data 'independent' yang bisa diterima oleh hampir semua bahasa pemograman, baik yang memiliki compiler murni atau embed (seperti action script flash, atau VB/Java Script),,
Karena itu mubazir rasanya kLo kita tidak memnfaatkan tekonologi ini untuk mengembangkan aplikasi Lintas bahasa..
Thx kesempatan menuLisnya mas waL..
Assalamualaikum..
mas wal, kemarin c saya mencoba meakai axis2 untuk develop server namun ketika sidang progres diminta ganti dengan Tool dengan teknologi RAD.
sehingga saya menggunakan glassfish dan metro yang telah disediakan netbeans.
yang ingin saya tanyakan. dari tutorial di atas, berarti saya membuat SOAP dan WSDL untuk JAX WS nya secara manual yach? kan tidak ada library yang disediakan seperti punya apache axis. kemudian untuk membaca service yang saya gunakan, pihak client harus membaca XML yang saya kirim seperti contoh di atas??
mohon bantuan. terima kasih ^-^
Posting Komentar