我从My Test类调用我的Ejb bean。在测试类中,我在这里使用staticService关键字userService,因为我从静态上下文(从main方法)访问userService。
注意:另外如果我不在userService前面使用static关键字,那么我也会遇到同样的错误。
public class Test {
@Inject
private static UserService userService;
public Test() {
// TODO Auto-generated constructor stub
}
public static void main(String args[]){
userService.doSomething("hello");
}
}
我设置了一个看起来像这样的EJB 3接口/实现......
UserService(界面)
package business;
public interface UserService {
public String doSomething();
}
UserServiceBean(实施)
@Stateless
@Local
public class UserServiceBean implements UserService{
public UserServiceBean() {
}
@Override
public String doSomething() {
return "Work done!";
}
}
当我使用Test类中的接口调用UserServiceBean类的 doSomething方法时。它给我这样的错误。
Exception in thread "main" java.lang.NullPointerException
at test.Test.main(Test.java:17)
请解释一下为什么会出现这个错误。
答案 0 :(得分:0)
您正在获取Null指针异常,因为类Test中的userService是静态的。注入不适用于静态字段。从字段userService中删除static关键字。定义它像
@Inject
private UserService userService;
参考:https://blogs.oracle.com/chengfang/entry/do_s_and_don_ts
请参阅此链接以了解如何调用服务方法: http://www.coderpanda.com/ejb-stateless-session-bean-example/