- First, we create a User POJO:
public class User implements Serializable{
private Long id;
private String name;
public User(long id, String name){
this.id = id;
this.name = name;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
- Then, create a slow UserBean to return a User:
@Stateless
public class UserBean {
public User getUser(){
long id = new Date().getTime();
try {
TimeUnit.SECONDS.sleep(5);
return new User(id, "User " + id);
} catch (InterruptedException ex) {
System.err.println(ex.getMessage());
return new User(id, "Error " + id);
}
}
}
- And finally, create our asynchronous servlet:
@WebServlet(name = "UserServlet", urlPatterns = {"/UserServlet"}, asyncSupported = true)
public class UserServlet extends HttpServlet {
@Inject
private UserBean userBean;
private final Jsonb jsonb = JsonbBuilder.create();
@Override
protected void doGet(HttpServletRequest req,
HttpServletResponse resp) throws ServletException,
IOException {
AsyncContext ctx = req.startAsync();
ctx.start(() -> {
try (PrintWriter writer =
ctx.getResponse().getWriter()){
writer.write(jsonb.toJson(userBean.getUser()));
} catch (IOException ex) {
System.err.println(ex.getMessage());
}
ctx.complete();
});
}
@Override
public void destroy() {
try {
jsonb.close();
} catch (Exception ex) {
System.err.println(ex.getMessage());
}
}
}
..................Content has been hidden....................
You can't read the all page of ebook, please click
here login for view all page.