我正在从我的Test类调用我的Ejb bean。在测试类中,我在这里userService的前面使用static关键字,因为我是从static上下文(从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)
请向我解释为什么会出现此错误。
由于类Test中的userService是静态的,因此您将获得Null指针异常。注入不适用于静态字段。从字段userService中删除静态关键字。像这样定义
@Inject
private UserService userService;
参考:https : //blogs.oracle.com/chengfang/entry/do_s_and_don_ts
请参考此链接以了解如何调用服务方法:http : //www.coderpanda.com/ejb-stateless-session-bean-example/
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句