为什么Ejb接口抛出NullPointerException?

时间:2016-11-28 09:14:17

标签: java nullpointerexception ejb-3.0

我从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)

请解释一下为什么会出现这个错误。

1 个答案:

答案 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/