高效 Java Web 应用开发框架 JessMA v3.2.2 正式发布

伤神小怪兽
 伤神小怪兽
发布于 2013年08月14日
收藏 79


    JessMA(原名:Portal-Basic)是一套功能完备的高性能 Full-Stack Web 应用开发框架,内置可扩展的 MVC Web 基础架构和 DAO 数据库访问组件(内部已提供了 Hibernate、MyBatis 与 JDBC DAO 组件),集成了 Action 拦截、Form / Dao / Spring Bean 装配、国际化、文件上传下载和页面静态化等基础 Web 应用组件,提供高效灵活的纯 Jsp/Servlet API 编程模型,可完美整合 Spring,支持 Action Convention,能快速开发传统风格和 RESTful 风格应用程序,文档和示例完善,非常容易学习。

    JessMA 官方网站:http://www.jessma.org
    JessMA 下载地址:https://code.google.com/p/portal-basic/
    JessMA 在线示例:http://demo.jessma.org
    JessMA 在线 API 文档:http://www.jessma.org/doc 

    JessMA 在设计之初就充分注重功能、性能与使用体验。JessMA 主要特点:

    ★ 功能全面:内置稳定高效的 MVC 基础架构和 DAO 框架,支持 Action 拦截、Form Bean / Dao Bean / Spring Bean 装配和声明式事务,提供国际化、文件上传下载、缓存和页面静态化等常用Web组件,能满足绝大部分 Web 应用的需要。 
    ★ 高度扩展:JessMA 通过的 plug-in 机制可以灵活扩展,JessMA 发布包中自带的 jessma-ext-rest 和 jessma-ext-spring 均以插件的形式提供,用户可根据需要加载或卸载这些插件。应用程序开发者也可以根据实际需要编写自定义插件来扩展 JessMA。 
    ★ 强大的整合能力:JessMA 是一个 Full-Stack 框架,同时也是一个开放式框架,可以以非常简单的方式整合第三方组件。本开发手册会详细阐述如何在 JessMA 中整合 Freemarker、 Velocity 、 Urlrewrite、 EHCache-Web 、 Spring 、 Hibernate 和 Mybaits 等常用框架和组件。 
    ★ 高性能:性能要求是 JessMA 的硬性指标,从每个模块的设计到每行代码的实现都力求简洁高效。另外,Portal-Basi c并没有对 JSP/Servet API 进行过多封装,开发者仍然使用 JSP/Servet API 开发应用程序,没有过多的迂回,性能得到保证。 
    ★ 优秀的使用体验:JessMA 的设计目标之一是提供良好的开发体验,尽量减少应用程序开发者的工作,API 的设计力求简单、完整、明确。同时,JessMA 为应用开发提供了大量 Util 工具,用来处理应用程序开发过程中通常会遇到的一般性问题,进一步减少应用程序开发者的工作负担。 
    ★ 平缓的学习曲线:学习使用 JessMA 只需掌握一定的 Core Java 与 JSP/Servlet 知识,本开发手册会循序渐进阐述每个知识点,每个知识点都会结合完整的示例进行讲述,知识点之间前后呼应,确保学习者在学习时温故知新,融会贯通。 
    ★ 完善的技术支持:除了提供完善的开发手册和示例代码以外,还提供博客和 QQ 群用于解答使用 JessMA 过程中碰到的所有问题,也可以访问 JessMA 官方网站了解更多资讯。

    JessMA 总体架构

     JessMA主要包括以下5个部分:

    ● 基础应用框架

    基础应用框架加载应用程序配置文件(默认:app-config.xml),监听应用程序的生命周期事件,并向上层应用发送应用程序启动和关闭通知,应用程序可以处理这些通知进行额外的初始化或清理工作。基础应用框架在org.jessma.app包中是实现。

    ● MVC框架

     MVC框架加载MVC配置文件(默认:mvc-config.xml),通过前端控制器ActionDispatcher接收和解析所有的客户HTTP请求,然后交由相应的Action进行处理,最后生成相应的视图返回给客户端。MVC框架在org.jessma.mvc包中实现。

    ● DAO框架

    DAO框架封装了所有的数据库访问操作,内置JDBC、Hibernate和MyBaits数据库访问组件以及Druid、Proxool、JNDI等连接池。DAO框架是可扩展的,用户可以通过扩展org.jessma.dao.AbstractFacade和org.jessma.dao.AbstractSessionMgr实现自己的数据库访问组件。DAO框架在以下包中实现:
    ▪ org.jessma.dao
    ▪ org.jessma.dao.hbn
    ▪ org.jessma.dao.jdbc
    ▪ org.jessma.dao.mybatis
    ▪ org.jessma.ext.dao

    ● 公共组件

    公共组件提供多种通用功能帮助类(如:字符串处理、类型转换、分页算法、压缩/解压、加解密、邮件发送等),这些类与框架无关,可在任何应用程序中使用。公共组件在以下包中实现:
    ▪ org.jessma.util
    ▪ org.jessma.util.archive
    ▪ org.jessma.util.cache
    ▪ org.jessma.util.http
    ▪ org.jessma.util.mail
    ▪ org.jessma.dao(DAO框架也可由看作为一个相对较大的公共组件)

    ● 扩展插件

    扩展差插件是基于JessMA核心框架基础上的功能延伸,不是JessMA的必要组件。可由应用程序开发人员根据需要自行定制。JessMA发行包中也自带了一些扩展插件(如:jessma-ext-spring和jessma-ext-rest)。

    JessMA 应用程序依赖关系

    基础应用框架、MVC框架和DAO框架都依赖于公共组件,其中基础应用框架同时依赖于DAO框架,因此,MVC框架和DAO框架能脱离JessMA单独使用(当然,要附带上公共组件)。例如:可以把MVC框架和DAO框架用于JessMA之外的其它Web项目;也可以把DAO框架用于非Web项目(如:Swing / SWT桌面应用)。 


JessMA 3.2.2 更新:

(注:本次更新的主要内容是升级 DAO 组件)

1、org.jessma.dao.hbn.HibernateSessionMgr 支持自动扫描实体对象

1) 实体对象用 @Entity 注解取代 *.hbm.xml 映射文件(同时也不必在 hibernate.cfg.xml 中配置 ‘mapping’)
2) app-config.xml 中配置 HibernateSessionMgr 时,用第二个可选参数以正则表达式的格式指定实体对象所在包

(例如:实体对象位于 ‘com.bruce.<任意子包>.model’ 中)

<manager name="mgr-1" class="org.jessma.dao.hbn.HibernateSessionMgr">
<initialize-args>
<arg></arg>
<arg>com\.bruce\..+\.model</arg>
</initialize-args>
</manager>

2、org.jessma.dao.mybatis.MyBatisSessionMgr 支持自动扫描 SQL Mapper 接口

1) 不必在 mybatis.cfg.xml 中配置 ‘mapper’
2) app-config.xml 中配置 MyBatisSessionMgr 时,用第三个可选参数以正则表达式的格式指定 SQL Mapper 接口所在包

(例如:SQL Mapper 接口位于 ‘com.bruce.<任意子包>.mapper’ 中)

<manager name="mgr-2" class="org.jessma.dao.mybatis.MyBatisSessionMgr">
<initialize-args>
<arg></arg>
<arg></arg>
<arg>com\.bruce\..+\.mapper</arg>
</initialize-args>
</manager>

3、所有 JDBC Session Manager 均取消 ‘isXml’ 配置参数,改为根据配置文件的扩展名自动识别配置文件类型

1) 受影响的 Session Manager:DruidSessionMgr、JdbcSessionMgr、JndiSessionMgr、ProxoolSessionMgr

4、org.jessma.dao.FacadeProxy 增加方法 executeCustomTransaction(...) 支持执行自定义事务

1) JessMA 的事务是 DAO 层事务,也就是说当外部调用某个 DAO 方法时,该方法作为一个事务单元执行。 但在一些特殊情形下可能需要在 DAO 外部执行 Service 层事务(例如:事务需要调用多个 DAO 对象的多个方法), 此时需要创建一个自定义事务(CustomTransaction),并调用 FacadeProxy 的 executeCustomTransaction(...) 来执行该自定义事务。
2) 增加自定义事务相关接口:
A) CustomTransaction  : 自定义事务基接口
B) JdbcTransaction     : JDBC 自定义事务接口
C) MyBatisTransaction  : MyBatis自定义事务接口
D) HibernateTransaction : Hibernate 自定义事务接口

(示例)

public static void serviceMethod()
{
// 获取 SessionMgr
HibernateSessionMgr mgr = (HibernateSessionMgr)AppConfig.getSessionManager("mgr-1");
// 执行自定义事务
FacadeProxy.executeCustomTransaction(mgr, new HibernateTransaction(){
// 实现自定义事务方法
@Override
public void execute(HibernateSessionMgr mgr) throws DAOException
{
// 创建 dao1 (不能使用 FacadeProxy 创建 DAO 对象)
MyDaoA dao1 = new MyDaoA(mgr);
// 创建 dao2 (不能使用 FacadeProxy 创建 DAO 对象)
MyDaoB dao2 = new MyDaoB(mgr);

// 执行 DAO 方法
dao1.methodXxx();
dao2.methodYyy();
dao1.methodZzz();
dao2.methodNnn();
}});
}

5、扩大 mvc-confing.xml 中 <result-path-aliases> 别名配置应用范围

1) 支持在 <result-path-aliases> 配置中引用前面定义的别名

(示例:下面配置中 ${index} 的实际路径为 '/jsp/test/index.jsp')

<result-path-aliases>
<alias name="jsp_base" path="/jsp/test"/>
<alias name="index" path="${jsp_base}/index.jsp"/>
</result-path-aliases>

2) 允许在 <action-convention> 的 'dispatch-file-path' 和 'dispatch-file-path' 配置中使用别名

(示例:下面配置中 'dispatch-file-path' 的实际路径为 '/jsp')

<action-convention
dispatch-file-path="${ac_path}"
<!-- 其它配置(略)... -->
/>
<result-path-aliases>
<alias name="ac_path" path="/jsp"/>
</result-path-aliases>

6、其它更新

1) 修改 org.jessma.util.PackageHelper,加入包扫描相关方法
2) 依赖库 “jessma-lib” 中的所有 jar 包更新到最新版本
3) 更新开发手册《JessMA 高效 Java MVC & REST 开发框架 (v3.2.2)》
4) 增加一个 JessMA 项目模板工程:HelloJessMA

7、应用程序升级说明

1) JessMA 3.2.1 升级到 JessMA 3.2.2:完全兼容,可直接升级
2) Portal-Basic 3.1.1 及更早版本升级到 JessMA 3.2.2:(参考 JessMA 3.2.1 的升级说明)

8、JessMA 3.2.1 历史更新《JessMA 3.2.1 Release》

 

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 OSCHINA 社区 [http://www.oschina.net]
本文标题:高效 Java Web 应用开发框架 JessMA v3.2.2 正式发布
加载中

最新评论(24

伤神小怪兽
伤神小怪兽

引用来自“开源狂人”的评论

引用来自“伤神小怪兽”的评论

引用来自“开源狂人”的评论

好多javaweb国产框架,建议osc搞一个国产javaweb框架的综合评测。否则没人主动尝试使用。

好主意,注意是“测评”,而不是“投票”,一投票就不客观了。

投票出来的开源产品,扪心自问,你们自己信吗。前一阵子的刷票门让很多牛人秀了底线。

正解,投票就是比谁的水军多
开源狂人
开源狂人

引用来自“伤神小怪兽”的评论

引用来自“开源狂人”的评论

好多javaweb国产框架,建议osc搞一个国产javaweb框架的综合评测。否则没人主动尝试使用。

好主意,注意是“测评”,而不是“投票”,一投票就不客观了。

投票出来的开源产品,扪心自问,你们自己信吗。前一阵子的刷票门让很多牛人秀了底线。
伤神小怪兽
伤神小怪兽

引用来自“开源狂人”的评论

好多javaweb国产框架,建议osc搞一个国产javaweb框架的综合评测。否则没人主动尝试使用。

好主意,注意是“测评”,而不是“投票”,一投票就不客观了。
开源狂人
开源狂人
好多javaweb国产框架,建议osc搞一个国产javaweb框架的综合评测。否则没人主动尝试使用。
伤神小怪兽
伤神小怪兽

引用来自“yangyining”的评论

关注下

欢迎下载试用~
简洛-默
简洛-默
关注下
伤神小怪兽
伤神小怪兽

引用来自“zcool321”的评论

现在事情比较多 有机会下来研究研究~

希望对你有帮助~
伤神小怪兽
伤神小怪兽

引用来自“hanzhankang”的评论

我会持续关注的!

谢谢~ 欢迎提出建议
伤神小怪兽
伤神小怪兽

引用来自“weizhong”的评论

支持部署到BAE吗?

说对了,demo.jessma.org 就是部署在 BAE 中。
Fly的狐狸
Fly的狐狸
现在事情比较多 有机会下来研究研究~
返回顶部
顶部