Heim  >  Artikel  >  Java  >  Wie fügt man zustandslose EJBs in JAX-RS-Webdienste ein?

Wie fügt man zustandslose EJBs in JAX-RS-Webdienste ein?

Susan Sarandon
Susan SarandonOriginal
2024-11-07 11:48:03433Durchsuche

How to Inject Stateless EJBs into JAX-RS Web Services?

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...
}

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...
}

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn