Injizieren von EJBs in JAX-RS-Webdienste
Problembeschreibung:
Bei einem Versuch, ein zustandsloses EJB in zu injizieren Bei einem JAX-RS-Webdienst, der Anmerkungen verwendet, bleibt die EJB-Instanz in der Dienstklasse null, was bei Verwendung zu einer NullPointerException führt.
Umgebungsdetails:
- Glassfish 3.1
- Netbeans 6.9 RC 2
- Java EE 6
Lösungsoptionen:
Option 1 : Injizieren Sie mithilfe der SPI des Injektionsanbieters
- Implementieren Sie einen benutzerdefinierten Injektionsanbieter, der die EJB-Suche und -Injektion durchführt.
- Zum Beispiel in Jersey 1.17:
import com.sun.jersey.core.spi.component.ComponentContext;
import ...
public class EJBProvider implements InjectableProvider<EJB, Type> {
// Implementation details...
}
Nach dem Login kopieren
Option 2: Konvertieren Sie die Ressourcenklasse in ein EJB
- Machen Sie die JAX-RS-Ressourcenklasse selbst zu einem zustandslosen EJB, damit sie ihr eigenes EJB verwalten kann Abhängigkeiten.
Option 3: CDI nutzen
- Verwenden Sie Context and Dependency Injection (CDI), um das EJB in die JAX-RS-Ressourcenklasse zu injizieren .
Beispiel:
@Path("book")
@RequestScoped
public class BookResource {
@Inject
private BookEJB bookEJB;
// Implementation details...
}
Nach dem Login kopieren
Zusätzliche Ressourcen:
- [EJB-Injektion]( https://docs.oracle.com/javaee/7/api/javax/ejb/EJB.html)
- [@EJB-Injection](https://stackoverflow.com/questions/1130846/ejb- Injektion)
- [Kombination von REST Services mit EJB 3.1](https://dzone.com/articles/combining-rest-services-with-ejb-31)
- [EJB 3.1 und REST - Der Lightweight-Hybrid](https://weblogs.java.net/blog/emcfarlane/archive/2009/12/10/ejb-31-and-rest-lightweight-hybrid)
- [Injizieren eines EJB von einem Glas in eine Jax-RS-Klasse in einem Krieg](https://stackoverflow.com/questions/6474811/injecting-an-ejb-from-a-jar-into-a-jax-rs-class-in- a-war)
Das obige ist der detaillierte Inhalt vonWie fügt man zustandslose EJBs in JAX-RS-Webdienste ein?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!