关于Tomcat集群中,图片文件等同步的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于Tomcat集群中,图片文件等同步的问题相关的知识,希望对你有一定的参考价值。

项目中用到apache+tomcat集群的方案,其中apache和一个tomcat1是同一个机器,另外一个tomcat2是在另外一台机器。同时项目中有一个修改用户资料的功能,该功能除了修改用户资料外还允许用户上传自己的头像。这时就有一个文件共享的问题,比如接受请求的时候是tomcat2,那么用户上传的图片将会放到tomcat2的服务器,而当用户查看的时候,因为静态文件是通过apache接受请求的,那时候图片只存在tomcat2那台服务器上,而不存在apache和tomcat1那台服务器上,也就是无法读取到用户上传的那个图片。

所以问题就是,怎么使2个服务器接受到的上传图片能存在2个服务器中。我尝试过修改apache的mod_jk的配置文件,将修改的请求转向到tomcat1中,但是好像没有起到效果。另外我还想在tomcat1的那个服务器中另外做一个图片服务器,再发布一个系统来接受2个tomcat传过来的图片资源,然后这个系统负责将图片保存到服务器中。但是,tomcat中怎么将图片传到这个图片服务器系统中?也就是tomcat中接收到用户修改的数据和头像,然后将修改的数据更新之后,再怎么将图片发到图片服务器,让图片服务器保存?另外我还需要发送一些参数过去的。请问是利用字节流的方式吗?servlet中可以像Jsp那样POST数据到其他服务器端的吗?
godson,你好,图片我都是放到apache中配置的项目根目录下的,但是由于2个tomcat不是同一台服务器,所以才有这种问题发生。

Tomcat集群中,Tomcat集群只完成了会话同步,没提供文件同步方案,为了同步图片文件等,可以使用同步工具GoodSync。
GoodSync无论是通过局域网络还是互联网络,只要是你的重要文件,都可以自动同步和备份。通过使用创新性的同步算法 —— GoodSync 将在未来数年中成为同步领域的领先者。
GoodSync利用创新的同步算法,可以有效防止文件误删除,数据意外丢失,并消除重复的文件。GoodSync已经从用户和媒体获得许多衷心的赞扬和高度评价。
GoodSync - 真正实用的双向文件同步工具,更多介绍可参看《GoodSync_百度百科》
详细说明参见《强大的数据同步工具GoodSync使用教程_百度经验》
参考技术A 图片放到统一的位置,这个位置两个tomcat服务器都能访问到。 不要放到tomcat下面,这样就不存在同步问题了。在apache的帮助下完成这个功能很简单

tomcat跟文件是没有关系的。jsp只是把文件上传到服务器(apache的某一目录下) ,当你要显示图片或者下载文件的时候,apache可以做一个映射 直接定位到apache的目录下.好像RewriteRule 可以实现;具体记不清楚了
参考技术B 共享(磁盘阵列) 或者 同步处理,建议前者

关于图片上传到tomcat问题

JSP通过servlet添加图片到项目的文件夹里,能添加成功。但是tomcat里面没有图片。要把myeclipse里的项目刷新一下。tomcat里面才有显示图片。。

能添加图片到项目里,tomcat如何也同步有图片。不需要刷新项目才有?
把图片添加到tomcat 显示不正确,如何解决?

java.io.FileNotFoundException: http:\localhost:8080\software\img\314.jpg (文件名、目录名或卷标语法不正确。)
at java.io.FileOutputStream.open(Native Method)

关于图片无法显示,你可以参考下如下网上的论述:
后来才发现,前文所说的方法未不行, 原来tomcat 很死板,对大小写都敏感, 例如我的图片是 1. GIF, 在jsp 里写成了小写的 1. gif 都会显示不出来! 把图片名改成 与文件名一样的就好了。 这点IE就做得比较好,即使小写都可以显示
参考技术A 把代码贴出来吧 是不是software\img 文件夹不存在啊 直接就往里存图片了

以上是关于关于Tomcat集群中,图片文件等同步的问题的主要内容,如果未能解决你的问题,请参考以下文章

关于图片上传到tomcat问题

关于log42j引发的日志文件权限的问题

在kubernetes中创建tomcat与mysql集群

FineReport关于tomcat集群部署的方案

FineReport关于tomcat集群部署的方案

多实例集群部署下的图片上传