Menyuntik EJB ke dalam Perkhidmatan Web JAX-RS
Penerangan Isu:
Dalam percubaan untuk menyuntik EJB Tanpa Kewarganegaraan ke dalam perkhidmatan web JAX-RS menggunakan anotasi, contoh EJB kekal batal dalam kelas perkhidmatan, mengakibatkan NullPointerException semasa digunakan.
Butiran Alam Sekitar:
- Glassfish 3.1
- Netbeans 6.9 RC 2
- Java 6
Pilihan Penyelesaian:
Pilihan 1: Suntikan menggunakan Pembekal Suntikan SPI
- Laksanakan pembekal suntikan tersuai yang melakukan carian dan suntikan EJB.
- Sebagai contoh, dalam Jersi 1.17:
import com.sun.jersey.core.spi.component.ComponentContext;
import ...
public class EJBProvider implements InjectableProvider<EJB, Type> {
// Implementation details...
}
Salin selepas log masuk
Pilihan 2: Tukar Kelas Sumber kepada EJB
- Jadikan kelas sumber JAX-RS sebagai Stateless EJB sendiri, membenarkannya mengurus kebergantungannya sendiri.
Pilihan 3: Leverage CDI
- Gunakan Context and Dependency Injection (CDI) untuk menyuntik EJB ke dalam kelas sumber JAX-RS.
Contoh:
@Path("book")
@RequestScoped
public class BookResource {
@Inject
private BookEJB bookEJB;
// Implementation details...
}
Salin selepas log masuk
Tambahan Sumber:
- [EJB Injection](https://docs.oracle.com/javaee/7/api/javax/ejb/EJB.html)
- [ @EJB Suntikan](https://stackoverflow.com/questions/1130846/ejb-injection)
- [Menggabungkan Perkhidmatan REST dengan EJB 3.1](https://dzone.com/articles/combining-rest-services- with-ejb-31)
- [EJB 3.1 and REST - The Lightweight Hibrid](https://weblogs.java.net/blog/emcfarlane/archive/2009/12/10/ejb-31-and-rest-lightweight-hybrid)
- [Menyuntik EJB daripada balang ke dalam kelas jax-rs dalam a perang](https://stackoverflow.com/questions/6474811/injecting-an-ejb-from-a-jar-into-a-jax-rs-class-in-a-war)
Atas ialah kandungan terperinci Bagaimana untuk Menyuntik EJB Tanpa Kewarganegaraan ke dalam Perkhidmatan Web JAX-RS?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!