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

eagle1985

Mitglied
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:
Code:
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.
Code:
@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
Code:
@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
 
A

Andgalf

Gast
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.
 
Zuletzt bearbeitet von einem Moderator:
S

Sym

Gast
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

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

Sym

Gast
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.
 
S

Sym

Gast
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

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

Ähnliche Java Themen

Neue Themen


Oben