ผู้ให้บริการเป็นวิธีง่ายๆในการขยายและปรับแต่งรันไทม์ JAX-RS คุณสามารถคิดว่ามันเป็นปลั๊กอินที่ (อาจ) เปลี่ยนพฤติกรรมของรันไทม์เพื่อให้บรรลุเป้าหมาย (กำหนดโปรแกรม)
ผู้ให้บริการไม่เหมือนกับคลาสทรัพยากรมีอยู่ในแนวความคิดในระดับระหว่างคลาสทรัพยากรและการใช้งาน JAX-RS หากช่วยได้คุณสามารถนึกถึงสิ่งเหล่านี้ในแง่เดียวกับไดรเวอร์อุปกรณ์ (มีอยู่ระหว่างพื้นที่ผู้ใช้และเคอร์เนล) นี่เป็นลักษณะทั่วไปกว้าง ๆ
มีผู้ให้บริการสามคลาสที่กำหนดโดยข้อกำหนด JAX-RS ปัจจุบัน ความเหมือนกันระหว่างพวกเขาคือผู้ให้บริการทั้งหมดจะต้องระบุโดยคำอธิบายประกอบ @Provider และปฏิบัติตามกฎบางประการสำหรับการประกาศตัวสร้าง นอกจากนั้นผู้ให้บริการประเภทต่างๆอาจมีคำอธิบายประกอบเพิ่มเติมและจะใช้อินเทอร์เฟซที่แตกต่างกัน
ผู้ให้บริการเอนทิตี
ผู้ให้บริการเหล่านี้ควบคุมการแมปการแสดงข้อมูล (เช่น XML, JSON, CSV) กับออบเจ็กต์ Java ที่เทียบเท่า
ผู้ให้บริการบริบท
ผู้ให้บริการเหล่านี้ควบคุมบริบทที่ทรัพยากรสามารถเข้าถึงผ่านคำอธิบายประกอบ @Context
ผู้ให้บริการยกเว้น
ผู้ให้บริการเหล่านี้ควบคุมการแม็ปข้อยกเว้น Java กับอินสแตนซ์การตอบกลับ JAX-RS
รันไทม์ของคุณจะมาพร้อมกับผู้ให้บริการที่กำหนดไว้ล่วงหน้าจำนวนหนึ่งซึ่งจะรับผิดชอบในการใช้ฟังก์ชันระดับพื้นฐาน (เช่นการแมปไปยังและจาก XML การแปลข้อยกเว้นที่พบบ่อยที่สุด ฯลฯ เป็นต้น) คุณยังสามารถสร้างผู้ให้บริการของคุณเองได้ตามต้องการ
ข้อกำหนด JAX-RSคือการอ้างอิงที่ดีสำหรับการอ่านบนประเภทผู้ให้บริการเหล่านี้แตกต่างกันและสิ่งที่พวกเขาทำ (ดูบทที่ 4)