导航转换
首页
功件树
功件
功件规范
登录
注册
首页
功件树
主干:Jamobo
发布:Jamobo_v1.0.10.0
赞赏
推荐
收藏
功件列表
文件列表
提交列表
问题列表
帮助文档
遵循规范:
FunctreeX
,
使用JavaJsp开发、基于MongoDB的简单Web应用程序架构。
提交:171
发布:0
开发者:2
排序:
名称
更新时间
安东
: 修改文件Jamobo_v1.0.10.0/README.md
最后提交:
8年前
src
修改文件Jamobo/src/f/setup/FUNC.json
(19个文件:69.2 KB)8年前
web
修改文件Jamobo/web/f/xpage/FUNC.json
(61个文件:3.9 MB)8年前
README.md
修改文件Jamobo_v1.0.10.0/README.md
(8.0 KB)8年前
Jamobo_v1.0.10.0 / README.md
#### 概况 本项目为Web项目,使用Java/Jsp+MongoDB+Bootstrap开发。 用户访问本项目部署的网站时,通过网站根目录中的index.jsp来判断是否进行过初始化安装配置;如果未进行初始化配置,则进入“安装配置页”,否则进入网站“首页”。 本项目为第一个基于FunctreeX功件规范,使用Java语言开发功件树和功件的范例。 本项目JDK版本为8.0以上,MongoDB版本为3.2以上,Bootstrap版本为3.3.5,默认MongoDB数据库配置如下:dbHost = "localhost", dbPort = 27017, dbName = "jamobo", dbUser = "jamoboUser", dbPassword = "jamoboPwd",依赖Java包如下:commons-fileupload-1.3.1.jar、commons-io-2.5.jar、mail.jar、mongo-java-driver-3.2.2.jar、fastjson-1.2.20.jar。 MongoDB启动时,需要增加“auth”选项来开启用户认证;在开启“auth”前,使用如下示例在MongoDB中创建用户: ```shell use admin db.createUser({user:'userAdmin',pwd:'adminPwd',roles:[{role:'userAdminAnyDatabase',db:'admin'}]}) use jamobo db.createUser({user:'jamoboUser',pwd:'jamoboPwd',roles:[{role:'readWrite',db:'jamobo'}]}) ``` #### 功件位置 根据FunctreeX功件规范要求,创建的所有功件相关的程序文件均位于f目录(包)下;上述依赖Jar包,则根据Servlet应用要求放置于WEB-INF/lib目录。 #### 功件说明 项目中的X功件为公共类,包含数据库访问以及初始化配置信息,同时其还是一个ServletFilter,处理URLRewrite和网页字符集设置相关功能。 Authorization功件用于用户的授权管理相关功能,包括用户是否登录的检查、用户登录成功后的授权信息产生、获取和清除,用户授权信息保存在内存Cache中,所以本项目适合于单机部署,未来通过升级Authorization功件可适用于分布式部署。 项目中的网页类型功件之间的调用链接,即仅通过功件主文件互相访问,只有一个请求参数x,参数值为一个JSON格式的字符串,例如: - 访问“提示页”功件的链接 ```html AlertPage?x={'$a':{alertMessage:'提示信息。'}} ``` - 访问“用户页”功件中的注册页面的链接 ```html UserPage?x={'$a':{}} ``` - 访问“用户页”功件中的登录页面的链接 ```html UserPage?x={'$f':{'$n':'Login'}} ``` - 访问“用户页”功件中的忘记密码页面的链接 ```html UserPage?x={'$f':{'$n':'ForgotPassword'}} ``` - 访问“用户页”功件中的用户列表页面的链接 ```html UserPage?x={'$b':{}} ``` 网页中的x参数的处理,位于“页头(PageHeader)”功件中,页头功件为所有显示网页功件的包含页,包含了页面公共导航条的处理和显示。 页尾功件(PageFooter)为所有显示网页功件的包含页,包含了网站版权信息、联系我们等。 #### 使用Docker安装本项目程序说明 下面以CentOS7.2为例,使用Docker安装本网站应用程序的步骤进行简要说明: - 安装Docker: - 使用yum命令安装Docker: ```shell yum install docker ``` - 将Docker设为开启自启动服务: ```shell systemctl enable docker.service ``` 通过下列方法启动和停止Docker服务: ```shell systemctl start docker.service systemctl stop docker.service ``` - 查看Docker版本、信息和帮助: ```shell docker version docker info docker help ``` - 下载Tomcat、MongoDB镜像: - 下载镜像: ```shell docker pull functree/mongodb:3.4.2 docker pull functree/tomcat:8-jre8 ``` - 查看镜像: ```shell docker images ``` - 创建Tomcat、MongoDB容器: - 首先在本地建立目录:/data/mongodb/db,作为MongoDB数据库存储地址,然后创建并启动临时MongoDB容器,此容器在退出后会自动删除: ```shell docker run --rm --name mongodb -p 127.0.0.1:27017:27017 -v /data/mongodb/db:/data/db functree/mongodb:3.4.2 ``` - 保持上述临时MongoDB容器的启动窗口,另开一个终端窗口,使用下列命令进入临时MongoDB容器: ```shell docker exec -it mongodb /bin/bash ``` - 在临时MongoDB容器中,键入下列命令,进入MongoDB: ```shell mongo ``` - 进入MongoDB后,在MongoDB中键入下列命令,创建两个MongoDB账号: ```shell use admin db.createUser({user:'userAdmin',pwd:'adminPwd',roles:[{role:'userAdminAnyDatabase',db:'admin'}]}) use jamobo db.createUser({user:'jamoboUser',pwd:'jamoboPwd',roles:[{role:'readWrite',db:'jamobo'}]}) ``` - 键入exit退出MongoDB,再次键入exit退出上述临时MongoDB容器,此容器将自动停止并删除。然后通过下列命令创建并启动名称为“mongodb”的MongoDB容器,作为Tomcat的连接数据库: ```shell docker run -d --name mongodb -p 127.0.0.1:27017:27017 -v /data/mongodb/db:/data/db functree/mongodb:3.4.2 --auth ``` - 在本地建立目录:/usr/local/tomcat/webapps,作为Tomcat的Web程序部署地址,然后创建并启动Tomcat容器: ```shell docker run -d --name tomcat -p 80:8080 -v /usr/local/tomcat/webapps:/usr/local/tomcat/webapps --link mongodb:mongodb functree/tomcat:8-jre8 ``` - 使用下列命令进入Tomcat容器,根据需要修改Tomcat的server.xml或catalina.sh文件: ```shell docker exec -it tomcat /bin/bash ``` - Tomcat、MongoDB容器创建并启动成功后,建立/usr/lib/systemd/system/docker_mongodb.service和/usr/lib/systemd/system/docker_tomcat.service这两个文件,其中/usr/lib/systemd/system/docker_mongodb.service文件内容如下: ```shell [Unit] Description=mongodb container Requires=docker.service After=docker.service [Service] Restart=always ExecStart=/usr/bin/docker start -a mongodb ExecStop=/usr/bin/docker stop -t 2 mongodb [Install] WantedBy=default.target ``` /usr/lib/systemd/system/docker_tomcat.service文件内容如下: ``````shell [Unit] Description=tomcat container Requires=docker_mongodb.service After=docker_mongodb.service [Service] Restart=always ExecStart=/usr/bin/docker start -a tomcat ExecStop=/usr/bin/docker stop -t 2 tomcat [Install] WantedBy=default.target ``` - 通过下列命令将Tomcat、MongoDB容器设为开机自启动服务: ```shell systemctl enable docker_mongodb systemctl enable docker_tomcat ``` - 通过下列命令查看Tomcat、MongoDB容器的日志内容: ```shell docker logs tomcat docker logs mongodb ``` - 通过下列命令查看Tomcat、MongoDB容器的运行情况: ```shell docker ps -a ``` - 部署Jamobo应用程序: - 修改本项目中的web/WEB-INF/web.xml文件,示例如下,注意mongoDbHost对应的值为mongodb,即上述MongoDB容器的名称: ```xml
webRootPath
http://www.domain.com
mongoDbHost
mongodb
``` - 将本项目打包为war文件,命名为ROOT.war,然后通过ftp或scp命令,将ROOT.war上传部署到Tomcat的Web程序部署地址:/usr/local/tomcat/webapps,然后通过下列命令重新启动Tomcat容器: ```shell docker stop tomcat ``` 或 ```shell systemctl restart docker_tomcat ``` - 可能出现的问题: - Tomcat容器启动后,访问其Web服务端口没有响应,几分钟或十几分钟后Tomcat服务才启动完成,通过docker logs tomcat命令可以看到下列异常日志: ```shell 08-Mar-2017 01:48:16.043 INFO [localhost-startStop-1] org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [98,989] milliseconds. ``` 上述日志显示两个问题:一个是时间不正确,一个是SecureRandom产生时间过长;解决上述Tomcat启动缓慢和日志时间不正确的办法是,修改Tomcat的catalina.sh文件,增加下列内容: ```shell JAVA_OPTS="$JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -Duser.timezone=GMT+08" ```
×
赞赏金额将按贡献率分配给开发者
功件树
Jamobo_v1.0.10.0
开发者
赞赏金额
元
赞赏人
留言
感谢你们的辛勤工作!
支付类型
支付宝