ich von My Test class.In Testklasse meiner Ejb Bohne nenne ich vor hier Userservice Schlüsselwort static verwenden, weil ich den Userservice aus dem statischen Kontext am Zugriff aufWarum Ejb Interface NullPointerException wirft?
Note (aus dem Hauptverfahren.): Wenn ich nicht das statische Schlüsselwort vor userService verwende, dann habe ich auch denselben Fehler.
public class Test {
@Inject
private static UserService userService;
public Test() {
// TODO Auto-generated constructor stub
}
public static void main(String args[]){
userService.doSomething("hello");
}
}
ich Setup eine EJB-3-Schnittstelle/Umsetzung wie folgt aussehen ...
Userservice (Schnittstelle)
package business;
public interface UserService {
public String doSomething();
}
UserServiceBean (Implementierung)
@Stateless
@Local
public class UserServiceBean implements UserService{
public UserServiceBean() {
}
@Override
public String doSomething() {
return "Work done!";
}
}
W Hen ich rufe doSomething Methode der UserServiceBean Klasse mit Schnittstelle von meiner Test-Klasse. Es gibt mir so einen Fehler.
Exception in thread "main" java.lang.NullPointerException
at test.Test.main(Test.java:17)
Bitte erläutern Sie mir, warum dieser Fehler kommt.
'userService' ist null, und nichts wird sie einen Wert zuweisen. Ich nehme an, dass Sie von der '@ Inject'-Annotation * erwartet * haben, etwas zu tun, aber es ist mir nicht klar, dass Sie ein solches Verhalten tatsächlich konfiguriert haben. Ich würde beispielsweise nicht erwarten, dass ein "statisches" Feld injizierbar ist. – dimo414
Ich habe hier statisch verwendet, weil ich aus dem statischen Kontext auf den userService zugreife. Oder der Zweck des Injizierens des UserService besteht nur darin, die Ausgabe von EJB-Bean (UserServiceBean) durch Aufrufen zu erhalten. Meine Frage ist sehr klar. –
Welchen Container benutzen Sie? – HRgiger