Penyedia adalah cara sederhana untuk memperluas dan menyesuaikan runtime JAX-RS. Anda dapat menganggapnya sebagai plugin yang (berpotensi) mengubah perilaku runtime, untuk mencapai serangkaian tujuan (ditentukan program).
Penyedia tidak sama dengan kelas sumber daya, mereka ada, secara konseptual, pada tingkat di antara kelas sumber daya dan implementasi JAX-RS. Jika membantu, Anda dapat menganggapnya sama seperti driver perangkat (ada di antara ruang pengguna dan kernel). Ini adalah generalisasi yang luas.
Ada tiga kelas penyedia yang ditentukan oleh spesifikasi JAX-RS saat ini. Kesamaan di antara keduanya adalah bahwa semua penyedia harus diidentifikasi dengan anotasi @Provider dan mengikuti aturan tertentu untuk deklarasi konstruktor. Selain itu, jenis penyedia yang berbeda mungkin memiliki anotasi tambahan, dan akan mengimplementasikan antarmuka yang berbeda.
Penyedia Entitas
Penyedia ini mengontrol pemetaan representasi data (seperti XML, JSON, CSV) ke objek Java mereka yang setara.
Penyedia Konteks
Penyedia ini mengontrol konteks yang dapat diakses resource melalui anotasi @Context.
Penyedia Pengecualian
Penyedia ini mengontrol pemetaan pengecualian Java ke instance Respons JAX-RS.
Runtime Anda akan datang dengan sejumlah penyedia yang telah ditentukan yang akan bertanggung jawab untuk menerapkan fungsionalitas tingkat dasar (misalnya untuk pemetaan ke dan dari XML, menerjemahkan pengecualian paling umum, dll). Anda juga dapat membuat penyedia Anda sendiri sesuai kebutuhan.
Spesifikasi JAX-RS adalah referensi yang baik untuk membaca tentang jenis penyedia yang berbeda ini dan apa yang dilakukannya (lihat Bab 4).