远程发布的设计和实现
在实施门户部署时,部分客户会有内外网都要的需求,即内容信息维护在内网完成,内网用户可以通过内网直接访问门户,但同时需要加门户发布到外网,供Internet上用户访问,内外网的信息需要保持同步。
第一步需要将动态的门户页面全部发布成静态html页面(可参考我的另外一篇日志《门户站点静态发布的设计与实现》,访问地址:http://infinite.iteye.com/blog/390687);
第二步还需要将第一步发布出来的静态html页面以及相关的图片、js、css文件等远超发布到外网服务器,同时外网访问出于性能考虑,可能需要做负载均衡,还需要远超发布时能支持发布至多台外网服务器上。
以下具体讲述下第二步远程发布的设计思路和具体实现。主要将借助开源组织apache的common-net.jar包的FTPClient类。
一、 编写远超发布配置信息文件
配置信息需要包含有外网服务器的ftp访问地址、用户名、密码,以及内网服务器需要上传至外网服务器的目录信息。格式如下:
<ftpServer url="192.168.0.31" userName="root" password="password">
<filePath localDir="d:/。。。/webapp/html" remoteDir="temp/html"/>
<filePath localDir="d:/ 。。。/webapp/core" remoteDir="temp/core"/>
<filePath localDir="d:/ 。。。/webapp/model" remoteDir="temp/model"/>
<filter-pattern>index,articleList</filter-pattern>
</ftpServer>
|
二、 解析配置文件,创建FTP连接
根据上面配置文件ftpServer的信息,可创建一个FTPClient连接。代码参考如下:
private void connect2FtpServer(String url, String user, String pwd) throws SocketException, IOException {
this.ftp = new FTPClient();
ftp.connect(url);
ftp.login(user, pwd);
int reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
}
this.remoteRoot = ftp.printWorkingDirectory();
}
|
三、 上传文件(夹)
创建了FTP连接后,就可以利用该连接进行文件的ftp上传操作。这里有几点需要注意:
1、按本地上传的文件夹的目录结构,在外网服务器上对应的文件夹下创建一模一样的目录结构。
/**
* 在上传文件夹的过程中,如果服务器的目标目录中和上传文件夹的目录有区别 则创建各级目录。
* @param remoteDir
* @param relativePath
*/
private void makeDirectory(String remoteDir, String relativePath) {
try {
ftp.changeWorkingDirectory(this.remoteRoot); // 先切换到根目录下
relativePath = remoteDir + "/" + relativePath;
String[] dir = relativePath.split("/");// 目录分级
for (int i = 0; i < dir.length; i++) {
if (!ftp.changeWorkingDirectory(dir[i])) {// 是否有子目录dir[i]
ftp.makeDirectory(dir[i]);
}
ftp]);.changeWorkingDirectory(dir[i
}
} catch (Exception e) {
log.error("在ftp服务器上创建相应目录时候出错", e);
}
}
|
2、过滤掉无需重复上传的文件。如何过滤规则可以根据需要制定。比如,配置文件里可加入<filter-pattern>index,articleList</filter-pattern>的匹配配置,表示文件名包含index或者articleList字样的文件每次都要上传;还可以根据文件的最后修改时间来判断是否需要上传该文件(比如三小时内修改过的文件上传,其余不上传,可结合第四步的定时机制)。
指定好了上传目录,上传文件很简单,只需简单的调用FTPClinet的storeFile方法。可参考下面代码:
String fileName = file.getName(); // 本地文件名
FileInputStream input = new FileInputStream(file);
ftp.storeFile(fileName, input);
|
四、 定时远程发布到外网服务器
通过上面三个步骤,已经可以将内网服务器的文件顺利发布至外网服务器,但是我们还是需要做一定的优化。
首先什么时候触发远程发布。为了保证内外网信息实时同步,最理想的方式就是内网内容一更新,即触发远程发布,将更新内容发布至外网服务器。但这样导致的性能问题非常严重。因为存在多个内容维护的管理员,可能每个人都在做远程发布,这就需要多个ftp连接,非常耗费资源,且相互间还会影响彼此的上传速度。
针对上面问题,使用定时远程发布可以带来比较好的性能提升。这需要在本地(即内网服务器)上创建一个守护进程,由它不停的检测本地需要上传的目录,发现有更新且到达定时时间(比如15分钟),则启动远程发布。否则不启动。这样可保证始终只有一个ftp连接,多个管理员同时更新内容不会相互影响彼此上传速度。只不过这样一定程度上了牺牲内容的实时更新(会稍微有所延迟)。
分享到:
相关推荐
远程教育作业管理系统的设计与实现 一.本课题的目的与研究意义 随着社会进步,教师的发布作业、批阅作业、打出分数,学生完成作业、提交作业、查询成绩之间的关系,要求越来越方便、全面、先进、高效。这不仅使...
它利用Spring Boot的快速开发特性,结合了试题管理、考试创建、考生管理、实时监控、自动评分和成绩分析等功能,旨在提供一个高效、可靠且用户友好的工具,以帮助实现在线考试的管理和监控。 以下是该在线远程考试...
本资源是一个数码论坛系统设计与实现的完整开发源码,包括前端、后端、数据库等部分。该系统主要提供自媒体社区服务,实现自媒体账号管理、内容...该系统的设计思路、技术实现和业务逻辑等方面都具有高参考价值,为开发
基于ssm的远程同步课堂系统设计与实现 Java;SSM;JSP技术;MySQL 本次就是通过利用JSP技术、SSM框架技术和MySQL数据库来进行一款远程同步课堂系统的开发,通过该网站内的开发来实现在线的学生注册、课堂学习、...
基于ssm的远程同步课堂系统设计与实现 Java;SSM;JSP技术;MySQL 本次就是通过利用JSP技术、SSM框架技术和MySQL数据库来进行一款远程同步课堂系统的开发,通过该网站内的开发来实现在线的学生注册、课堂学习、...
文章应用了GPRS技术、互联网技术和组态王,基于公司现有产品"刮板输送机井下综合监控系统",设计了一套刮板输送机远程监测系统,在公司监控中心实现了设备工况显示和报警、历史工况参数存储、分析和查询以及监测画面web...
②登录、流媒体播放、关键词搜索、在线讨论、 专题学习、公告通知、视频发布、信息维护等众多功能都是如何设计和实现的。 阅读建议:此资源以开发 学习其原理和内核,不仅是代码编写实现也更注重内容上的需求分析和...
(3)教师用户功能模块:要求实现新闻公告及作业信息发布,用户登录,个人帐号资料修改,学生作业批改和对学生留言回复等功能。 四、拟解决的主要问题 学生电子作业提交与分析系统开发的技术难点主要有两个方面:一...
针对现有的煤矿巷道积水测控系统组网扩展不灵活及数据获取不方便等问题,...最后设计了组态软件驱动GSM DTU模块及组态工程的Web发布,实现井下水情的远程网络查询和控制。实践表明该系统组网扩展灵活,数据信息获取方便。
系统详细设计 5.1前台首页功能模块 医院远程诊断系统,在系统首页可以查看首页、医生信息、论坛信息、我的、跳转到后台、客服等内容,如图5-1所示。 图5-1前台首页功能界面图 用户登录,在用户登录页面...
本资源是一个生鲜超市管理的设计与实现的完整开发源码,包括前端、后端、数据库等部分。该系统主要提供自媒体社区服务,实现自媒体账号管理、...该系统的设计思路、技术实现和业务逻辑等方面都具有高参考价值,为开发
本资源是一个小学家校一体“作业帮”的设计与实现的完整开发源码,包括前端、后端、数据库等部分。该系统主要提供自媒体社区服务,实现自媒体...该系统的设计思路、技术实现和业务逻辑等方面都具有高参考价值,为开发
本系统是通过.NET平台开发动态网站技术设计和实现了一个可以让应聘者和招聘单位远程进行互动交流的网络招聘工作平台。同城招聘系统是一个利用网络开展招聘活动的系统,主要功能有职位发布、职位搜索、简历填写、简历...
摘 要:首先叙述HART通信协议的发展和协议的层次结构,针对某现场仪表的HART协议远程通信模块的设计与实现的要求,完成了基于HART调制解调器A5191HRT和电流环数模转换器AD421的HART协议通信模块的软硬件设计。...
目 录 ...5教室管理系统实现 5.1功能概览 5.2系统管理模块 5.2.1新课程导入 5.2.2已发布课程管理 5.2.3用户信息导入 5.2.4用户信息管理 5.3用户登录 5.4学生端 5.5教师端 总结 参考文献
依托GPRS网络平台,综合应用PLC、Web网络技术、传感器、数据库、组态软件等技术,设计了一套远程无线水源井群监控系统,可有效地实现水源井数据采集、无线传输、Web网络发布、远程监控与预报预警,大大提高供水部门管理...
5.2.6教师端作业发布功能实现 34 5.2.7教师端作业查阅功能实现 35 5.3学习资源管理模块 36 5.3.1上传功能实现 36 5.3.2平台资源管理功能实现 37 六 系统发布及测试 38 6.1系统发布 38 6.1.1将web项目部署在Tomcat上 ...
针对山西寺河煤矿要实现压风机组无人值守的要求,运用OPC技术,对PLC监控设备以LabVIEW为开发平台设计了压风机组远程监控系统,并通过工业环网将数据传输到矿山监控中心,通过Web发布信息,以实现远程监控。通过现场应用...
本资源是一个应急救援物资管理系统.的完整开发源码,包括前端、后端、数据库等部分。该系统主要提供自媒体社区服务,实现自媒体账号管理、内容...该系统的设计思路、技术实现和业务逻辑等方面都具有高参考价值,为开发
由于现有系统仅对电表数据进行读取操作,存在成本较高和耗时较长的问题,为此对单相智能多用户远程预付费控系统优化设计进行研究。试验结果表明:运用优化系统后,电费催收成本得到了明显降低,且用时得到了降低,其...