jfinal undertow项目,用Nginx搭建集群时,必须创建多个文件夹吗

jfinal undertow项目,打包之后是一个文件夹app。

近期使用Nginx搭建集群,需要建立2个 server,端口不同。

疑问:启动两个服务时想到两种方法

一是创建类似app1, app2之类的两个文件夹,把代码放入其中,然后分别启动。

二是只使用原来那套代码,创建两个bat文件,如jfinal1. bat,jfinal2. bat,并修改其中的启动参数,最后分别启动两个bat文件。

请问这两种方法是jfinal undertow项目集群的正确姿势吗?

补充:由于程序中涉及到文件上传至服务器,还有些数据是实时写在代码文件中的,所以想问问方案2是否可行。方案1的话,还得需要做一个文件同步机制。

评论区

小徐同学

2019-06-11 09:30

你可以把上传目录放在外部。

JFinal

2019-06-11 09:43

方案二确保一下你自己的代码在写文件时没有并发问题

例如,你的某处代码需要写某个文件,那么就要考虑并发写的问题。如果全是读文件就没有问题

采用方案二的时候要注意 jfinal.sh stop 关闭项目的问题,该命令是通过判断你项目的目录来关闭的,所以方案二在用这个脚本关闭项目的时候会将两个启动的项目一起关掉

方案一之下,你所说的文件上传问题,jfinal 多年前就做好了相关功能。你只需要配置一下:
me.setBaseUploadPath(...)

将这个 baseUploadPath 配置成一个绝对路径就可以指向项目根之外的地方,例如:
me.setBaseUploadPath("/var/www/upload");

此时,如果希望 jfinal undertow 可以将上传的文件当成 web 资源在浏览器中访问到的话,可以添加这个配置:
undertow.resourcePath=src/main/webapp, /var/www/upload

以上配置中可以用逗号分隔开多个目录,同时支持开发环境与生产环境的文件上传目录

当然,如果你前端用 nginx 接管了静态资源的访问,上面的配置可以不需要,而是在 nginx 中配置资源路径

建议使用方案二,因为更省事,升级也更方案,只需要升级一个项目即可。 方案二需要处理好 jfinsh.sh 中的 stop 函数,当然,如果你不介意一次性关闭当前项目的所有进程,也不用修改

124653847atqq.com

2019-06-11 22:54

@JFinal @小徐同学 多谢二位如此详尽的解答。回头我测试一下看看。

热门反馈

扫码入社