Anhand des JavaEE7-Buches von Dirk Weiler versuche ich mich in CDI einzuarbeiten. Ich scheitere aber schon am ersten Beipspiel.
Ich habe diese beiden Programme:
und
Unter "WEB-INF" habe ich eine "fast" leere beans.xml (Ich habe die XML des Buches hier editiert; es gibt aber keine Referenzen auf irgendwelche Klassen oder packages.
Das Ganze als WAR-File unter TOMCAT 7 ausgeführt erzeugt mir einen NPE in der Methode "getHelloWorld()", da die GreetingBean nicht instantiiert ist.
Der Code ist aus dem Buch - und wenn ich die Bean jetzt selber instantiiere benötige ich CDI nicht mehr.
Kann mir hier jemand weiterhelfen; wäre ganz nett.
Ich habe diese beiden Programme:
Java:
package de.sample.cdi.gettingstarted.beans;
import java.util.Calendar;
public class GreetingBean {
public String getGreeting() {
int hourOfDay = Calendar.getInstance().get(Calendar.HOUR_OF_DAY);
if (hourOfDay < 10) return "Guten Morgen";
else if (hourOfDay < 18) return "Guten Tag";
else return "Guten Abend";
}
}
und
Java:
package de.sample.cdi.gettingstarted.classes;
import de.sample.cdi.gettingstarted.beans.GreetingBean;
import javax.inject.Inject;
public class DemoModel {
@Inject
private GreetingBean greetingBean;
public String getHelloWorld() {
return this.greetingBean.getGreeting() + " Welt";
}
public static void main(String...strings) {
System.out.println(new DemoModel().getHelloWorld());
}
}
Unter "WEB-INF" habe ich eine "fast" leere beans.xml (Ich habe die XML des Buches hier editiert; es gibt aber keine Referenzen auf irgendwelche Klassen oder packages.
Code:
<?xml version="1.0"?>
<beans xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/beans_1_1.xsd"
bean-dicovery-mode="all" version="1.1">
</beans>
Das Ganze als WAR-File unter TOMCAT 7 ausgeführt erzeugt mir einen NPE in der Methode "getHelloWorld()", da die GreetingBean nicht instantiiert ist.
Der Code ist aus dem Buch - und wenn ich die Bean jetzt selber instantiiere benötige ich CDI nicht mehr.
Kann mir hier jemand weiterhelfen; wäre ganz nett.
Zuletzt bearbeitet von einem Moderator: