Layanan web adalah layanan yang menyediakan metode layanan kepada kliennya menggunakan paradigma pemrograman REST atau protokol SOAP untuk komunikasi. Ada beberapa cara untuk mengimplementasikan layanan web. Cara paling sederhana untuk menulis layanan web adalah dengan menulis kelas dan menambahkan anotasi @WebService
dan @WebMethod
anotasi dari javax.jws
, lalu meluncurkannya dari main
-method dengan:
Endpoint.publish("http://localhost:8089/myservice", new MyWebService());
Hasilnya adalah Anda dapat melihat WSDL di URL terdaftar dan jika Anda memiliki SoapUI atau klien SOAP lainnya, Anda juga dapat menguji dan menggunakan layanan web Anda.
Sebuah servlet di sisi lain digunakan untuk transportasi HTTP permintaan dan tanggapan. Ini dapat digunakan untuk menulis aplikasi web dengan JSP dan HTML, atau untuk melayani tanggapan XML dan JSON (seperti dalam layanan RESTful) dan tentu saja juga untuk menerima dan mengembalikan pesan SOAP. Anda dapat menganggapnya sebagai satu lapisan di bawah layanan web . Servlet memiliki standarnya sendiri yang saat ini merupakan Spesifikasi Servlet Java Versi 4.0
Pendekatan yang lebih komprehensif dan praktis adalah menulis layanan web dengan kerangka kerja dan mempublikasikannya di server aplikasi atau wadah servlet seperti Tomcat atau JBoss. Dalam hal ini Anda akan menggunakan Servlet untuk menangani pengangkutan permintaan HTTP yang mengirimkan pesan SOAP atau REST Anda.
Untuk menulis layanan web dengan teknologi servlet misalnya, Anda dapat menggunakan JAX-WS (misalnya untuk SOAP). Untuk menulis layanan RESTful, Anda dapat menggunakan JAX-RS (dengan implementasi referensi menjadi Jersey ), atau sebagai alternatif Anda dapat menggunakan Spring WebMVC , tetapi sejauh yang saya tahu itu bukan tujuan utama dari kerangka kerja ini dan Jersey sangat banyak. lebih mudah digunakan.
Mengenai pertanyaan kedua: @Controller
Anotasi adalah anotasi stereotip khusus Spring yang memberi tahu Spring tentang apa yang seharusnya dilakukan bean Anda. Apa sebenarnya metode yang akan dikembalikan oleh pengontrol bergantung pada implementasi aktual metode Anda, Anda dapat mengonfigurasi Spring untuk menampilkan teks biasa, HTML, JSON, XML, data biner, atau apa pun yang Anda inginkan.
Catatan di samping, kelas yang diberi anotasi @Controller
belum menjadi servlet, itu hanyalah kacang. Bagaimana Anda menggunakan servlet tergantung pada Framework yang Anda gunakan. Misalnya, saat Anda menggunakan Spring, tugas servlet dilakukan oleh Springs DispatcherServlet
yang meneruskan permintaan ke biji yang benar. Jika Anda menggunakan Tomcat, maka Anda dapat langsung menulis servlet Anda sendiri hanya dengan mensubkelas javax.servlet.http.HttpServlet
kelas dan menimpa metode yang diperlukan seperti doGet
yang menanggapi permintaan HTTP GET dari browser Anda.