- 浏览: 706511 次
- 性别:
- 来自: 长沙
-
文章分类
- 全部博客 (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配置文件编写和加载方法介绍
bboss 3.4及后续版本在原有的rpc功能基础上做了非常大的改进,支持丰富的协议簇(http/netty/mina/jms/webservice/rmi/jgroups/restful)。bboss rpc客户端可以类似于webservice和rmi的客户端方式对bboss ioc容器、mvc容器中配置的任何组件发起远程调用。为了支撑这个功能,3.4版中新增了组件:
org.frameworkset.spi.ClientProxyContext
该组件提供了以下能力而在本地无需服务组件的实现类和配置文件,只需接口以及接口依赖的相关的类即可:
1.对mvc容器中配置的组件的远程调用
2.对其他类型容器中配置的组件的远程调用
三个主要的接口如下:
1.获取MVC容器中的服务组件调用代理
/**
* 获取MVC容器中的服务组件调用代理
* @param <T> 泛型类型
* @param name 服务组件访问地址
* @param type 组件接口类型,使用泛型来实现接口的自动类型转换
* @return 服务组件调用代理
*/
public static <T> T getWebMVCClientBean(String name,Class<T> type)
2.获取ApplicationContext类型容器中的服务组件调用代理
/**
* 获取ApplicationContext类型容器中的服务组件调用代理
* @param <T> 泛型类型
* @param context 容器标识,一般是容器初始化的配置文件路径
* @param name 服务组件访问地址
* @param type 组件接口类型,使用泛型来实现接口的自动类型转换
* @return 服务组件调用代理
*/
public static <T> T getApplicationClientBean(String context,String name,Class<T> type)
3.获取DefaultApplicationContext类型容器中的服务组件调用代理
/**
* 获取DefaultApplicationContext类型容器中的服务组件调用代理
* @param <T> 泛型类型
* @param context 容器标识,一般是容器初始化的配置文件路径
* @param name 服务组件访问地址
* @param type 组件接口类型,使用泛型来实现接口的自动类型转换
* @return 服务组件调用代理
*/
public static <T> T getSimpleClientBean(String context,String name,Class<T> type)
每种接口的使用实例如下,全部基于http协议实现:
1.获取mvc容器中组件的远程服务调用接口,mvc容器由服务端mvc框架自动初始化
2.获取DefaultApplicationContext类型容器中的服务组件调用代理
3.获取服务器端默认容器中组件的远程服务调用接口
4.http协议补充说明
服务端必须在web.xml文件中配置以下servlet
5.http协议串说明
http::localhost:8080/bboss-mvc/http.rpc
协议部分 ip部分 port部分 应用上下文 匹配rpcservlet串
我们用()将上面的url串括起来,然后再添加服务端组件标识和认证参数user和password:
/client.proxy.simpledemo?user=admin&password=123456
client.proxy.simpledemo为服务端组件,?user=admin&password=123456中的user参数就是认证账户,password参数就是认证口令,如果服务开启了认证机制,就需要在客户端设置这两个参数,反之无需配置。
我们可以在服务组件方法中通过org.frameworkset.spi.security.SecurityContext获取客户端传递过来的账户信息,静态方法:
6.通过配置文件来配置客户端调用组件的实例
可以通组件工厂模式来在aop配置文件中配置一个客户端代理组件,我们这里是以http协议为列,从mvc容器中获取服务client.proxy.demo的客户端调用实例。
先看配置文件:
org/frameworkset/spi/remote/clientproxy/consumer.xml
consumer.xml文件的内容如下:
consumer.xm中配置了名称为clientservice的组件,该组件实例通过代理类org.frameworkset.spi.ClientProxyContext的静态方法getWebMVCClientBean来创建,通过构造器construction指定了getWebMVCClientBean方法需要的两个参数:
参数一 服务地址信息
(http::localhost:8080/bboss-mvc/http.rpc)/client.proxy.demo?user=admin&password=123456
参数二 服务接口类信息
org.frameworkset.spi.remote.clientproxy.ClientInf
这样我们就可以加载consumer.xml文件创建一个DefaultApplicationContext类型的容器,然后获取到组件的客户端调用实例,代码如下:
通过这种方式,我们就可以把之前通过代码调用ClientProxyContext创建客户端代理转换为通过aop容器管理创建客户端调用代理模式,这两种方式是等价的。
服务配置:
理论上bboss ioc容器中配置的组件都可以作为远程服务调用,但是必须通过enablerpc属性开启为远程服务,对应的业务组件才能作为远程服务发布,
enablerpc="true" 开启
enablerpc="false" 禁用
7.总结
本文介绍了通过ClientProxyContext来获取bboss中三种不同类型容器(mvc容器、独立容器、默认容器)中配置的组件客户端调用代理的方法,并以http协议为列介绍了使用方法;介绍了客户端如何传递认证信息的方法;介绍了协议串的配置方法和含义;同时也对比了通过代码直接创建代理和通过aop配置文件创建代理的两种方式,实际情况可以任意选择。
org.frameworkset.spi.ClientProxyContext
该组件提供了以下能力而在本地无需服务组件的实现类和配置文件,只需接口以及接口依赖的相关的类即可:
1.对mvc容器中配置的组件的远程调用
2.对其他类型容器中配置的组件的远程调用
三个主要的接口如下:
1.获取MVC容器中的服务组件调用代理
/**
* 获取MVC容器中的服务组件调用代理
* @param <T> 泛型类型
* @param name 服务组件访问地址
* @param type 组件接口类型,使用泛型来实现接口的自动类型转换
* @return 服务组件调用代理
*/
public static <T> T getWebMVCClientBean(String name,Class<T> type)
2.获取ApplicationContext类型容器中的服务组件调用代理
/**
* 获取ApplicationContext类型容器中的服务组件调用代理
* @param <T> 泛型类型
* @param context 容器标识,一般是容器初始化的配置文件路径
* @param name 服务组件访问地址
* @param type 组件接口类型,使用泛型来实现接口的自动类型转换
* @return 服务组件调用代理
*/
public static <T> T getApplicationClientBean(String context,String name,Class<T> type)
3.获取DefaultApplicationContext类型容器中的服务组件调用代理
/**
* 获取DefaultApplicationContext类型容器中的服务组件调用代理
* @param <T> 泛型类型
* @param context 容器标识,一般是容器初始化的配置文件路径
* @param name 服务组件访问地址
* @param type 组件接口类型,使用泛型来实现接口的自动类型转换
* @return 服务组件调用代理
*/
public static <T> T getSimpleClientBean(String context,String name,Class<T> type)
每种接口的使用实例如下,全部基于http协议实现:
1.获取mvc容器中组件的远程服务调用接口,mvc容器由服务端mvc框架自动初始化
ClientInf mvcinf = ClientProxyContext.getWebMVCClientBean( "(http::localhost:8080/bboss-mvc/http.rpc)" + "/client.proxy.demo?user=admin&password=123456", ClientInf.class); mvcinf.helloworld("aaaa,多多");
2.获取DefaultApplicationContext类型容器中的服务组件调用代理
//服务器端容器org/frameworkset/spi/ws/webserivce-modules.xml必须是以下方式创建 // DefaultApplicationContext context = DefaultApplicationContext.getApplicationContext("org/frameworkset/spi/ws/webserivce-modules.xml"); ClientInf simpleinf = ClientProxyContext.getSimpleClientBean("org/frameworkset/spi/ws/webserivce-modules.xml",//容器标识 "(http::localhost:8080/bboss-mvc/http.rpc)/client.proxy.simpledemo?user=admin&password=123456",//服务组件地址 ClientInf.class);//服务接口 simpleinf.helloworld("aaaa,多多");
3.获取服务器端默认容器中组件的远程服务调用接口
ClientInf defaultinf = ClientProxyContext.getApplicationClientBean( "(http::localhost:8080/bboss-mvc/http.rpc)" + "/client.proxy.simpledemo?user=admin&password=123456", ClientInf.class); defaultinf.helloworld("aaaa,多多");
4.http协议补充说明
服务端必须在web.xml文件中配置以下servlet
<servlet> <display-name>RPCHttpServLet</display-name> <servlet-name>RPCHttpServLet</servlet-name> <servlet-class>org.frameworkset.spi.remote.http.RPCHttpServLet</servlet-class> </servlet> <servlet-mapping> <servlet-name>RPCHttpServLet</servlet-name> <url-pattern>*.rpc</url-pattern> </servlet-mapping>
5.http协议串说明
http::localhost:8080/bboss-mvc/http.rpc
协议部分 ip部分 port部分 应用上下文 匹配rpcservlet串
我们用()将上面的url串括起来,然后再添加服务端组件标识和认证参数user和password:
/client.proxy.simpledemo?user=admin&password=123456
client.proxy.simpledemo为服务端组件,?user=admin&password=123456中的user参数就是认证账户,password参数就是认证口令,如果服务开启了认证机制,就需要在客户端设置这两个参数,反之无需配置。
我们可以在服务组件方法中通过org.frameworkset.spi.security.SecurityContext获取客户端传递过来的账户信息,静态方法:
SecurityContext securityContext = SecurityContext.getSecurityContext(); String user = securityContext.getUser(); String password = securityContext.getPassword();
6.通过配置文件来配置客户端调用组件的实例
可以通组件工厂模式来在aop配置文件中配置一个客户端代理组件,我们这里是以http协议为列,从mvc容器中获取服务client.proxy.demo的客户端调用实例。
先看配置文件:
org/frameworkset/spi/remote/clientproxy/consumer.xml
consumer.xml文件的内容如下:
<properties> <property name="clientservice" factory-class="org.frameworkset.spi.ClientProxyContext" factory-method="getWebMVCClientBean"> <construction> <property name="servicaddress" value="(http::localhost:8080/bboss-mvc/http.rpc)/client.proxy.demo?user=admin&password=123456"/> <property name="serviceclass" value="org.frameworkset.spi.remote.clientproxy.ClientInf"/> </construction> </property> </properties>
consumer.xm中配置了名称为clientservice的组件,该组件实例通过代理类org.frameworkset.spi.ClientProxyContext的静态方法getWebMVCClientBean来创建,通过构造器construction指定了getWebMVCClientBean方法需要的两个参数:
参数一 服务地址信息
(http::localhost:8080/bboss-mvc/http.rpc)/client.proxy.demo?user=admin&password=123456
参数二 服务接口类信息
org.frameworkset.spi.remote.clientproxy.ClientInf
这样我们就可以加载consumer.xml文件创建一个DefaultApplicationContext类型的容器,然后获取到组件的客户端调用实例,代码如下:
//定义容器对象 DefaultApplicationContext context = DefaultApplicationContext.getApplicationContext("org/frameworkset/spi/remote/clientproxy/consumer.xml"); //获取客户端组件实例 ClientInf client = context.getTBeanObject("clientservice", ClientInf.class); //发起远程方法调用 client.helloworld("aaa");
通过这种方式,我们就可以把之前通过代码调用ClientProxyContext创建客户端代理转换为通过aop容器管理创建客户端调用代理模式,这两种方式是等价的。
服务配置:
<property name="mysfirstwsservice" enablerpc="true" class="org.frameworkset.web.ws.WSServiceImpl"/>
理论上bboss ioc容器中配置的组件都可以作为远程服务调用,但是必须通过enablerpc属性开启为远程服务,对应的业务组件才能作为远程服务发布,
enablerpc="true" 开启
enablerpc="false" 禁用
7.总结
本文介绍了通过ClientProxyContext来获取bboss中三种不同类型容器(mvc容器、独立容器、默认容器)中配置的组件客户端调用代理的方法,并以http协议为列介绍了使用方法;介绍了客户端如何传递认证信息的方法;介绍了协议串的配置方法和含义;同时也对比了通过代码直接创建代理和通过aop配置文件创建代理的两种方式,实际情况可以任意选择。
发表评论
-
bboss webservice引擎使用方法
2014-11-16 11:23 946bboss webservice引擎使用方法,请参考文档:bb ... -
bboss开发、模块工程目录结构及功能说明
2014-10-15 19:46 4973基于bboss开发项目说明 � ... -
bboss将一个组件同时发布为webservice,hessian,http三种服务方法介绍
2014-04-12 14:31 1685bboss将一个组件同时发布为webservice,hessi ... -
扩展Activiti-5.12轻松实现流程节点间自由跳转和任意驳回/撤回
2013-05-28 01:33 18002由于项目需要,最近对开源工作流引擎Activiti-5.12的 ... -
bboss离线开发文档下载
2013-05-14 18:08 1899bboss离线开发文档下载 为了便于bboss开发人员离线查找 ... -
bboss持久层事务管理组件TransactionManager增加两个release方法
2012-08-25 11:56 1583bboss持久层事务管理组件TransactionManage ... -
Rest协议框架-bboss rpc
2012-08-03 12:51 1391restful风格rpc服务协议rest,定义的语法如下: ... -
解决cxf+bboss发布的webservice缺少<wsdl:types>和<wsdl:message>标签的问题
2012-06-19 10:11 1842cxf+bboss发布webservice服务 ... -
Bboss国际化实践PPT
2012-06-10 12:52 1426Bboss国际化实践PPT,点击链接即可下载: Bboss国际 ... -
bboss mvc文件上传下载新增功能详解
2012-05-16 22:35 1693bboss mvc文件上传下载新增功能详解 1.概述 最近对 ... -
bboss mvc结合jsonp实现跨站跨域应用间通讯功能介绍
2012-05-16 14:12 1894本文介绍bboss mvc结合jsonp实现跨站跨域应用间通讯 ... -
bboss mvc 通过jsonp实现跨站跨域远程访问
2012-05-14 22:48 0bboss mvc 通过jsonp实现跨站跨域远程访问 htt ... -
bboss国际化功能简介
2012-05-09 08:59 1287借助bboss国际化功能,我们可以非常方便快捷地实现系统 ... -
开源工作流引擎activiti与bboss整合使用方法浅析
2012-05-01 11:35 5265本文介绍开源工作流引擎activiti与bboss ioc框架 ... -
bboss持久层事务管理组件托管第三方持久层框架(mybatis等)事务功能介绍
2012-04-15 21:39 1998bboss持久层事务管理组件托管第三方持久层框架(mybati ... -
bboss 持久层sql语句中一维/多维数组类型变量、list变量、map变量、bean对象变量使用说明
2012-04-07 13:17 1847本文介绍bboss 持久层sql语句中一维/多维数组类型变量、 ... -
bboss 4.10.7及更低版本ant构建方法
2012-03-23 22:54 6077本文适用bboss 4.10.7及更低版本,4.10.8及后续 ... -
bboss 持久层数据库信息加密功能介绍
2012-03-15 10:39 1291bboss 持久层数据库信息加密插件功能介绍,适用于3.6及后 ... -
bboss 安全认证过滤器功能介绍
2012-03-11 21:07 1688bboss 安全认证过滤器功� ... -
bboss aop/ioc组件配置语法诠释
2012-03-01 18:38 2261这篇文章全面介绍bboss ioc 配置语法,希望对 ...
相关推荐
bboss集团网站: bboss组项目博客: bboss版本重建方法 gradle安装 开发工程生成方法: dle蚀 Gradle的想法 亦可以直接通过idea或eclipse gradle插件将下载的...bboss rpc原始码 github托管地址 svn下载地址 b
bboss框架集成了AOP/iOC、MVC、持久化标签库、RPC、事件处理、Bean-XML序列化等多种功能。本项目基于bboss框架构建了数据采集ETL工具、流批一体化Stream工具、Elasticsearch客户端工具和WebSession共享框架等应用。
例如,kafka组件用于构建实时数据处理管道和流应用程序,log4j则为应用程序提供了强大的日志记录功能,spring框架提供了全面的依赖管理和企业级服务支持,dubbo是一个高性能的Java RPC框架,activemq是一个功能强大...
标题所揭示的知识点表明,本文档将详细介绍一个基于Java语言的bboss插件集设计源码。该源码集总共包含277个文件,其中涉及多种技术文件类型,重点在于实现文档转换以及后端数据持久化。在这个项目中,文档转换功能...
12. bboss:bbossgroups是首个集成AOP、MVC、持久层、JSP标签库、分布式RPC服务和序列化组件的JavaEE企业级开发框架。 13. BeeFramework:BeeFramework是iOS平台的快速开发框架,特点包括易学易用、组件丰富,提供...