bbossgroups-3.2 发布,支持对象xml序列化功能

简介: 经过一段时间紧张的开发工作,bbossgroups-3.2 发布了,支持对象xml序列化功能,可以方便地对各种复杂数据类型进行序列化和反序列化,甚至是文件对象内容。相比3.1,这个版本做了非常大的改进和功能扩展,优化aop/ioc体系结构,并且基于ioc技术开发出了独具特色的对象序列化技术;mvc、持久层、标签库、任务调度都做了很大的改进;开发文档和培训ppt更加全面,在iteye开辟了bbossgroups专栏: http://bbossgroups.group.iteye.com/group/wiki,可以在第一时间将框架的最新动态呈现给大家。
经过一段时间紧张的开发工作,bbossgroups-3.2 发布了,支持对象xml序列化功能,可以方便地对各种复杂数据类型进行序列化和反序列化,甚至是文件对象内容。相比3.1,这个版本做了非常大的改进和功能扩展,优化aop/ioc体系结构,并且基于ioc技术开发出了独具特色的对象序列化技术;mvc、持久层、标签库、任务调度都做了很大的改进;开发文档和培训ppt更加全面,在iteye开辟了bbossgroups专栏:
http://bbossgroups.group.iteye.com/group/wiki,可以在第一时间将框架的最新动态呈现给大家。
总体来说,3.2是自bbossgroups第一个版本发布以来,功能最完善、最稳定的一个版本,完全可以非常好地支撑起j2ee项目各个方面的开发工作。

bbossgroups project contain follow subprojects:
1.bboss-aop, an aop framework.(ioc ,rpc[jms,mina,jgroups,cxf webservice,rmi,netty,rest,组播,多播],
    bean component,cxf webservice component framworkset,jms components frameworkset,plugin security components and so on).
2.bboss-persistent, a persistent framework().
a.灵活的事务管理(声明式事务管理,可编程事务管理,java注解事务管理,jdbctemplate事务管理,五种经典的事务类型,支持事务嵌套,支持多数据库分布式事务)
b.灵活的访问数据库的接口(普通sql操作,预编译sql操作,普通/预编译批处理操作,存储过程,函数)
c.一套经典的数据库操作标签库(增删改查,普通sql操作,预编译sql操作,普通/预编译批处理操作)
d.经典的多数据库连接池配置管理和使用方法(所有的数据库操作接口可以直接指定连接池的名称,方便地实现对不同数据库的操作)
3.bboss-taglib, a web layer taglib framework(list tag,pageine list tag,detail tag ,logic tag,tree tag,tabpane tag,dbutil tag).
4.bboss-event, an event framework(local event,remote distribute event framework base aop rpc framework).
5.bboss-util, an utility framework.
6.bboss-soa:3.2版本新增模块,实现对象-xml序列化与反序列化功能
7.antbuildall, ant build project that build up projects.可以运行antbuildall下的run.bat命令编译所有的子项目,并且更新相应工程的依赖jars。
8.apache-ant-1.7.1 所有工程构建依赖的ant环境,bbossgroups的构建无需依赖外部ant环境,每个子工程下都有相应的执行ant的bat命令文件,直接运行这些bat就可以构建相应的
            工程,构建的目标文件存放在相应工程的distrib目录下面。
            bbossaop\run.bat
            bbossevent\run.bat
            bboss-mvc\build.bat
            bboss-persistent\run.bat
            bboss-taglib\run.bat
            bboss-util\run.bat
9.bboss-mvc,bboss mvc 框架隶属于开源项目bbossgroups,是基于bboss aop框架开发的轻量级mvc框架,提供以下功能:单方法action,多方法action,注解action 支持restful
            提供数据绑定功能提供国际化功能提供自定义主题功能提供一套界面展示标签提供数据自动校验功能,
            bboss-mvc提供多文件上传功能的支持,分页控制器的支持。能够非常方便地和jquery,exjs等流行的技术框架使用。

10.文档 目录包含mvc框架开发文档、framework 开发文档和bboss aop框架的技术使用文档、ppt培训文档等等

11.bbossgroups-min-eclipse.zip 框架最小依赖eclipse工程demo(mvc,taglib,aop,persistent,object servializable)
mvc:包含mvc,taglib,aop/ioc最小依赖eclipse工程和测试用例
persistent:包含persistent框架最小依赖eclipse工程和测试用例
xmlserializable:包含对象xml序列化技术最小依赖eclipse工程和测试用例


bboss group project blog:
http://yin-bp.javaeye.com/

bboss group project sourceforge site url:
http://sourceforge.net/projects/bboss/files/

release version : bbossgroups-3.2
release date: 2011/06/12
-----------------------------------------------------------------------------------------------****
release futures:

************************************************bbossgroups-3.2******************************
------2011-06-10------------
o 修正SQLExecutor中泛型字段查询API中的类型转换漏洞
------2011-06-09------------
o 处理空字符串向日期类型转换后台报异常的缺陷
------2011-06-09------------
o 注解控制器可以不用添加注解@Controller也可以被框架识别了
------2011-06-8------------
o 修正不正常的提示信息,externaljndiName
o 修复只配置外部数据源的情况下,pool启动堆栈溢出问题
    java.lang.StackOverflowError
at java.lang.Thread.currentThread(Native Method)
at org.apache.xerces.util.SecuritySupport12$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at org.apache.xerces.util.SecuritySupport12.getContextClassLoader(Unknown Source)
at org.apache.xerces.util.ObjectFactory.findClassLoader(Unknown Source)
at org.apache.xerces.impl.dv.DTDDVFactory.getInstance(Unknown Source)
at org.apache.xerces.impl.dv.DTDDVFactory.getInstance(Unknown Source)
at
修改程序清单:
com.frameworkset.common.poolman.sql.PoolMan
com.frameworkset.common.poolman.util.JDBCPool
com.frameworkset.common.poolman.util.SQLManager
com.frameworkset.common.poolman.util.SQLUtil
public static JDBCPool getJDBCPoolByJNDIName(String jndiname)
        {
            JDBCPool pool = SQLUtil.getSQLManager().getPoolByJNDIName(jndiname,true);
            return pool;
        }
       
        public static JDBCPool getJDBCPoolByJNDIName(String jndiname,boolean needcheckStart)
        {
            JDBCPool pool = SQLUtil.getSQLManager().getPoolByJNDIName(jndiname,needcheckStart);
            return pool;
        }

------2011-06-06------------
o 完善responsebody注解功能,增加datatype和charset两个属性
datatype:json,xml等值,用来指出输出数据的content类型
charset:用来指出reponse响应字符编码
详细使用方法请参考测试用例
org.frameworkset.web.enumtest.EnumConvertController
org.frameworkset.web.http.converter.json.JsonController
------2011-06-04------------
o 逻辑标签可以独立于list和beaninfo标签使用,增加以下属性:
<attribute>
<name>requestKey</name>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>sessionKey</name>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>pageContextKey</name>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>parameter</name>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>actual</name>
<rtexprvalue>true</rtexprvalue>
</attribute>
通过以上属性,可以方便地制定逻辑标签的期望值,
requestKey:指定从request的attribute属性中获取实际值,
sessionKey:指定从session的attribute属性中获取实际值,
pageContextKey:指定从pageContext的attribute属性中获取实际值,
parameter:指定从request的parameter中获取实际值
actual:直接指定实际值,可以是具体的值,也可以是一个el变量
上述属性还可以和property属性结合起来获取值对象中的属性值
------2011-06-04------------
o request和session标签增加日期dateformat格式属性

------2011-06-03------------
o 修复config标签enablecontextmenu属性不能正常工作的漏洞
------2011-06-2------------
o 修复使用Column注解设置对象属性与列名映射时,导致sql语句中绑定相应的属性变量值失败的漏洞

------2011-05-28-----------
o 修复quartz引擎加载带参数方法任务时,后台抛空指针异常,这是3.1版本产生的新问题,影响新
版本的使用
o 完善任务调度管理组件org.frameworkset.task.TaskService
完善stopService方法和startService方法,解决停止引擎后,无法启动引擎的问题,增加方法stopService(boolean force)
增加方法,一边在执行public void deleteJob(String jobname, String groupid)方法后重新加载作业
public void startExecuteJob(String groupid, String jobname)
------2011-05-28------------
o 支持Map<Key,PO>类型参数绑定机制,通过这种机制可以非常方便地将表单提交过来的一个对象集合数据
根据key对应的字段值,形成Map索引对象。
使用方法如下:
public String mapbean(@MapKey("fieldName") Map<String,ListBean> beans, ModelMap model) {
String sql = "INSERT INTO LISTBEAN (" + "ID," + "FIELDNAME,"
+ "FIELDLABLE," + "FIELDTYPE," + "SORTORDER,"
+ " ISPRIMARYKEY," + "REQUIRED," + "FIELDLENGTH,"
+ "ISVALIDATED" + ")" + "VALUES"
+ "(#[id],#[fieldName],#[fieldLable],#[fieldType],#[sortorder]"
+ ",#[isprimaryKey],#[required],#[fieldLength],#[isvalidated])";
TransactionManager tm = new TransactionManager();
try {
if(beans != null)
{
List temp =  convertMaptoList( beans);

tm.begin();
SQLExecutor.delete("delete from LISTBEAN");
SQLExecutor.insertBeans(sql, temp);
tm.commit();
model.addAttribute("datas", temp);
}
} catch (Exception e) {
try {
tm.rollback();
} catch (RollbackException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
// TODO Auto-generated catch block
e.printStackTrace();
}

return "path:mapbean";
}
详情请参考测试用例:
/bboss-mvc/WebRoot/WEB-INF/bboss-mapbean.xml
------2011-05-26------------
o 新增empty和notempty两个逻辑标签使用方法和null、notnull一样
empty判断指定的字段的值是否是null,或者空串,如果条件成立,则执行标签体中的逻辑
notempty判断指定的字段的值既不是null也不是空串,则执行标签体得内容
------2011-05-24------------
o 修改null和notnull标签不能正确工作的问题
o 修复detail标签的提示信息不是很正确的问题
###################################################################################
------2011-05-20------------
o 修复引用容器datasource漏洞
o 修复通过模板启动数据源参数设置问题
o 修复一系列空指针问题
o 修复使用外部数据源时,当外部数据源是oracle时无法获取数据源的元数据问题,必须制定相应数据库的驱动程序,否则无法初始化正确的dbadapter
------2011-05-20-----------
o 增加rmi服务发布和rmi客服端组件获取功能
发布服务方法,通过 rmi:address指定发布服务的唯一地址:
<property name="rmi_service_test"
rmi:address="rmi_service_test"
class="org.frameworkset.spi.remote.rmi.RMIServiceTest"/>
服务器port的指定在rmi协议配置文件中:
/bbossaop/resources/org/frameworkset/spi/manager-rpc-rmi.xml
<!--
服务器绑定端口
-->
<property name="connection.bind.port" value="1099" />

rmi客服端组件配置和获取:
配置
<property name="rmi_service_client_test" factory-class="org.frameworkset.spi.remote.rmi.RMIUtil" factory-method="lookupService">
<construction>
<property name="servicaddress" value="//172.16.25.108:1099/rmi_service_test"/>
</construction>
</property>

获取:
BaseApplicationContext context ;
@Before
public void init()
{
context = ApplicationContext.getApplicationContext("org/frameworkset/spi/remote/rmi/rmi-client.xml");
}
@Test
public void test() throws RemoteException
{
RMIServiceTestInf test = (RMIServiceTestInf)context.getBeanObject("rmi_service_client_test");
System.out.println(test.sayHello("多多"));
}
------2011-05-17------------
o 修复sqlexecutor对日期类型timestamp处理丢失时分秒的缺陷



------2011-05-15-----------
o 改进国际化机制,每个组件容器相关的国际化文件必须和组件容器的根配置文件在同级目录,并且名称以下格式命名:
messages_en_US.properties
messages_zh_CN.properties
o 改进sql配置文件刷新机制,将3.1版本中每个sql配置文件定义一个守护进程改为单一守护进程检测机制,即所有的sql文件是否
变更的检测由一个守护进程完成,这个进程中维护一个文件队列,刷新事件配置也由manager-provider.xml文件改为:
/bbossaop/src/aop.properties中配置:
sqlfile.refresh_interval=5000
同时将sql配置文件的管理容器改为SOAFileApplicationContext,以便提升系统性能


------2011-05-11-----------
o 改进ApplicationContext,WebApplicationContext容器,分离出SOAApplicationContext、BaseApplicationContext和DefaultApplicationContext三个类型的容器,他们的职责分别为:
ApplicationContext:和原来的功能ApplicationContext的功能一致,包括基本的aop/ioc功能,远程服务,全局属性管理,拦截器,包含声明式事务管理,是BaseApplicationContext的子类
SOAApplicationContext/SOAFileApplicationContext:两个轻量级的ioc容器,包含全局属性管理,不包含远程服务,拦截器,不包含声明式事务管理,是DefaultApplicationContext的子类
DefaultApplicationContext:和ApplicationContext的区别就是不包含远程服务的功能,和远程服务相关的组件没有依赖关系,是BaseApplicationContext的子类
BaseApplicationContext:是一个抽象容器,所有的上层容器都间接或直接实现了这个容器,提供公共的基础功能。
WebApplicationContext:是mvc框架的控制器和业务组件管理容器,是DefaultApplicationContext的子类,拥有DefaultApplicationContext的所有功能。

------2011-05-11------------
o 完善restful实现机制,可以支持对控制器方法级别的restful全地址映射关系并修复了部分缺陷,3.0版本需要根据类级别和方法级别地址组合才能实现
  restful风格的功能,而且存在缺陷。
o aop框架中实现对象与xml相互转化功能

------2011-05-06------------
o 修复循环依赖机制漏洞
o 修复quartz任务调度导致模块中没有配置任何任务时,后台抛出类型转换异常
o 修复3.0版本中没有将组件实例机制定义为单例模式的漏洞,但是ppt培训教程中却明确指出该版本中的组件默认为单例模式

上述3个漏洞修复的程序为:
/bbossaop/src/org/frameworkset/spi/assemble/BeanAccembleHelper.java
/bbossaop/src/org/frameworkset/spi/assemble/Pro.java
/bbossaop/src/org/frameworkset/spi/assemble/ProviderParser.java
------2011-05-06------------
o 修复分页标签偶尔找不到vm模板文件的漏洞
上述漏洞修复的程序为:
/bboss-util/src/com/frameworkset/util/VelocityUtil.java
------2011-05-03------------
o 修复在事务环境下通过JDBCPool的方法
public TableMetaData getTableMetaDataFromDatabase(Connection con,
String tableName)
获取不到特定数据源的表元数据的问题
------2011-05-03------------
o 修复preDBUtil.preparedSelect(params, dbName, sql, offset, long)
在查询没有数据的情况下,preDBUtil.getMeta()返回的是null;


各子项目新增功能和修改功能清单请参考每个项目中的readme.txt文件。
目录
相关文章
|
2月前
|
缓存 安全 PHP
PHP中的魔术方法与对象序列化
本文将深入探讨PHP中的魔术方法,特别是与对象序列化和反序列化相关的__sleep()和__wakeup()方法。通过实例解析,帮助读者理解如何在实际应用中有效利用这些魔术方法,提高开发效率和代码质量。
|
3月前
|
XML 存储 JSON
Twaver-HTML5基础学习(19)数据容器(2)_数据序列化_XML、Json
本文介绍了Twaver HTML5中的数据序列化,包括XML和JSON格式的序列化与反序列化方法。文章通过示例代码展示了如何将DataBox中的数据序列化为XML和JSON字符串,以及如何从这些字符串中反序列化数据,重建DataBox中的对象。此外,还提到了用户自定义属性的序列化注册方法。
48 1
|
1月前
|
存储 安全 Java
Java编程中的对象序列化与反序列化
【10月更文挑战第22天】在Java的世界里,对象序列化和反序列化是数据持久化和网络传输的关键技术。本文将带你了解如何在Java中实现对象的序列化与反序列化,并探讨其背后的原理。通过实际代码示例,我们将一步步展示如何将复杂数据结构转换为字节流,以及如何将这些字节流还原为Java对象。文章还将讨论在使用序列化时应注意的安全性问题,以确保你的应用程序既高效又安全。
|
2月前
|
JSON 前端开发 数据格式
前端的全栈之路Meteor篇(五):自定义对象序列化的EJSON介绍 - 跨设备的对象传输
EJSON是Meteor框架中扩展了标准JSON的库,支持更多数据类型如`Date`、`Binary`等。它提供了序列化和反序列化功能,使客户端和服务器之间的复杂数据传输更加便捷高效。EJSON还支持自定义对象的定义和传输,通过`EJSON.addType`注册自定义类型,确保数据在两端无缝传递。
|
3月前
|
XML JavaScript 数据格式
xercesc库中文保存XML功能实现
本文介绍了如何使用xercesc库实现中文内容的XML文件保存,包括初始化平台、创建文档、添加节点和序列化输出的完整代码示例。
xercesc库中文保存XML功能实现
|
2月前
|
存储 Java
Java编程中的对象序列化与反序列化
【10月更文挑战第9天】在Java的世界里,对象序列化是连接数据持久化与网络通信的桥梁。本文将深入探讨Java对象序列化的机制、实践方法及反序列化过程,通过代码示例揭示其背后的原理。从基础概念到高级应用,我们将一步步揭开序列化技术的神秘面纱,让读者能够掌握这一强大工具,以应对数据存储和传输的挑战。
|
2月前
|
存储 安全 Java
Java编程中的对象序列化与反序列化
【10月更文挑战第3天】在Java编程的世界里,对象序列化与反序列化是实现数据持久化和网络传输的关键技术。本文将深入探讨Java序列化的原理、应用场景以及如何通过代码示例实现对象的序列化与反序列化过程。从基础概念到实践操作,我们将一步步揭示这一技术的魅力所在。
|
2月前
|
JSON 缓存 NoSQL
Redis 在线查看序列化对象技术详解
Redis 在线查看序列化对象技术详解
37 2
|
1月前
|
存储 缓存 NoSQL
一篇搞懂!Java对象序列化与反序列化的底层逻辑
本文介绍了Java中的序列化与反序列化,包括基本概念、应用场景、实现方式及注意事项。序列化是将对象转换为字节流,便于存储和传输;反序列化则是将字节流还原为对象。文中详细讲解了实现序列化的步骤,以及常见的反序列化失败原因和最佳实践。通过实例和代码示例,帮助读者更好地理解和应用这一重要技术。
29 0
|
3月前
|
存储 Java 开发者
Java编程中的对象序列化与反序列化
【9月更文挑战第20天】在本文中,我们将探索Java编程中的一个核心概念——对象序列化与反序列化。通过简单易懂的语言和直观的代码示例,你将学会如何将对象状态保存为字节流,以及如何从字节流恢复对象状态。这不仅有助于理解Java中的I/O机制,还能提升你的数据持久化能力。准备好让你的Java技能更上一层楼了吗?让我们开始吧!