# Generelle Frage zu CDI mit JBoss AS 7.1.1 and Jave EE 6



## eagle1985 (15. Nov 2012)

Hallo zusammen,

Ich habe mir eine Combobox-Componente erstellt welche eine Facade zur DB mittels @Inject erhällt.

Mein Problem nun ist, wenn ich die Combobox mittels new Mycombobx erstelle erhalte ich eine NullPointerException da die Facade nicht Injected wird.

Wenn ich nun anstelle des new eine Variable für die Combobx erstelle und diese mittels @Inject erstellen lasse klappt auch die DB-Verbindung in der Combobox-Componente.

Kann es sein, dass man CDI nur innerhalb anderer Klassen verwenden kann welche mittels CDI verwaltet sind?
Oder hat jemand eine Idee wonach ich in Google suche muss? Bis jetzt hat meine Suche nichts ergeben.
Alle Tutorials und Beispiele nutzen nur direkte Injects...

Gruss Eagle


----------



## Sym (15. Nov 2012)

CDI geht nur in CDI. 

Eine CDI wird vom entsprechenden Container verwaltet. Wenn Du ein Objekt mit new initialisierst, bekommt dies der Container nicht mit.

Was spricht denn gegen ein Injecten Deiner Combobox?


----------



## eagle1985 (15. Nov 2012)

Halo Sym,
danke für die Info.

geht merheitlich darum, dass die Injections gleich zu anfgang erledigt werden.
Heisst wenn ich viele Klassen habe werden diese gleich alle am Anfang erzeugt auch wenn ich diese evt. gar nicht benötige.

Wenn ich @Inject auf eine member Variable habe oder es als Consturctor Parameter verwende, wird diese ja beim erstellen einer Klasse erzeugt.
Falls diese Injected-Klasse nun weitere Klassen Injected welche wider Klassen Injecten habe ich ja einen Menge erzeugte Objekte welche evt. nicht gebraucht werden.

Sehe ich das richtig so oder habe ich hier was falsch verstanden?

Geht mir in erster Linie darum, dass ich nicht 100 von Objekte erzeuge welche evt. gar nicht gebraucht werden...

in diesem konkreten Fall, wird die Kombobox nur unter bestimmten umständen angezeigt. Wollte diese nicht erzeugen lassen wenn diese nicht benötigt wird...

Gruss


----------



## FArt (16. Nov 2012)

eagle1985;959443
geht merheitlich darum hat gesagt.:
			
		

> Nein. Es werden immer nur Proxies auf dieses Objekte injiziert. Diese werden in der Regel sehr lazy instanziiert bzw. initialisiert. Wenn möglich, erst bei der ersten Verwendung (abhängig vom verwendeten Kontext).


----------



## eagle1985 (16. Nov 2012)

Danke euch beiden für die Antwort.

Durch die Proxies muss ich mir wegen speicher ja keine gedanken machen


----------

