问题描述
嗨,各位,我想实现一个Struts2的文件上传功能,客户端通过jsp页面上传文件,Struts2服务器端根据一定的策略将这个上传请求转发到别的机器上的Struts2子服务器端,并在子服务器端接收该服务。目前我使用的方式是Struts2+socket传输。试过用Servlet的转发和重定向都不行,不知道有没有人做过相关的工作 问题补充:283433775 写道
解决方案
一般来说,不同域的request是不可以重用的,所以按理说是不行的,但我觉得既然是request请求,他们的差别就在于这个请求里面的内容,包括 http header 和一些参数内容,你可以在A服务器调用B服务器的时候,将A发送的这些request模拟出来,给B服务器构造一个类型的request请求。但是我又想了,这样对于上传文件并不可行啊,因为前台与服务器之间建立连接了,所以会传个文件,如果你模拟了http请求,可是你将这些请求转给B服务器的时候,客户端与B服务之间并没有建立连接,所以不可能能传文件的。我不明白你为什么非要去转?在jsp里面直接调用B的webservice进行上传不久行了吗?
解决方案二:
除了你自己使用的Socket传输之外,我说一说我的想法:假设本地服务器为A,对应于web应用webA远端的服务器为B,对应于web应用webBwebA是当前用于上传文件的应用,webB是你所说的子服务器方法一:1、先将文件file.rar上传到当前A服务器的指定目录上,如/opt/upload2、两种可选方案1)webA通过Java的FTP操作,将文件发送到服务器B的指定目录上2)上传完毕后,webA向webB发送一条信息,告诉他到A服务器的指定位置获取文件
解决方案三:
既然是不同的服务器之间,不如将服务端上传功能做成webservice,然后去调用。A服务器的jsp发送上传文件请求,然后到struts2 的后台处理,这时A服务器的后台处理调用B服务器的上传Webservice,这样不就解决问题了?