Skip to end of metadata
Go to start of metadata

概述

BDF的应用目标是基于J2EE的B/S项目,所以只要您是要做的项目是J2EE架构的B/S项目,同时又打算使用dorado7,那么就可以采用BDF发行包快速搭建一个包含BDF各个功能模块的dorado7项目。

要配置一个包含BDF的dorado7应用,那么添加BDF发行包下的com.bstek.bdf.corecom.bstek.bdf.core.dorado7两个模块是必须的。

BDF发行包中包含若干个目录,每个目录分别表示各个不同模块,比如com.bstek.bdf.security就表示BDF的安全模块,在这些模块当中,有的需要管理界面,BDF提供了基于Dorado7的管理页面,这些页面则放在以dorado7结尾的模块当中,比如安全模块的管理界面所在目录就是com.bstek.bdf.security.dorado7;在后续的叫法当中,我们将省略com.bstek.bdf前缀,比如对安全模块,我们就直接称之为security模块,对于安全模块的管理界面则称之为security.dorado7模块,依次类推。

创建数据库表

首先我们需要下载BDF-[version].zip文件,将其解压并找到其中的com.bstek.bdf.core目录。接下来我们需要在com.bstek.bdf.core目录下的dbschema当中选择一个与我们目前所用数据库吻合的schema文件,创建core模块所需要的数据库表,同时还要注意,如果schema目录下有以-init结尾的SQL,也需要在创建完表结构后执行一下,这种类型SQL作用是添加一些框架所必须的初始化数据,比如登录用户等。同时再打开bdf-dorado7目录,按同样方式执行schema目录下SQL文件。

之前说过,BDF各功能模块采用的是松耦合架构模式,所以在执行完core与core.dorado7两模块下对应的SQL后,如果还需要添加其它模块,也执行对应模块的SQL即可。

模块依赖

这里有一点需要注意,BDF当中的jbpm4、report两模块在运行要依赖quartz模块,也就是说如果只添加前两个模块中之一,而不加quartz模块,那么启动时会有异常抛出,提示我们需要将quartz模块添加进来。

工程配置

与初始化数据创建完成之后,接下来就可以将发行包中com.bstek.bdf.core-[version]/bin目录下的com.bstek.bdf.core-[version].jar文件放到我们的目标web工程当中WEB-INF/lib目录中,当然因为核心模块基于spring,所以我们还需要将BDF依赖的第三方jar包我们的目标应用lib目录当中。

BDF依赖的第三方包不在BDF标准发行包当中,需要从http://bsdn.org/projects/bdf/download上另外下载,选用最新版本的压缩包:BDF-xxx-thirdparty-lib.zip


 

如果目标web工程当中已有相关jar,需要进行一些比对,防止有jar包重复,如果您要从零开始搭建一个BDF项目,那么可以先使用eclipse创建一个dynamic web project,然后把相关配置文件及jar复制到这个空的工程当中即可

另外还需要拷贝com.bstek.bdf.core.dorado7-[version]/bin目录下的com.bstek.bdf.core.dorado7-[verskion].jar到我们的目标web工程当中WEB-INF/lib目录中,接下来打开我们的web.xml文件,在其中添加如下所示的listener与filter信息:

在这段web.xml配置当中,既包含BDF部分内容,也包含dorado7所需要配置信息(BDF中包含所有dorado7相关的配置文件及jar包),同时还有一个名为contextConfigLocation 的context-param配置,熟悉Spring的人都知道,这是Spring的Context在加载的时候会尝试检查我们的web.xml当中是否有这个context-param配置,如果有则会加载其中定义的spring配置文件(比如我们这里定义的applicationContext.xml文件,一般该处用于定义加载项目当中使用到的Spring配置文件)。我们知道BDF与dorado7都采用Spring作为基础框架,但我们却没有在web.xml配置当中发现BDF或dorado7的spring配置文件信息,这是因为BDF与dorado7都采用自动装载自带的spring配置文件方式,所以我们的web.xml不用显示标明,只需要我们把相关jar包放到项目当中即可。

web.xml配置完成后,打开BDF发行包下com.bstek.bdf.core.dorado7-[version]/template/WEB-INF目录下的dorado-home目录复制到工程的WEB-INF目录下,这样就完成了一个包含BDF的dorado7项目配置。

快速配置

如果您创建是一个全新的Web工程,那么可以直接将com.bstek.bdf.core.dorado7-[version]/template目录下WEB-INF目录复制到我们的目标工程当中,覆盖新创建的WEB-INF目录即可,这样就可以免去web.xml文件的修改。

在BDF当中,各个模块都内置了很多属性,这些属性各个模块都有其默认值,同时如果在项目当中我们需要对这些属性进行修改,以达到调整BDF功能的目的,那么可以在WEB-INF/dorado-home/目录下新建一个bdf.properties文件,在这个文件当中添加需要修改的属性并重新为其赋值,便可达到覆盖BDF各模块中对应默认属性值的目的。

对于core与core.dorado7两模块,可覆盖的属性如下表所示:

属性名称

描述

bdf.globalPageTitle

BDF框架表现层页面的标题,也就是HTML当中<title>标签当中的值,这里统一为Bstek Development Framework,实际应用当中用户可以修改这个值,实现表现层页面title的统一修改

bdf.cache.terracottaServer

用于定义实现分布式缓存的terracotta server的地址(多个地址用逗号分隔),我们的core当中使用EHcache作为缓存实现,如果在集群环境下,可以通过配置这个属性,快速实现Ehcache的分布式缓存,如果这个属性值为空,那么就采用Ehcache默认的本地缓存方式

bdf.passwordEncoder

用户密码的加密方式,可以使用Spring3提供的两种类型的加密方法:MD5和SHA,它的默认值为org.springframework.security.authentication.encoding.ShaPasswordEncoder,表示采用SHA的加密方式

bdf.userPropertyToUsePasswordSalt

与bdf.passwordEncoder属性结合使用,决定采用用户表中哪字段的值作为加密的salt值,通过添加加密的salt值,进一步增加密码的安全性

bdf.core.dataSource

核心模块使用的dataSource名称,要求该dataSource是一个javax.sql.DataSource类型对象,且是Spring当中一个bean,在BDF框架当中允许用户配置多个数据源,同时可以指定多个数据源中哪一个为默认数据源,如果我们希望核心模块只使用一个特定数据源就可以通过该属性的值实现定义

bdf.instanceNameKey

BDF框架有可能在集群环境下运行,那样的话,对于集群中的每个实例,都要有一个名字,这里的bdf.instanceNameKey就是用于定义服务器实例名存储的key值,一般情况下,如果在集群环境下,可以在服务器的各个实例下面的JVM中添加一与bdf.instanceNameKey对应的JVM变量,默认情况下,bdf.instanceNameKey值为bdf.instanceName,相应的,JVM当中定义的变量名就是bdf.instanceName,值就是具体的服务器实例名

bdf.upload.preference

BDF框架中提供的公共文件上传功能,上传文件配置信息,这里的这个属性主要是配置上传文件的存储地方,文件大小限制以及文件类型限制等。默认值为"store=file:/WEB-INF/bdf/upload;maxSize=10240000;allowedTypes=",表示上传文件存储到应用的根的/WEB-INF/bdf/upload目录下,最大不能超过10240000byte,也就是10m,allowedTypes值为空,表示允许所有文件类型上传。这里需要指定的是关于上传文件存储位置的定义,有两种定义方式:一种就是默认值中以"file:"开头,表示存储到服务器某具体目录,另外一种就是存储到数据库中,如果在存储到服务器,那么这里的写法就要以"db:"开头,如果要存储到BDF_BLOB_STORE表,那么值就应该是db:blob,如果在存储到BDF_CLOB_STORE表,那么值就应该是db:clob,关于BDF_BLOB_STORE表与BDF_CLOB_STORE表区别,之前已有详细介绍

bdf.d7.urlSuffix

这个属性是用来配置BDF表现层页面URL后缀的,默认BDF表现层采用dorado7开发,所以其默认值为.d,如果在采用dorado7开头应用时,又使用bdf,同时又希望用户访问页面的后缀的URL不要以.d结尾,那么只需要修改这个属性即可。

bdf.main.welcomePage

登录后主界面工作区显示的欢迎页面,默认值为

http://www.bstek.com

,实现应用当中可以通过在bdf.properties文件当中重新定义该属性值来重设欢迎页面,如果不需要欢迎页面,只需要将该属性值设置为空即可

bdf.main.welcomeCaption

登录后主界面工作区显示的欢迎页面的Tab页的标题

bdf.upload.preference

BDF提供的公共上传界面关于上传的配置信息,默认值为store=file:/WEB-INF/uploads;maxSize=10240000;allowedTypes=.

参数说明

store存储方式,默认支持db:clob,db:blobfile:三种,
第一种是存储到bdf_clob_store数据库表;
第二种是存储到bdf_blob_store数据库表,
第三种是存储到具体的文件目录中,如果是以file:/开头(类unix系统以根目录以/开头),则会先判断路径是否存在,如果不存在就认为是当前应用的相对路径。

数据源配置

在BDF当中默认连接的是其中自带的hsql数据库,这个数据库的好处是随应用一起启动,对于我们测试演示比较有意义,但对于项目,我们还是要采用其中数据库。

要修改数据源可以打开工程下WEB-INF/dorado-home目录下的datasources.xml文件,在这个文件当中不仅可修改数据源连接信息,还可以修改事务配置等,BDF中关于数据源与事务可讨论的内容很多,如果您需要详细了解可以参考数据源配置与切换一节介绍。

常见配置错误以及解决建议

刚开始学习使用时,建议将发行包中各个模块下的bdf-*.jar以及对应模块lib目录下的第三方jar文件全部拷贝到当前工程中的lib下,这样就基本可以避免以下的问题。

  • org.hsqldb.HsqlException: Database does not exists: /bdf-db-data

拷贝BDF依赖第三方包中bdf-dorado7/bin/lib下的bdf-db-data.jar到当前项目的lib下;

  • java.lang.NoClassDefFoundError: javax/transaction/TransactionManager

拷贝jbpm/bin/lib下的jta.jar到当前项目的lib下;

  • java.lang.NoClassDefFoundError: com/google/code/kaptcha/util/Config

拷贝bdf-dorado7/bin/lib下的kaptcha-[version].jar到当前项目的lib下;

  • java.lang.NoClassDefFoundError: com/bstek/dorado/desktop/Taskbar

拷贝Dorado7 Updater所下载的dorado-desktop-[version].jar到当前项目的lib下;

  • 添加webservice模块后,工程启动报异常:Caused by: java.lang.LinkageError: JAXB 2.0 API is being loaded from the bootstrap classloader
    产生此异常的原因是某些JDK下已包含jaxb的api,所以如果我们的项目当中有jaxb的jar包时就可能产生上述问题,解决办法就是将项目中的jaxb-api.jar以及jaxb-impl.jar这两个jar包删除。

  • com.bstek.dorado.web.resolver.PageNotFoundException: C:\Users\Administrator\workspace\sample\src\com\bstek\bdf\d7\commons\ErrorPage.view.xml (系统找不到指定的路径。)

修改web.xml配置(注意其中classpath的配置):

  • java.lang.ClassNotFoundException: com.bstek.bdf.security.access.intercept.SecurityFilterProxy

如果不想用BDF中的Security模块,或刚开始学习时不使用这个功能,可以直接删除web.xml中的如下filter设置:

或按照标准的模块添加方式添加Security模块

  • java.lang.ClassNotFoundException: org.springframework.ws.transport.http.MessageDispatcherServlet

如果刚开始学习时不使用这个功能,可以直接删除web.xml中的如下servlet设置:

Labels
  • No labels
  1. Anonymous

    有没有BDF的Sample示例代码?