Jeni web programming-bab 1-pengenalan pemrograman web
Modul 12rev1
1. Modul 12
Model Web Services
Setelah menyelesaikan modul ini, anda dapat:
Menjelaskan peran web services
Mengetahi daftar spesifikasi yang digunakan untuk membuat web service
platform independen
Menjelaskan API Java yang digunakan untuk pengolahan XML dan web services
2. Modul 12 Model Web Service Page 2 of 11
Peran Web Services
World Wide Web Consortium (W3C) mendefinisikan web service sebagai " sistem
perangkat lunak yang dirancang untuk mendukung interoperabiliti interaksi mesin
yang satu dengan mesin yang lain melalui jaringan." Sebuah web service
mengekspose service remote atau prosedur yang dapat dieksekusi ke klien aplikasi.
Web service dirancang untuk platform independen, namun independensi platform
ini tidak tanpa kekurangan. Kekurangan untuk independensi dari platform web
service adalah ada pengeluaran tambahan, baik pemakaian jaringan ataupun
penggunaan CPU.
Beberapa fitur utama web service adalah:
Platform Independen – Web Service tidak bergantung pada CPU, sistem operasi,
atau bahasa pemrograman.
Dirancang untuk memanfaatkan teknologi yang telah ada - Web service
menggunakan secara ekstensif teknologi XML dan HTTP.
Interoperabel dengan bahasa pemrograman yang berlainan – Web service
menggunakan model klien-server. Adalah memungkinkan untuk memiliki sebuah
klien yang ditulis dalam satu bahasa pemrograman untuk berkomunikasi dengan
server yang ditulis dalam bahasa pemrograman yang berbeda.
Aplikasi klien-server dengan klien dan server yang keduanya dibuat dengan
menggunakan bahasa pemrograman Java yang tidak dapat digunakan untuk klien
atau server yang ditulis dalam bahasa pemrograman lain, memerlukan sedikit usaha
tambahan agar menjadi web service. Web service telah didukung oleh platform Java
enterprise sejak J2EE 1.4. Meskipun web service bukan lagi sebuah teknologi baru,
sejumlah industri memberikan gairah untuk terus mengembangkannya. Anda
mungkin diminta untuk membuat fungsi aplikasi yang sudah anda buat untuk diubah
menjadi web service tanpa banyak menimbulkan masalah teknis. Beruntung
platform Java EE 5 memungkinkan penciptaan atau penambahan web service dengan
cara yang mudah untuk aplikasi anda.
Web Service Sebagai Komponen Remote
Web service menyediakan sebuah mekanisme untuk menjalankan operasi bisnis
mirip dengan session EJB remote. Web service menyediakan eksekusi sebuah
pekerjaan secara remote yang mirip dengan:
Common Object Request Broker Architecture (CORBA) – Spesifikasinya dikelola
oleh Object Management Group (OMG). Menyediakan binding untuk bahasa
pemrograman C dan C + +, kemudian diikuti Jawa. Dilihat oleh banyak orang
sebagai arsitektur yang kompleks. Digunakan terutama pada tahun 1990-an.
Mulai tahun 2000, web service mulai menggantikan CORBA untuk beberapa
aplikasi.
3. Membangun Aplikasi dengan Platform Java EE Page 3 of 11
Remote Method Invocation (RMI) – Sebuah teknologi Java untuk pemanggilan
method dari remote klien. Teknologi ini digunakan sebagai fondasi bagi
komponen distributed di Java, misalnya EJB. Dimasukkan sebagai bagian dari
platform Java SE.
Remote Procedure Call (RPC) – Mengeksekusi prosedur secara remote
menggunakan satu protokol tertentu dipopulerkan oleh Sun Microsystems.
Biasanya tidak digunakan dalam perangkat lunak berorientasi objek. Network File
System (NFS) adalah contoh dari program RPC.
Distributed Component Object Model (DCOM) – Teknologi yang dibuat oleh
Microsoft yang posisinya setara dengan RMI, yang hanya bekerja pada platform
Microsoft. DCOM saat ini diganti dengan. Net Remoting dan web service.
Web service berbeda dengan teknologi-teknilogi di atas, dengan menggunakan
teknologi Hyper Teks Transfer Protocol (HTTP) dan XML (Extensible Markup
Language), keduanya juga didukung oleh librari yang ada di hampir semua bahasa
pemrograman, seperti standar transport dan payload. Librari Java yang mendukung
web service yang saat ini disertakan dalam versi platform Java enterprise dan jika
anda menggunakan platform Java SE versi 1.6 librari web service sudah dimasukkan
ke dalamnya.
Web Service Dibandingkan Dengan Remote EJB
Arsitektur EJB secara keseluruhan tidak jauh berbeda dari yang web service, dengan
pengecualian teknologi spesifik yang digunakan untuk membuat web service
platform independen:
Sebuah registry untuk mengumumkan dan mencari web service yang dikenal
sebagai Universal Description, Discovery and Integration (UDDI). Jika klien sudah
mengetahui lokasi yang diinginkan, anda dapat membypass registry.
Sebuah protokol yang digunakan sebagai jalur transportasi untuk memanggil
service, mengirimkan parameter, dan menerima nilai balikan. Dalam remote EJB,
protocol ini adalah Internet Inter-Orb Protocol (IIOP). Di web service yang
digunakan adalah HTTP.
Sebuah urutan data yang ditransfer antara klien dan server. Session Bean remote
menggunakan object yang serialized sedangkan web service menggunakan XML.
4. Modul 12 Model Web Service Page 4 of 11
Spesifikasi Web Service
Pada bagian ini akan dijelaskan spesifikasi web service.
Persyaratan Interoperabilitas
Web service dirancang untuk platform dan bahasa yang netral. Untuk membuat web
service secara efektif, yang harus diperhatikan adalah:
Dukungan klien tanpa memandang platform atau bahasa yang digunakan –
Sebuah web service tidak tergantung pada bahasa pemrograman tertentu atau
dijalankan pada sistem operasi tertentu.
Dapat dilaksanakan dalam bahasa apapun tanpa memperhatikan platform yang
digunakan – Sebuah API web service meekspose semua informasi dalam bentuk
file teks yang dikenal sebagai file Web Service Description Language (WSDL).
Dengan file WSDL, anda dapat mengembangkan klien baru dalam bahasa
pemrograman apapun tanpa mengakses informasi lainnya ke server. Sebagian
besar tool di Java juga mendukung pembuatan web service yang kompatibel
cukup dengan menggunakan informasi dari file WSDL.
Dua dari beberapa spesifikasi yang digunakan untuk membuat web service
interoperable adalah HTTP dan XML. HTTP adalah protokol transportasi, biasanya
digunakan di atas Transmission Control Protocol/Internet Protocol (TCP/IP), yang
dapat digunakan untuk mentransfer informasi di dalam arsitektur berorientasi
permintaan-respon. XML adalah suatu spesifikasi yang digunakan untuk mengatur
data dalam sebuah file teks yang bisa di parsing oleh mesin. Web service
menggunakan HTTP untuk mengirim data dalam format XML untuk permintaan dan
respon. Namun, dengan menggunakan HTTP sebagai protokol transport dan XML
sebagai format data yang tidak menyediakan interoperabilitas tingkat tinggi. Agar
interoperable:
Method dan header yang digunakan dalam transport protokol HTTP harus
standar.
Format pesan XML harus diketahui. XML tidak hanya memerlukan dokumen yang
‘well-formed’ tetapi juga memerlukan struktur atau formatnya. Simple Object
Access Protocol (SOAP) adalah spesifikasi yang mengatur standar struktur pesan
XML untuk digunakan dalam web service.
Catatan - The World Wide Web Consortium (W3C) yang menerbitkan HTTP,
XML dan SOAP spesifikasi di http://www.w3c.org
5. Membangun Aplikasi dengan Platform Java EE Page 5 of 11
Standar Interoperabilitas
Bukan hanya spesifikasi XML, HTTP, dan SOAP yang digunakan untuk mencapai
interoperabilitas antara web servis dan kliennya. Karena banyak spesifikasi yang
digunakan dalam web service, spesifikasi telah dibuat untuk mandat spesifikasi dan
versi yang akan digunakan. Ini serupa dengan Java EE 5 mandat penggunaan
spesifikasi, seperti EJB 3 dan Servlet 2.5.
XML – Standar W3C yang dirancang untuk menyimpan data dalam format yang
baik untuk dibaca manusia dan mudah diparsing oleh mesin.
HTTP – Standar W3C untuk komunikasi data.
UDDI – Standar untuk publikasi dan pencarian service, disponsori oleh OASIS.
SOAP – Standar W3C yang memaksa format pesan XML lebih didefinisikan pada
struktur untuk digunakan dalam web service.
Kode 12-1 Contoh Permintaan SOAP
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:ns1="http://sample/">
<soapenv:Body>
<ns1:getGreeting>
<arg0>Duke</arg0>
</ns1:getGreeting>
</soapenv:Body>
</soapenv:Envelope>
Kode 12-2 Contoh Respon SOAP
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:ns1="http://sample/">
<soapenv:Body>
<ns1:getGreetingResponse>
<return>Hello Duke</return>
</ns1:getGreetingResponse>
</soapenv:Body>
</soapenv:Envelope>
6. Modul 12 Model Web Service Page 6 of 11
WSDL – Diusulkan oleh W3C untuk menjadi standar yang mendefinisikan fungsi
web service. Serupa fungsinya dengan interface bisnis dari komponen Session
EJB, namun dalam format XML.
Kode 12-3 Contoh File WSDL
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:tns="http://sample/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
targetNamespace="http://sample/" name="SayHelloService">
<types>
<xsd:schema>
<xsd:import namespace="http://sample/"
schemaLocation="http://10.1.1.1:8080/WebService/SayHelloService/__contain
er$publishing$subctx/WEB-INF/wsdl/SayHelloService_schema1.xsd"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"/>
</xsd:schema>
</types>
<message name="getGreeting">
<part name="parameters" element="tns:getGreeting"/>
</message>
<message name="getGreetingResponse">
<part name="parameters" element="tns:getGreetingResponse"/>
</message>
<portType name="SayHello">
<operation name="getGreeting">
<input message="tns:getGreeting"/>
<output message="tns:getGreetingResponse"/>
</operation>
</portType>
<binding name="SayHelloPortBinding" type="tns:SayHello">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
<operation name="getGreeting">
<soap:operation soapAction=""/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
<service name="SayHelloService">
<port name="SayHelloPort" binding="tns:SayHelloPortBinding">
7. Membangun Aplikasi dengan Platform Java EE Page 7 of 11
<soap:address location="http://10.1.1.1:8080/WebService/SayHelloService"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"/>
</port>
</service>
</definitions>
Web Service Interoperability – Organzation (WS-I Organization) – WS-I
Organization adalah organisasi yang mengeluarkan mandat berupa profil yang
berisi penggunaan spesifikasi tertentu, seperti SOAP dan WSDL, dan
menempatkan mereka pada tambahan batasan yang diperlukan, untuk
menyediakan web service interoperable. Profil ini dikenal dengan istilah Basic
Profil.
8. Modul 12 Model Web Service Page 8 of 11
API Java Terkait Dengan XML dan Web Services
Sebagian besar dari spesifikasi dalam daftar berikut ini digunakan ketika membuat
atau menggunakan web service dalam bahasa pemrograman Java. Namun, Anda
tidak perlu menggunakan atau bahkan mengetahui rincian spesifikasi ini untuk
menggunakan web service dengan teknologi Java.
Java Document Object Model (JDOM atau Java DOM) menyediakan model Java
berorientasi objek dari XML dokumen.
Java API untuk XML Processing (JAXP) adalah teknologi Java yang merupakan
abstraksi dari pemrosesan XML.
Java Architecture untuk XML Binding (JAXB) mengatur bagaimana mengkonversi
objek Java ke skema XML.
Java API for XML-based Remote Process Communications (JAX-RPC) adalah
spesifikasi untuk membangun web service dengan teknologi Java. Di spesifikasi
Java EE 5, peran JAX-RPC digantikan oleh Java API for XML Web Services (JAX-
WS).
Java API for XML Registries (JAXR) adalah spesifikasi standar Java untuk
menggunakan UDDI registries.
SOAP With Attachment API for Java (SAAJ) adalah spesifikasi standar Java untuk
membuat, mengirim, menerima, dan memparsing pesan SOAP. Digunakan oleh
JAX-WS.
Java API for XML Web Service (JAX-WS) adalah spesifikasi Java untuk web service.
Implementasi JAX-WS menggunakan implementasi dari SAAJ, yang pada
gilirannya menggunakan JAXP dan spesifikasi Java untuk XML yang lainnya.
API SAAJ
API SAAJ memungkinkan klien untuk menggunakan web service tanpa harus
mempedulikan parser XML atau protokol transport yang digunakan. API-nya
dianggap lebih tinggi dari JAXP, untuk menggunakan API SAAJ masih memerlukan
pengetahuan XML dan WSDL.
Kode 12-4 Contoh Pemakaian API SAAJ
MessageFactory msgFactory = MessageFactory.newInstance();
SOAPMessage message = msgFactory.createMessage();
SOAPHeader header = message.getSOAPHeader();
header.detachNode();
9. Membangun Aplikasi dengan Platform Java EE Page 9 of 11
SOAPBody body = message.getSOAPBody();
javax.xml.namespace.QName bodyName = new QName("http://sample/","getGreeting", "ns1");
SOAPBodyElement requestBodyElement = body.addBodyElement(bodyName);
QName name = new QName("arg0");
SOAPElement symbol = requestBodyElement.addChildElement(name);
symbol.addTextNode("Duke");
SOAPConnectionFactory connFactory = SOAPConnectionFactory.newInstance();
SOAPConnection connection = connFactory.createConnection();
String endpoint = "http://localhost:8080/WebService/SayHelloService";
SOAPMessage response = connection.call(message, endpoint);
connection.close();
SOAPBody soapBody = response.getSOAPBody();
SOAPBodyElement getGreetingResponseElement =
(SOAPBodyElement)soapBody.getChildElements().next();
SOAPBodyElement returnElement =
(SOAPBodyElement)getGreetingResponseElement.getChildElements().next();
System.out.print("The response was: " + returnElement.getValue());
API JAX-WS
API JAX-WS adalah Java API level tertinggi (saat ini) untuk web service. API JAX-WS:
Menggantikan JAX-RPC
Memerlukan sedikit pengetahuan XML atau WSDL tingkat dasar untuk web
service yang sederhana
Menggunakan JAXB untuk menentukan bagaimana melakukan pemetaan tipe
data antara teknologi Java dan XML
Menggunakan SAAJ untuk mengirim, menerima, dan mem-parsing pesan SOAP
Menggunakan JAX-WS pada sisi klien atau server tidak memerlukan penggunaannya
pada sisi lainnya. Jika anda sedang mengembangkan web service klien dan server
dengan menggunakan teknologi Java, maka anda harus menggunakan API JAX-WS.
Walaupun ada sedikit yang menggunakan untuk membuat web service yang memiliki
baik pada sisi klien dan service yang menggunakan platform Java, masih ada
beberapa alasan untuk mempertimbangkan menggunakan web service:
Mendukung fleksibilitas platform klien tidak dikenal di masa mendatang
10. Modul 12 Model Web Service Page 10 of 11
Tidak terikat pada platform server tertentu. Misalnya, jika server platform tidak
memiliki skalabilitas yang baik, maka dapat diganti tanpa mempengaruhi aplikasi
client
Penggunaan HTTP sebagai teknologi untuk berkomunikasi, dalam banyak kasus,
memungkinkan penggunaan aturan-aturan firewall yang sudah ada.
Gambar 12-1 menggambarkan bagaimana teknologi JAX-WS mengelola komunikasi
antara web service dan klien.
Gambar 12-1 Komunikasi antara yang JAX-WS Web Service dan Klien
11. Membangun Aplikasi dengan Platform Java EE Page 11 of 11
Rangkuman
Peran web service di aplikasi enterprise adalah menyediakan metode yang tidak
bergantung pada platform untuk pemanggilan method secara remote. Supaya
platform-netral, beberapa spesifikasi digunakan, seperti SOAP dan HTTP. Teknologi
Java menyediakan API untuk pengolahan XML dan web service . Dasar API, seperti
JAXP merupakan bagian dari platform Java SE, sedangkan API tingkat tinggi, seperti
JAX-WS merupakan bagian dari platform Java EE.