iBase4j是一个Java分布式开发平台,整合了目前Java开发常用的开发框架,官网上介绍如下:
- iBase4J是Java语言的分布式系统架构。 使用Spring整合开源框架。
- 使用Maven对项目进行模块化管理,提高项目的易开发性、扩展性。
- 系统包括5个子系统:公共功能、系统管理Service、系统管理Web、业务Service、业务Web。
- 公共功能:公共功能(AOP、缓存、基类、调度等等)、公共配置、工具类。
- 系统管理:包括用户管理、权限管理、数据字典、系统参数管理等等。
- 业务相关:您的业务开发。
- 可以无限的扩展子系统,子系统之间使用Dubbo或MQ进行通信。
项目地址: https://github.com/iBase4J/iBase4J
码云地址: https://gitee.com/iBase4J/iBase4J
参考资料: http://blog.csdn.net/u012225679/article/details/73849357
搭建iBase4j项目需要用到的工具如下:
- Intellij IDEA 2017.3
- nginx 1.13.9
- mysql 5.7.21
- zooKeeper 3.4.10
- redis 3.2.1
- activemq 5.15.3
- maven 3.3.3
1.项目结构
首先下载iBase4j项目,解压后的文件结构如下
iBase4J是一个分布式系统架构,每个模块都是一个单独的系统,每个系统可以发布多个service,不同的web间使用相同的redis缓存保证session相同,目前项目下有8个子项目:iBase4J-Common、iBase4J-SYS-Facade、iBase4J-SYS-Service、iBase4J-SYS-Web、iBase4J-Biz-Facade、iBase4J-Biz-Service、iBase4J-Biz-Web、iBase4J-UI。
- iBase4J-Common是通用配置和工具类,已打成jar包;
- iBase4J-SYS-Facade是iBase4J-SYS-Service和iBase4J-SYS-Web交互需要的façade和model;iBase4J-SYS-Service是系统管理相关的数据库操作服务;
- iBase4J-SYS-Web是连接UI和iBase4J-SYS-Service的桥梁。
- iBase4J-SYS-Web和iBase4J-SYS-Service之间通过dubbo或MQ交互。Web和Service可以创建多个,Web使用相同的spring-session命名空间并注册到相同的redis服务实现session共享,Web通过使用不同的参数调用统一的provider.excute方法实现调用不同的service方法。
- UI是前后端分离的,需要使用nginx反向代理。通过ajax异步请求获取数据;多系统 通过不同前缀 分发到不同web;
- iBase4J-SYS-Service使用Druid连接数据库,可以监控sql执行情况,访问地址:service地址:service端口/druid;
- 使用AOP实现读写数据库切换,使用Mybatis持久化框架,使用PageHelper辅助分页,使用spring注解把数据缓存到redis;iBase4J-SYS-Web使用Spring MVC框架管理控制器;使用Shiro辅助管理权限,权限严格控制到给个URL请求。
- 调度管理,在这里只有调度的声明,可以删除、修改、暂停、启动、执行。调度的实现可以在别的任意模块,只需用dubbo暴露服务即可。调度支持集群模式。
- UI目前计划有3个版本,已开发的只有angularJS版不同UI的菜单不同,所以请根据需要执行对应的SQL菜单;
- iBase4J-Biz-Facade、iBase4J-Biz-Service、iBase4J-Biz-Web为扩展业务功能项目。
- SQL文件见项目中sqls目录;
- 权限控制:
- 菜单权限:可以直接配置用户菜单,也可以通过配置角色配用户菜单;sys_user_role配置用户角色,sys_role_menu配置角色菜单/权限;操作类权限(增删改等)配置为不显示的菜单;
- 代码中权限的控制,如图
2.环境搭建
首先需要初始化数据库,新建一个ibase4j数据库,将项目文件夹sqls下面的三个sql脚本分别导入数据库中,导入成功之后数据库将有如下一下数据表
修改service层项目下的resource/config/jdbc.properties数据库配置文件:
数据库密码使用DES加密方法加密,SecurityUtil.encryptDes(“密码”, ${db.key}.getBytes());
可以使用SecurityUtil.encryptDes方法加密密码,db.key 或 druid.key在jdbc.properties中配置
3.运行后端项目
1) 分别启动 zooKeeper, redis, activemq后台服务
2) 在IDEA中添加如下两个maven任务,分别用来启动 sys-service, sys-web项目
clean package -P build tomcat7:run-war -f pom-sys-service-server.xml
clean package -P build tomcat7:run-war -f pom-sys-web-server.xml
|
3) 然后先启动 sys-service项目,完成后启动sys-web项目,启动成功之后访问http://localhost:8088/swagger-ui.html可以看到如下swagger-ui.html的restful接口
4) 访问durid http://localhost:8085/druid 查看SQL执行情况(用户密码:druid/druid):
4.运行前端项目
目前iBase4j的前端项目是使用AngularJS v1.5.6开发的,并且使用nginx方向代理静态页面的形式运行,为了启动iBase4j的前端项目需要配置nginx,
在nginx的安装目录下找到conf文件夹下的nginx.conf文件,按照如下所示配置代理的静态页面的地址
具体内容如下:
server {
listen 8002;
server_name localhost;
location / {
root D:\IdeaProjects\iBase4J\iBase4J-UI\iBase4J-UI-AngularJS;
index index.html index.htm;
# 用户浏览器端的缓存设置
location ~* \.(css|js|jpg|jpeg|gif|png|swf|htm|html|json|xml|svg|woff|ttf|eot|map|ico)$ {
expires 1h;
if
(-f $request_filename) {
break
;
}
}
# 动态页面,交给tomcat处理
if
( !-e $request_filename) {
proxy_pass http:
//127.0.0.1:8088;
}
}
}
|
启动nginx服务器, nginx.exe -c .\conf\nginx.conf 然后访问 http://localhost:8002 地址就可以看到iBase4j的前端页面了,用户名密码:admin/111111