【Jsp精品源码栏目提醒】:以下是网学会员为您推荐的Jsp精品源码-大文件网络传输设计 - 其它资料,希望本篇文章对您学习有所帮助。
大文件网络传输设计1. 背景 省一级的政府公开目录信息数据需要各地方的门户网站将相关数据上报, 同时还需要各相关政府部门的数据,这就要求 cms 按照规则取出数据,然后将数据传输到省级的服务器,再由省级的 cms 将传来的数据进行解析入库,这其中数据的网络传输是一个很重要的环节。
由于传输的数据有可能很大,同样网络环境也可能很复杂,这就要求需要专门的设计来解决。
而其它的一些项目中也有相似的问题, 所以将其独立出来,实现一个专门的系统提供这种服务。
2. 要求 此系统需要达到如下要求: 在 internet 环境中可靠的传输; 可以传输最少 GB 级大小的文件; 能够独立部署和运行,不依赖其他的系统,同时不依赖特定的 java 中间件平台; 提供服务与访问接口; 相对便捷的系统部署;3. 设计思路 为了能够减轻网络负担并且能够适应复杂的网络环境, 每次传输的数据量不能太大,所以大文件传输需要将它分成许多的小片段,一段一段传输,传完之后再将这些片段重新组成原始文件。
如下图所示: 图一 传输文件前对文件的压缩,切割处理与传输文件后多文件的合并解压处理的方案选择很明确,就是采用 Java 的本身的提供的类解决。
建议采用 org.apache.zip 包和 nio 包处理。
网络传输的方案有多种,如下详述。
3.1. ftp 方案 FTP 是 TCP/IP 协议组中的协议之一,是英文 File Transfer Protocol 的缩写。
该协议是Internet 文件传送的基础,它由一系列规格说明文档组成,目标是提高文件的共享性,提供非直接使用远程计算机,使存储介质对用户透明和可靠高效地传送数据。
简单的说,FTP就是完成两台计算机之间的拷贝,从远程计算机拷贝文件至自己的计算机上,称之为“下载(download) ”文件。
若将文件从自己计算机中拷贝至远程计算机上,则称之为“上载(upload)”文件。
在 TCP/IP 协议中,FTP 标准命令 TCP 端口号为 21,Port 方式数据端口为 20。
FTP协议的任务是从一台计算机将文件传送到另一台计算机, 它与这两台计算机所处的位置、 联接的方式、甚至是是否使用相同的操作系统无关。
假设两台计算机通过 ftp 协议对话,并且能访问 Internet, 你可以用 ftp 命令来传输文件。
每种操作系统使用上有某一些细微差别,但是每种协议基本的命令结构是相同的。
在本系统中如果采用 ftp 方案, 则需要在接收端与发送端放置两个 ftp,因为系统是双工方式工作的。
同时在两侧还需要开发一个守护进程定时的轮询 ftp 服务器存放上传文件的文件夹,用来获知是否有文件上传,并且是否上传结束。
图二表示的是这种方案的逻辑结构。
图二3.2. jms server 方案3.2.1. Jms 简介 在不同系统之间交换信息的一大障碍是如何在精确交换和格式化数据方面取得一致。
Java Message Service( Java 消息服务,简称 JMS)通过提供一种与 J2EE 应用程序或传统系统交互的方法部分的解决了这个问题。
JMS 的通用接口集合以异步方式发送或接收消息。
异步方式接收消息显然是使用间断网络连接的客户机。
另外, JMS 采用一种宽松结合方式整合企业系统的方法,其主要的目的就是创建能够使用跨平台数据信息的、 可移植的企业级应用程序,而把开发人力解放出来。
JMS 的可靠性机制: 确认 JMS 消息只有在被确认之后,才认为已经被成功地消费了。
消息的成功消费通常包含三个阶段:客户接收消息、客户处理消息和消息被确认。
在事务性会话中,当一个事务被提交的时候,确认自动发生。
在非事务性会话中,消息何时被确认取决于创建会话时的应答模式(acknowledgement mode) 。
该参数有以下三个可选值: Session.AUTO_ACKNOWLEDGE。
当客户成功的从 receive 方法返回的时候,或者从MessageListener.onMessage 方法成功返回的时候,会话自动确认客户收到的消息。
Session.CLIENT_ACKNOWLEDGE。
客户通过消息的 acknowledge 方法确认消息。
需要注意的是,在这种模式中,确认是在会话层上进行:确认一个被消费的消息将自动确认所有已被会话消费的消息。