EJB基础二 异步调用
来源:互联网 发布:索尼kdl60w600b装软件 编辑:程序博客网 时间:2024/05/16 05:44
EJB的异步相当简单。其实就是在方法上加个@Asynchronous
异步方法有两种返回类型,一是void,一是Future<T>,我个人建议还是返回void。因为返回Future<T>还需要等待结果,就是同步了,所以没有了异步意义。就比如下面的代码,就是一个典型的带异步调用的无状态EJB。因为返回的是void,所以可以不处理返回值。
package asyncejb; import java.time.LocalDateTime; import javax.ejb.Asynchronous;import javax.ejb.Stateless; @Statelesspublic class AsyncEjb {@Asynchronouspublic void run(){System.out.println("EJB "+LocalDateTime.now());}}
在servlet中调用的话。
package asyncejb; import java.io.IOException;import java.time.LocalDateTime; import javax.ejb.EJB;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse; @WebServlet("/async.html")public class AsyncServlet extends HttpServlet{ private static final long serialVersionUID = 1L; @EJBprivate AsyncEjb asyncEjb; @Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {asyncEjb.run();System.out.println("Servlet " +LocalDateTime.now());}}
可以根据控制台打印信息知道,在代码顺序上,虽然是先调用EJB,后调用servlet,但是先执行的还是servlet,后执行的是EJB。
10:12:13,670 INFO [stdout] (default task-5) Servlet 2016-01-18T10:12:13.670
10:12:13,673 INFO [stdout] (EJB default - 3) EJB 2016-01-18T10:12:13.673
其实异步的用处在哪呢?
异步是用于大批量的任务,可以直接返回结果,避免了用户的等待。
但是J2EE中异步操作太多了,servlet可以异步,EJB可以异步,CDI可以异步,自己写个线程也可以异步。
0 0
- EJB基础二 异步调用
- 关于EJB异步调用遇到的问题解决
- 【EJB基础】远程调用和本地调用
- 异步调用二
- C#基础:异步调用
- IOS基础--异步调用
- 【EJB系列】(二)——JBOSS7中EJB的远程调用和本地调用
- EJB<二>
- EJB基础
- EJB基础
- EJB基础
- EJB基础
- JBOSS系列(二) -EJB远程调用-JBOSS的配置
- (二)线程--通过委托异步调用方法
- windows驱动之间异步调用(二)
- C#学习之(二)同步调用与异步调用
- EJB调用原理分析
- EJB调用原理分析
- uva 548
- poj1836
- 视音频数据处理入门:FLV封装格式解析
- 构建工具之---ant
- MyEclipse中改变.jsp默认的设计图模式为jsp editor
- EJB基础二 异步调用
- 学习笔记—解析XML
- 关于ztree创建
- eclipse错误:parseSdkContent failed Could not initialize class android.graphics
- 读配置文件
- phpbb简体中文语言包的安装
- Android —— 开发出现的问题小结
- bootstrap源码学习之消息提示alert(一)
- mysql单表60亿记录等大数据场景的MySQL优化和运维之道