Context and Dependency Injection (CDI) ohne Server

pl4gu33

Top Contributor
Hey,...

ich hab folgendes Problem, ich habe eine Persistenzschicht und Services....nun möchte ich dort per CDI auf die APIs der Persistenzschicht von den Services aus zugreifen,... da ich bisher CDI nur mit einem Tomcat Server und JSF gemacht hab, hab ich erst nach einer Lösung gesucht, wie ich das nun ohne einen Tomcat Server regeln kann, da die Projekte keine "Dynamic Web" Projekte sind ... nun bin ich auf "Bootstrap – CDI" gestoßen.... das wäre ja theoretisch genau das Richtige für mich oder würdet ihr mir eine andere Lösung empfehlen, wie ich CDI zwischen Persistenz/Anwendung realisieren kann ?

CDI geht fremd! Dependency Injection für JavaSE

später soll dann zwar noch ein Server dazu kommen und eine JSF Oberfläche eingebaut werden, aber ich möchte halt schon vorher das Zusammenspiel zwischen Persistenz und Anwendung testen .... vll. habt ihr auch einen ganz anderen Tipp :D bin für jede Hilfe dankbar ... aber CDI sollte auf jeden Fall enthalten sein, weil sonst kann ichs ja auch per "new" :D
 
Zuletzt bearbeitet:
N

nillehammer

Gast
Das Grundproblem ist wahrscheinlich, dass Du direkt Field-Injection machst. Versuche, deine Service-Klassen so umzuschreiben, dass Du die Dependencies entweder über Konstruktorparameter oder über Methodenparameter (bei Services wohl eher die Ausnahme) injizierst. Das hat folgende Vorteile:
- Anhand der Parameterliste ist direkt erkennbar, worauf Dein Service eine Dependency hat.
- Du kannst bei Fehlen eines DI-Containers (z.B. in Tests) die Dependencies notfalls durch entsprechenden Aufruf des Konstruktors/der Methode selbst injecten.
 
S

Sym

Gast
Kannst Du andere CDI-Beans injecten? Nutzt Du Weld? Hast Du org.jboss.weld.environment.servlet.Listener in Deiner web.xml hinzugefügt? Welche Tomcat-Version nutzt Du?

Sonst probiere es mit einem EE-Server.
 

Noctarius

Top Contributor
Außerhalb von JEE Servern würde ich andere DI Systeme nutzen: SpringDI oder Guice bei Webapps, Guice bei normalen Apps und Blueprint bei OSGi :D
 

pl4gu33

Top Contributor
also wie gesagt, es ging mir darum, meine Services zu testen ohne einen "Server" laufen zu haben.... ich habe nun nochmal ein wenig rumprobiert und habe es geschafft mittels MAVEN + WELD von JBoss CDI ohne Server zu realisieren :)

Ich habs auch mit "Apache DeltaSpike" versucht aber damit kam ich gar nicht klar, auch wegen Informationsmangel,... mit WELD läuft alles, wie ich es will und ich hab jeweils Einstiegspunkte für meine Services :)

Bootstrapping CDI in several environments Antonio's Blog

hier ein gutes Tutorial dafür,.... so kann ich, wenn ich dann später auf nen Server umstelle, auch alle CDI Annotations drin lassen und muss nicht alles umschreiben :) :)
 
Zuletzt bearbeitet:

Ähnliche Java Themen

Neue Themen


Oben