为什么 Ejb 接口抛出 NullPointerException?
Why Ejb Interface throwing NullPointerException?
我正在从我的测试中调用我的 Ejb bean class.In 测试 class 我在这里 userService 前面使用 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 interface/implementation 看起来像这样...
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!";
}
}
当我使用我的测试 class 中的接口调用 UserServiceBean class 的 doSomething 方法 时。它给我这样的错误。
Exception in thread "main" java.lang.NullPointerException
at test.Test.main(Test.java:17)
请解释为什么会出现此错误。
您收到空指针异常,因为 class 测试中的 userService 是静态的。注入不适用于静态字段。从字段 userService 中删除静态关键字。定义为
@Inject
private UserService userService;
参考:https://blogs.oracle.com/chengfang/entry/do_s_and_don_ts
参考这个link如何调用服务方法:
http://www.coderpanda.com/ejb-stateless-session-bean-example/
我正在从我的测试中调用我的 Ejb bean class.In 测试 class 我在这里 userService 前面使用 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 interface/implementation 看起来像这样...
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!";
}
}
当我使用我的测试 class 中的接口调用 UserServiceBean class 的 doSomething 方法 时。它给我这样的错误。
Exception in thread "main" java.lang.NullPointerException
at test.Test.main(Test.java:17)
请解释为什么会出现此错误。
您收到空指针异常,因为 class 测试中的 userService 是静态的。注入不适用于静态字段。从字段 userService 中删除静态关键字。定义为
@Inject
private UserService userService;
参考:https://blogs.oracle.com/chengfang/entry/do_s_and_don_ts
参考这个link如何调用服务方法: http://www.coderpanda.com/ejb-stateless-session-bean-example/