Rumah > Java > javaTutorial > teks badan

Mengapa Saya Mendapatkan EJB Null Apabila Menyuntikkannya ke dalam Perkhidmatan Web JAX-RS?

Susan Sarandon
Lepaskan: 2024-11-08 00:21:03
asal
655 orang telah melayarinya

Why Do I Get a Null EJB When Injecting It into a JAX-RS Webservice?

Suntikan EJB ke dalam JAX-RS Webservice: Panduan Komprehensif

Dalam bidang pembangunan Java Enterprise Edition (JEE), selalunya perlu menyuntik EJB Tanpa Kewarganegaraan ke dalam perkhidmatan web JAX-RS untuk capaian data yang cekap. Walau bagaimanapun, menghadapi EJB null dan NullPointerException yang digeruni boleh mengecewakan. Artikel ini menyelidiki punca dan menyediakan penyelesaian praktikal untuk menyelesaikan isu ini.

Percubaan awal untuk menyuntik EJB melalui anotasi mungkin tidak selalu berjaya disebabkan oleh batasan platform yang mendasari. Untuk menangani perkara ini, terdapat beberapa pendekatan yang boleh anda ambil:

Pilihan 1: Gunakan SPI Penyedia Suntikan

SPI Penyedia Suntikan menyediakan cangkuk untuk menyesuaikan proses suntikan. Dengan melaksanakan InjectableProvider, anda boleh mengarahkan bekas itu cara menyelesaikan dan menyuntik EJB ke dalam sumber JAX-RS anda. Di bawah ialah contoh untuk pelayan Jersi:

@Provider
public class EJBProvider implements InjectableProvider<EJB, Type> {
    // ... Implementation Details ...
}
Salin selepas log masuk

Pilihan 2: Tingkatkan Sumber Buku kepada EJB

Dengan menjadikan BookResource sebagai EJB sendiri, anda memastikan bekas EJB menguruskan kitaran hayat dan suntikan dalam kelas. Ini menghapuskan keperluan untuk anotasi luaran:

@Stateless
@Path("book")
public class BookResource {
    @EJB
    private BookEJB bookEJB;
    // ...
}
Salin selepas log masuk

Pilihan 3: Manfaatkan Kuasa CDI

CDI (Konteks dan Suntikan Ketergantungan) menawarkan pendekatan yang mudah dan dikonfigurasikan secara deklaratif untuk menyuntik EJB. Dengan menggunakan anotasi @Inject, anda boleh mengakses EJB yang disuntik dengan lancar dalam sumber JAX-RS anda:

@Path("book")
@RequestScoped
public class BookResource {
    @Inject
    private BookEJB bookEJB;
    // ...
}
Salin selepas log masuk

Perlu diambil perhatian bahawa memilih pendekatan yang sesuai bergantung pada keperluan khusus dan pertimbangan reka bentuk aplikasi anda. Pilihan 1 menyediakan kawalan terperinci ke atas proses suntikan, manakala Pilihan 2 dan 3 memudahkannya dengan memanfaatkan mekanisme EJB atau CDI standard.

Atas ialah kandungan terperinci Mengapa Saya Mendapatkan EJB Null Apabila Menyuntikkannya ke dalam Perkhidmatan Web 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan