JFox(J2EE应用服务器开源项目)

JFoxSOAF(J2EE面向服务的应用框架)


(by huihoo.org JFox项目组 Allen整理)

初稿:Frank Ling(f.ling@inprosystem.com)
补充,建议:拉尔夫, Huang Gang, founder_chen, JacobMee, Young Yang提出了很多有价值的意见建议

目前的现状:市场有有很多的商业的开源的J2EE 应用框架解决方案,我们的JFoxAF要做好与它们的兼容,或能将他们很容易的插入我们的JFoxAF的框架体系,其思路可采用eclipse的集大成的做法。将其他的方案,我们做个封装让他们可插入JFoxAF的系统框架中,这样可保证大家可以继续使用这些框架。

在此,感谢提出Huang Gang 提出的patter-oriented framework和domain-specific framework的观点

patter-oriented framework的用户应是J2EE应用编程者,要求熟悉design patter,必须手工实现所有业务逻辑;而domain-specific framework的用户是系统分析员,要求熟悉领域知识,业务逻辑可复用,特殊的业务逻辑需要编程员手工实现。

我们可分阶段来实现两种类型的框架,对应两个版本:JFoxAF1.0,JFoxAF2.0

第一阶段实现patter-oriented framework,也就是我们通常意义上的J2EE应用框架 第二阶段实现domain-specific framework,我们可从ERP/CRM/SCM入手,为这些应用提供行业插件,如给CRM提供销售,服务,市场等基础插件(完成与应用服务器之间的一些数据,逻辑层面的交互,具体的CRM功能实现放在Link3项目中),这些插件最终可能会以Mbean的形式出现,最终通过JMX框架进行统一管理。



JFoxAF的目标是做为一个比较通用的框架结构,不仅适用于JFox,同样也适用其他的J2EE应用服务器平台:如Jboss,JonAS,WebLogic等

另外,我们的JFoxAF要实现和遵循的标准有:

1.JSTL :JSP Standard Tag Library, http://java.sun.com/products/jsp/jstl/index.html
http://java.sun.com/webservices/docs/1.0/tutorial/doc/JSTL.html

包含的库有:
Core: XML: Internationalization: SQL: Functions
前缀分别为:c , x , fmt , sql , fn

taglib http://www.orionserver.com/taglibtut/

2. J2EE的蓝图,Core J2EE Pattern Catalog

http://java.sun.com/blueprints/corej2eepatterns/Patterns/index.html

Presentation Tier Patterns  
Pattern Name JFoxAF对应实现
Front Controller JSP/Servlet Framework
Composite View JSP Templates
Service To Workers Worker Beans
View Helper Worker Beans, ValueObject Cache, Base Translators
Intercepting Filter Hook Infrastructure


Business Tier Patterns  
Pattern Name JFoxAF对应实现
Value Object Framework ValueObject
Business Delegate Proxy Facade
Session Facade Session FacadeEntity Beans (BMP, CMP/CMR 2.0)
Value List Handler ValueObject List Proxy


Data Tier Patterns  
Pattern Name JFoxAF对应实现
Data Access Objects FrameworkDAOFactory,FrameworkDatabaseDAO
CMP/CMR 2.0 Automatic Generated Entity Beans, deployment descriptors


Integration Tier Patterns  
Pattern Name JFoxAF对应实现
Service Activator JMS Command/Task Architecture
EJB Service Locator Automatic Generated EJB Utility classes, JNDI Names
JMS Queue and Topic Service Location JMSImpl, JMSQueueImpl, JMSTopicImpl, ConnectionPoolManager


3.JFoxAF 框架结构



JFoxAF功能概述

表现层:

接口:JFoxAF_View

可能采用的方式:封装以下几种方式:
1.Apache Struts, action和jsp通过session的实现.
2.JSF, Apache Struts的升级版
3.Jnet, .Net的Java实现.
4.Turbine是很好的Servlet Framework,Turbine是否应该集成在这个层次.?

提供统一接口。



或开发一套自己的表现方式,但投入比较大。

逻辑层:
接口:JFoxAF_Model
1. 角色,用户/组权限
A rule engine may be viewed as a sophisticated if/then statement interpreter

2. 文档管理
实现信息的采、编、发、管理。

3. 工作流,实现流程在不同角色间的跳转
The automation of a business process, in whole or part, during which documents, information or tasks are passed from one participant to another for action, according to a set of procedural rules

数据层:

接口:JFoxAF_Data

实现和封装以下机制:EJB CMP and BMP,JDO,J2EE DAO

具体实现的功能应包括:
1.Data Source Pooling Management
2.Transaction Management
3.O-R Mapping.
4.对数据对象的调用.

服务(其他实现):(这部分建议在JFox中核心中实现)

1. JMX管理所有服务

2. 资源池:数据库连接池,JMS,LDAP
(1) LDAP
(2) DB (Oracle, DB2, mySQL etc), ConnectionPool Manager
(3) JMS

3. 安全管理
(1) Role-based access control
(2) Database driven security
(3) LDAP driven security

4. 日志服务

(1) Log4j
(2) JMS based logging
(3) JDK1.4 logging

5. Hook/Event机制





6. ValueObject 缓冲(Cache)
7. JMS/MDB/Command/Task 调度机制
Provide pre-define task service at run-time

8. 配置管理
Property file driven configuration (xml property file, etc )
。。。

以上大部分功能已经在JFoxKNL实现,核心框架基于面向服务的编程思想构建
http://www.huihoo.org/jfox/jfoxknl/index.html

一些框架实现

Vendors Product Latest Version Open Source
SunMicrosystems
www.sun.com
SUN ONE Application Framework (J2EE Application Framework) V2.0 N
RealMethods Inc
www.realmethods.com
RealMethods Framework(J2EE Application Framework) V2.1.1 N
NextApp Inc
www.nextapp.com
Echo(Web Application Framework) V1.0 N
Qbizm Technologies, Inc
www.qbizm.com
HyperQbs(Presentation Framework) V2.0 N
Applied Knowledge
www.aki.com
Kona(Java/J2EE/JSP Framework and Tag Library) V1.0 N
Apache
www.apache.org
Struts(MVC framework) V1.1 Y
Jcorporate
www.jcorporate.com
Expresso(Struts-based Java Application Framework ) V5.0 Y
Open Symphony
www.opensymphony.com
WebWork(Web Application Framework) V1.3 Y
SalmonLLC
www.salmonllc.com
SOFIA (Well known JADE)(Open Framework for Internet Applications) V1.3 Y
Enhydra
www.enhydra.org
Barracuda(Presentation MVC Framework) V1.1.1 Y


如果想实现J2EE Application Framework, 那么让我们先看看J2EE Core Pattern,


J2EE Core Pattern 明确的分为数据层,逻辑层和显示层.

数据层: Data Access Object, Service Activator

逻辑层: Session Fa?ade, Service Locator, Transfer Object Assembler, Vaue List Handler, Composite Entity and Transfer Object.

显示层: Business Delegate, Service To Worker, Dispatcher View, Front Controller, View Helper, Composite View and Intercepting Filter.

意见,建议

一些意见,建议的整理

Jacob Mee的一些建议:
1. 简易类Struct实现(Struct没用的东西太多,TagLib应全部去掉).
2. 若不是我们的类Struct实现,用能和Struct无缝连接.
3. 可配置主流JDO(Castor,OJB等)
4. VO生成器实现(或者搞个Opensource的)
5. 调试功能增强(HTTP,JDO,ACTION等各处调试信息输出)
6. EJB功能接口扩展(EVENT,可快速支持EJB)
=============下列为其他需要使用组件
7. Cache.
8. Pool
9. Logger
10. Configuation.