# CDI mit verschiedenen Jars in EAR klappt auf Jboss AS 7.1.1.Final nicht



## eagle1985 (23. Okt 2012)

Hallo zusammen,

habe ein Problem mit CDI. Wenn ich eine @Named Klasse mittels CDI aufrufen möchte di ein einem anderen Jar liegt, erhalte ich immer eine NullPointerException da die Variable Null ist.
CDI aufrufe im selben Jar klappen problemlos. hat jemand eine Idee was ich da machen muss?

Mein EAR welches ich auf JBOSS deploye hat folgende Struktur:

```
MyApp.ear
  +MyApp-Core.jar
     + META-INF
        - beans.xml
        - persistence.xml
     + src
          - ...MyService
  +MyApp-UI1.war
     + META-INF
         - beans.xml
     + WEB-INF
        - beans.xml
        - web.xml
        - faces-config.xml
        + lib
            - MyUI1-Lib-only.jar
        + classes
            - ...
  +MyApp-UI2.war
     + META-INF
         - beans.xml
     + WEB-INF
        - beans.xml
        - web.xml
        - faces-config.xml
        + lib
            - MyUI2-Lib-only.jar
        + classes
            - ...
```
nun kann ich aus UI1 MyService aus dem MyApp-Core nicht aufrufen.

```
@Inject
private MyService service;
```
klappt nicht. sobald ich irgend eine Methode auf service aufrufe erhalte ich den NullPointer.

Die CDI calls inerhalb UI1 funktionieren tadellos

Hier noch MyService

```
@Named
@SessionScoped
public class ProductServices implements Serializable {

	private static final long serialVersionUID = 1L;
	private List<Aircraft> aircrafts;
	@Inject
	private TblAcFacade acFacade;
	
	@Inject
	private Logger log;

	@Produces
	@Named
	public List<Aircraft> getAircrafts() {
		return aircrafts;
	}
       
       ...
}
```

jemand eine Idee was ich vergessen habe oder wie so es nicht funktioniert?

gruss eagle


----------



## Andgalf (23. Okt 2012)

Ich denke du musst EJB's verwenden, wenn du Jar-Übergreifend arbeiten willst ... mit CDI wirst du da nix.

Du musst also anstatt @Named .... @Stateless bzw. @Statefull verwenden und anstatt @Inject ... @EJB

Allerdings solltest Du dich dann auch in das Thema EJB's einlesen, falls nicht schon getan.


----------



## Sym (23. Okt 2012)

Eigentlich funktionieren CDIs auch Jar-übergreifend. Ich weiß allerdings nicht, ob das in einem EAR klappt, kenne aber keinen Grund, warum dies nicht funktionieren sollte. Wie sieht denn der Inhalt Deiner beans.xml aus?


----------



## FArt (25. Okt 2012)

JBoss 7 arbeitet sehr modular. Du musst noch Abhängigkeiten zwischen den Modulen (Artefakten, ...) definieren. 
EJBs nur dort verwenden, wo es sinnvoll ist.


----------



## Sym (25. Okt 2012)

Du meinst über die application.xml?

Stimmt, ich könnte mir vorstellen, dass den CDIs aufgrund der unterschiedlichen Classloader nicht in den WARs befunden werden.

Allerdings gibt es auch einem CDI Scanner, den könnte man sicherlich auch nutzen. Aber FArts Weg klingt vernünftig.


----------



## FArt (25. Okt 2012)

Sym hat gesagt.:


> Du meinst über die application.xml?


Nein. Verschiedene Lösungsansätze für verschiedene Belange. Am besten mit Google suchen: JBoss 7 dependencies... mit dem Wissen kommt man schon sehr weit...


----------



## Sym (25. Okt 2012)

Ah alles klar. Ich arbeite nur mit WARs, seit ich CDI einsetze. Aber der TO hat sich länger nicht mehr gemeldet. Vielleicht hat er es alleine hinbekommen oder es ist nicht mehr interessant.


----------



## eagle1985 (15. Nov 2012)

Hallo zusammen

danke an alle für die Hilfe.
War leider lengers nicht mehr im Forum online, deshalb habe ich eure Antworten erst heute gelseen...

Habs irgendwann selber hingekriegt, war ein Problem mit den Dependencies...


----------



## FArt (15. Nov 2012)

eagle1985 hat gesagt.:


> Habs irgendwann selber hingekriegt, war ein Problem mit den Dependencies...



Beschreibe doch noch kurz deine Lösung bzw. verlinke den Teil auf die Doku, damit auch jemand was davon hat, der diesen Thread über die Suche findet, weil er auch so ein Problem hat.


----------

