Rumah > Java > javaTutorial > teks badan

Bagaimana untuk Menyuntik EJB ke dalam Perkhidmatan JAX-RS?

DDD
Lepaskan: 2024-11-07 07:20:02
asal
315 orang telah melayarinya

How to Inject EJBs into JAX-RS Services?

Menyuntik EJB ke dalam Perkhidmatan JAX-RS

Penerangan Masalah

Percubaan untuk menyuntik EJB Tanpa Kewarganegaraan ke dalam perkhidmatan web JAX-RS melalui anotasi menghasilkan rujukan EJB null, yang membawa kepada NullPointerException apabila digunakan.

Penyelesaian

Semasa menganotasi perkhidmatan web JAX-RS sebagai @Stateless mungkin kelihatan seperti penyelesaian langsung, ia tidak boleh dilaksanakan dengan JAX-RS bersendirian. Pertimbangkan pendekatan alternatif berikut:

Pilihan 1: SPI Pembekal Suntikan

Laksanakan penyedia suntikan yang melakukan carian dan suntikan EJB. Daftar penyedia sewajarnya.

Pilihan 2: Benamkan Sumber Buku sebagai EJB

Anotasi kelas BookResource sebagai @Stateless dan uruskan kitaran hayatnya dalam EJB. Walau bagaimanapun, pendekatan ini menjadikan ujian unit lebih mencabar.

Pilihan 3: Gunakan CDI

Gunakan CDI untuk suntikan pergantungan, seperti yang ditunjukkan dalam contoh yang disediakan. Pendekatan ini menawarkan kesederhanaan dan fleksibiliti, terutamanya dalam persekitaran ujian.

Contoh Kerja (Pilihan 1)

@Path("book")
public class BookResource {

    @Inject
    private BookEJB bookEJB;

    //...
}
Salin selepas log masuk
// EJBProvider.java

@Provider
public class EJBProvider implements InjectableProvider<EJB, Type> {
    // ... (Implementation as provided in the answer)
}
Salin selepas log masuk

Kesimpulan

Dengan melaksanakan pembekal suntikan atau menerima pakai CDI, adalah mungkin untuk menyuntik EJB ke dalam perkhidmatan JAX-RS, mengembangkan pilihan penyepaduan antara kedua-dua rangka kerja.

Atas ialah kandungan terperinci Bagaimana untuk Menyuntik EJB ke dalam Perkhidmatan JAX-RS?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!