- 浏览: 698862 次
- 性别:
- 来自: 长沙
文章分类
- 全部博客 (364)
- quick start (57)
- bboss aop (43)
- bboss mvc (48)
- bboss persistent (96)
- bboss taglib (30)
- bboss event (10)
- bbossgroups (52)
- bboss (32)
- bboss会话共享 (17)
- bboss rpc (7)
- bboss 国际化 (5)
- bboss 序列化 (9)
- bboss cxf webservice (8)
- bboss hessian (3)
- bboss 安全认证SSO (15)
- bboss 工作流 (6)
- 平台 (18)
- bboss quartz (3)
- 杂谈 (5)
- 大数据 (1)
- bboss elastic (24)
- bboss http (1)
- bboss kafka (1)
- Elasticsearch Scroll和Slice Scroll查询API使用案例 (1)
最新评论
-
qianhao123:
...
采用gradle构建和发布bboss方法介绍 -
qianhao123:
[img][/img]
采用gradle构建和发布bboss方法介绍 -
yin_bp:
欢迎大家参与working
高性能elasticsearch ORM开发库使用介绍 -
qq641879434:
万分感谢
bboss 持久层sql xml配置文件编写和加载方法介绍 -
yin_bp:
qq641879434 写道怎么设置配置文件 可以查看执行的S ...
bboss 持久层sql xml配置文件编写和加载方法介绍
bbossgroups-3.1 支持组件方法异步调用,本文介绍一下aop框架中的组件方法异步调用功能的特性,提供了对组件方法异步执行的几乎所有模式。
1.异步机制
Bbossgroup 3.1版本中新增了组件异步调用功能,大致的机制如下:
是否需要返回调用结果,默认不返回,主线程继续往前走(真正的异步)
如果需要返回则,根据timeout和callback两个参数来决定
返回结果的等待处理模式:
当timeout > 0 则等待特定的时间来来获取结果,超过指定的时间后就抛超时异常,等待超时的模式又分为两种情况:
如果指定了回调函数,不阻塞主程序,将结果交给回调函数来处理
如果没有指定回调函数则阻塞主程序,将结果交给主程序来处理
当timeout <= 0 时,则永久等待结果,直到结果返回,这种模式也分两种情况:
如果指定了回调函数 则不阻塞主程序,
如果没有指定回调函数,则阻塞主程序,直到结果返回来
2.六种异步模式
模式一 纯异步模式-不需要等待返回结果,不需要回调的异步模式,不阻塞主调程序
对应方法的Async注解使用方式为:
模式二 等待超时的异步模式-不需要等待返回结果,不需要回调,但是指定了异步执行超时时间的异步模式,不阻塞主调程序
对应方法的Async注解使用方式为:
模式三 等待结果的异步模式-方法异步执行,但是调用方会一直等待执行结果,阻塞主调程序
对应方法的Async注解使用方式为:
模式四 超时等待结果的异步模式-方法异步执行,但是调用方会一直等待执行结果,直到超过指定时间,抛出TimeoutException,阻塞主调程序
对应方法的Async注解使用方式为:
模式五 执行结果交给回调处理函数的异步处理模式,不阻塞主调程序
对应方法的Async注解使用方式为:
模式六 执行结果交给回调处理函数的超时异步处理模式,不阻塞主调程序
对应方法的Async注解使用方式为:
3.组件异步方法注解
org.frameworkset.spi.async.annotation. Async
其作用就是标识需要异步执行的方法以及设定异步执行的相关参数。
可以指定以下属性:
timeout:指定结果等待调用超时时间,默认为-1(不用超时),只有
Callback:指定异步调用结果处理回调组件名字
Result:异步调用时是否需要将结果返回给主调程序或者是交个回调函数处理结果
4 异步回调接口
5 异步组件实现
6 异步回调组件定义
7 异步组件和回调组件配置
8 异步组件测试用例
1.异步机制
Bbossgroup 3.1版本中新增了组件异步调用功能,大致的机制如下:
是否需要返回调用结果,默认不返回,主线程继续往前走(真正的异步)
如果需要返回则,根据timeout和callback两个参数来决定
返回结果的等待处理模式:
当timeout > 0 则等待特定的时间来来获取结果,超过指定的时间后就抛超时异常,等待超时的模式又分为两种情况:
如果指定了回调函数,不阻塞主程序,将结果交给回调函数来处理
如果没有指定回调函数则阻塞主程序,将结果交给主程序来处理
当timeout <= 0 时,则永久等待结果,直到结果返回,这种模式也分两种情况:
如果指定了回调函数 则不阻塞主程序,
如果没有指定回调函数,则阻塞主程序,直到结果返回来
2.六种异步模式
模式一 纯异步模式-不需要等待返回结果,不需要回调的异步模式,不阻塞主调程序
对应方法的Async注解使用方式为:
@Async public String testHelloworld(String message) { System.out.println(message); return "testHelloworld:"+message; }
模式二 等待超时的异步模式-不需要等待返回结果,不需要回调,但是指定了异步执行超时时间的异步模式,不阻塞主调程序
对应方法的Async注解使用方式为:
@Async(timeout=5000) public String testHelloworld0(String message) { System.out.println(message); return "testHelloworld:"+message; }
模式三 等待结果的异步模式-方法异步执行,但是调用方会一直等待执行结果,阻塞主调程序
对应方法的Async注解使用方式为:
@Async(result=Result.YES) public String testHelloworld3(String message) { System.out.println(message); return "testHelloworld3:"+message; }
模式四 超时等待结果的异步模式-方法异步执行,但是调用方会一直等待执行结果,直到超过指定时间,抛出TimeoutException,阻塞主调程序
对应方法的Async注解使用方式为:
@Async(timeout=5000,result=Result.YES) public String testHelloworld1(String message) { System.out.println(message); return "testHelloworld1:"+message; }
模式五 执行结果交给回调处理函数的异步处理模式,不阻塞主调程序
对应方法的Async注解使用方式为:
@Async(result=Result.YES,callback="asyn.AsynbeanCallBackTest") public String testHelloworld4(String message) { System.out.println(message); return "testHelloworld4:"+message; }
模式六 执行结果交给回调处理函数的超时异步处理模式,不阻塞主调程序
对应方法的Async注解使用方式为:
@Async(timeout=5000,result=Result.YES,callback="asyn.AsynbeanCallBackTest") public String testHelloworld2(String message) { System.out.println(message); return "testHelloworld2:"+message; }
3.组件异步方法注解
org.frameworkset.spi.async.annotation. Async
其作用就是标识需要异步执行的方法以及设定异步执行的相关参数。
可以指定以下属性:
timeout:指定结果等待调用超时时间,默认为-1(不用超时),只有
Callback:指定异步调用结果处理回调组件名字
Result:异步调用时是否需要将结果返回给主调程序或者是交个回调函数处理结果
4 异步回调接口
package org.frameworkset.spi.async; public interface CallBack<T> { public void handleResult(T result); public void handleError(Throwable result); }
5 异步组件实现
/* * Copyright 2008 biaoping.yin * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.frameworkset.spi.asyn; import org.frameworkset.spi.async.annotation.Async; import org.frameworkset.spi.async.annotation.Result; /** * <p>Title: AsynbeanTest.java</p> * <p>Description: </p> * <p>bboss workgroup</p> * <p>Copyright (c) 2007</p> * @Date 2011-4-20 下午05:18:54 * @author biaoping.yin * @version 1.0 */ public class AsynbeanTest { @Async public String testHelloworld(String message) { System.out.println(message); return "testHelloworld:"+message; } /** * 5秒超时,但是不返回结果,也不指定回调函数(这种模式没有实际意义,只是在调用的时候超过5秒 * 后给出超时异常) * @param message * @return */ @Async(timeout=5000) public String testHelloworld0(String message) { System.out.println(message); return "testHelloworld:"+message; } /** * 需要返回结果,等10秒超时 * @param message */ @Async(timeout=5000,result=Result.YES) public String testHelloworld1(String message) { System.out.println(message); return "testHelloworld1:"+message; } @Async(timeout=5000,result=Result.YES,callback="asyn.AsynbeanCallBackTest") public String testHelloworld2(String message) { System.out.println(message); return "testHelloworld2:"+message; } @Async(result=Result.YES) public String testHelloworld3(String message) { System.out.println(message); return "testHelloworld3:"+message; } @Async(result=Result.YES,callback="asyn.AsynbeanCallBackTest") public String testHelloworld4(String message) { System.out.println(message); return "testHelloworld4:"+message; } }
6 异步回调组件定义
/* * Copyright 2008 biaoping.yin * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.frameworkset.spi.asyn; import org.frameworkset.spi.async.CallBack; /** * <p>Title: AsynbeanCallBackTest.java</p> * <p>Description: </p> * <p>bboss workgroup</p> * <p>Copyright (c) 2007</p> * @Date 2011-4-21 下午06:39:52 * @author biaoping.yin * @version 1.0 */ public class AsynbeanCallBackTest implements CallBack { public void handleResult(Object result) { System.out.println(result); } public void handleError(Throwable result) { result.printStackTrace(); } }
7 异步组件和回调组件配置
<properties> <!-- 异步调用处理服务组件 --> <property name="asyn.AsynbeanTest" class="org.frameworkset.spi.asyn.AsynbeanTest"/> <property name="asyn.AsynbeanCallBackTest" class="org.frameworkset.spi.asyn.AsynbeanCallBackTest"/> </properties>
8 异步组件测试用例
/* * Copyright 2008 biaoping.yin * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.frameworkset.spi.asyn; import org.frameworkset.spi.ApplicationContext; import org.junit.Before; import org.junit.Test; /** * <p>Title: TestRun.java</p> * <p>Description: </p> * <p>bboss workgroup</p> * <p>Copyright (c) 2007</p> * @Date 2011-4-21 下午06:46:37 * @author biaoping.yin * @version 1.0 */ public class TestRun { private ApplicationContext context ; @Before public void init() { context = ApplicationContext.getApplicationContext("org/frameworkset/spi/asyn/asyn.xml"); } @Test public void testAsync() { AsynbeanTest test = (AsynbeanTest)context.getBeanObject("asyn.AsynbeanTest"); for(int i = 0; i < 10 ; i++) test.testHelloworld("Async call."); System.out.println("runned."); } @Test public void testTimeout5000WithResult() { AsynbeanTest test = (AsynbeanTest)context.getBeanObject("asyn.AsynbeanTest"); System.out.println(test.testHelloworld1("Async call Timeout 5000ms with Result.")); System.out.println("runned."); } @Test public void testTimeout5000NoResult() { AsynbeanTest test = (AsynbeanTest)context.getBeanObject("asyn.AsynbeanTest"); System.out.println(test.testHelloworld0("Async call Timeout 5000ms No Result.")); System.out.println("runned."); } @Test public void testTimeout5000WithCallBackService() { AsynbeanTest test = (AsynbeanTest)context.getBeanObject("asyn.AsynbeanTest"); System.out.println(test.testHelloworld2("Async call Timeout 5000 With CallBackService.")); System.out.println("runned."); } @Test public void testWithCallBackService() { AsynbeanTest test = (AsynbeanTest)context.getBeanObject("asyn.AsynbeanTest"); System.out.println(test.testHelloworld4("Async call With CallBackService.")); System.out.println("runned."); } @Test public void testResult() { AsynbeanTest test = (AsynbeanTest)context.getBeanObject("asyn.AsynbeanTest"); System.out.println(test.testHelloworld3("call With")); System.out.println("runned."); } }
评论
2 楼
yin_bp
2011-05-03
bbossgroups 3.1已经发布。详情可以访问新闻:
http://www.iteye.com/news/21036-bbossmvc-bbossaop-bbosspesistent-bbosstaglib-bbossevent
http://www.iteye.com/news/21036-bbossmvc-bbossaop-bbosspesistent-bbosstaglib-bbossevent
sures 写道
期待!!!
1 楼
sures
2011-04-24
期待!!!
发表评论
-
bboss离线开发文档下载
2013-05-14 18:08 1876bboss离线开发文档下载 为了便于bboss开发人员离线查找 ... -
bboss 3.6发布,丰富的功能扩展和改进
2012-10-07 09:50 2050bboss 3.6 (官网下载,sf下载)发布了,新版本相比之 ... -
Bboss国际化实践PPT
2012-06-10 12:52 1398Bboss国际化实践PPT,点击链接即可下载: Bboss国际 ... -
bboss国际化功能简介
2012-05-09 08:59 1267借助bboss国际化功能,我们可以非常方便快捷地实现系统 ... -
bboss 4.10.7及更低版本ant构建方法
2012-03-23 22:54 6042本文适用bboss 4.10.7及更低版本,4.10.8及后续 ... -
bboss 将内容为GBK编码文件转UTF-8工具介绍
2012-03-23 15:53 1698bboss 将内容为GBK编码文件转UTF-8工具介绍 bb ... -
bbossgroups 3.5 发布
2012-02-18 14:51 1176版本:bbossgroups-3.5 官网:http://w ... -
bboss 序列化功能详解
2012-01-27 11:04 1671bboss 序列化功能详解,bboss序列化组件是bbossg ... -
bboss 序列化机制重大改进-支持复杂对象及对象之间关系序列化和恢复功能
2012-01-09 23:19 1403bboss 序列化机制重大改进-支持复杂对象及对象之间关系序列 ... -
bbossgroups 3.4发布
2011-10-26 22:45 1156版本: bbossgroups-3.4 bboss gro ... -
bbossgroups 对象xml序列化/反序列化性能测试
2011-10-10 23:16 1362本文探讨开源项目bbossgroups 中对象xml序列化/反 ... -
bbossgroups 开发系列文章之一 最佳实践
2011-10-01 12:50 1505bbossgroups 开发系列文章之-最佳实践 一、概述 ... -
bboss 组件容器的使用方法浅析
2011-08-20 00:21 1674本文重点介绍bboss 中的4大组件容器的特点及使用方法 4 ... -
bbossgroups 3.3 发布
2011-08-19 23:02 1102bbossgroups 3.3 发布,该版本在3.2的基础上做 ... -
bbossgroups框架发布的jar包和依赖jar包概览
2011-08-09 23:16 2012bbossgroups框架发布的jar包和依赖jar包概览 j ... -
我们需要一站式解决方案还是混合组合方案
2011-08-05 14:10 1187这年头提供一站式解决方案的框架才具备真正的核心竞 ... -
bbossgroups的特色特点介绍
2011-07-10 10:49 1458很多朋友都在问bbossgroups框架和其他mvc框架 、s ... -
bbossgroups 相关资料整理
2011-06-24 08:13 1151为了方便大家了解bbossgroups,我特意把相关的资料整理 ... -
bbossgroups项目demo站点升级完毕,朋友们可以去看看
2011-06-19 22:52 1207bbossgroups项目demo站点升级完毕,访问地址: h ... -
开源项目bbossgroups,诚邀有志之士加盟
2011-06-15 10:03 537国内新兴的j2ee开源项目bbossgroups,诚邀有志之士 ...
相关推荐
`SQLExecutor`通过调用相应的插入方法,如`executeInsert()`,执行这个SQL语句,并传入参数列表`beans`。 注意,代码中的注释指出,这些操作都是在特定的连接池中进行的,这意味着SQLExecutor利用了数据库连接池来...
通过依赖注入,可以将数据库访问组件注入到DAO中,使得业务组件可以直接调用DAO方法进行数据操作。 业务组件管理及注入DAO组件是业务逻辑层的核心。业务组件通常包含了复杂的业务规则,它们通过依赖注入的方式获取...
总之,bbossgroups 3.1是一个功能强大且全面的企业级开发框架,它的组件异步调用、MVC地址别名配置、SQL配置管理等功能显著提高了开发效率和系统的灵活性。随着不断的发展和更新,bbossgroups将持续为企业级应用提供...
本教程将围绕bbossgroups 3.0版本,深入讲解其核心概念、使用方法以及最佳实践。 首先,我们要理解bbossgroups的核心设计理念。它基于模块化架构,使得开发者可以根据项目需求选择合适的组件,避免了不必要的性能...
**Bbossgroups体系架构详解** Bbossgroups是一个全面的、开源的企业级应用框架,旨在简化Java开发...开发者可以根据项目的具体需求,灵活选择和组合Bbossgroups提供的各种组件和服务,构建出符合业务场景的高效系统。
- **远程调用**:轻松实现跨服务调用,降低系统耦合度。 - **高性能通信**:采用高效的序列化协议和传输层协议,提升通信速度。 - **服务治理**:提供服务注册、发现、负载均衡等功能,便于管理微服务架构。 #### ...
11. **性能优化**:通过代码优化、异步处理、内存管理等方式,提升系统运行效率。 12. **文档生成**:支持API文档自动生成,方便开发者理解和使用。 BBoss框架的最新版本bbossgroups-bboss-389b83a可能包含了对...
12. bboss:bbossgroups是首个集成AOP、MVC、持久层、JSP标签库、分布式RPC服务和序列化组件的JavaEE企业级开发框架。 13. BeeFramework:BeeFramework是iOS平台的快速开发框架,特点包括易学易用、组件丰富,提供...
JSONP是一种规避同源策略的方法,它的工作原理是通过在HTML中动态插入`<script>`标签,其`src`属性指向服务端提供的URL,该URL返回的是一个JavaScript函数调用,并将数据作为参数传递。由于`<script>`标签不受同源...
该框架包含222个文件,包括164个Java源文件、14个XML配置文件、6个Gradle构建文件、6个JAR包文件、6个属性文件等,旨在支持跨域应用集群节点的会话共享与监控,并提供示例站点http://session.bbossgroups.com/...
弹性Tran老板数据交换模块使用文档: : Bboss是一个很好的Elasticsearch Java Rest客户端。 它运行并访问像mybatis这样的... 首先将BBoss的maven依赖项添加到pom.xml中: < dependency> < groupId>com.bbossgroups.p
java版地图源码弹性搜索Bboss Bboss 是一个很好的 elasticsearch Java rest 客户端。 它以类似于mybatis的方式操作和访问elasticsearch。 环保要求 JDK 要求:JDK 1.7+ Elasticsearch ...>com.bbossgroups.p