Reputation: 681
Here is My Servlet
@WebServlet("/UserServlet")
public class UserServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@Inject IUserBusiness userBusiness;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
List<UserBean> usersList=new ArrayList<UserBean>();
usersList=userBusiness.getAllUsers();
usersList.size();
}
And I have next interface and implementations
public interface IUserBusiness {
List<UserBean> getAllUsers();
}
public class UserBusiness implements IUserBusiness{
public List<UserBean>userList;
public UserBusiness() {
userList=new ArrayList<UserBean>();
}
public List<UserBean> getAllUsers(){
UserBean user=new UserBean();
user.setAge(44);
user.setEmail("fgdfg");
user.setPassword("dfgdfgf");
userList.add(user);
return this.userList;
}
}
And then I configure the injector like this
public class Listener extends GuiceServletContextListener {
@Override
protected com.google.inject.Injector getInjector() {
return Guice.createInjector(
new ServletModule() {
@Override protected void configureServlets() {
serve("/index.html").with(UserServlet.class);
}
},
new Configure());
}
and
public class Configure extends com.google.inject.AbstractModule{
@Override
protected void configure() {
bind(IUserBusiness.class).to(UserBusiness.class);
}
}
But I get a 500 error (nullPointer Exception at userBusiness in servlet)
Servlet.service() for servlet [dynamic.UserServlet] in context with path [/dynamic] threw exception
java.lang.NullPointerException
at dynamic.UserServlet.doGet(UserServlet.java:36)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
Upvotes: 1
Views: 166
Reputation: 95614
If you're using Guice, why do you have @WebServlet("/UserServlet")
set? An extra annotation won't do any harm, except that it may mask a separate misconfiguration.
Make sure you're accessing the servlet through your Guice bindings, because if you're accessing it through some other configuration, your @Inject fields will not be set and you'll get an NPE when trying to access them.
Upvotes: 1