静态资源服务器
功能:
1、控制后台应用程序;最常用的就是后台定时程序完成定时任务;
2、静态资源web服务器功能;
创作冲动
因为前段时间我来调整彩信包月发送模块、还有与上海全程公司得数据同步问题。这两个都是后台应用程序,里面都有一个定时任务得概念。
原来做的是用Resin来控制的(没有用系统任务控制),把实现ServletContextListener的类在web.xml里面注册了一下,当容器启动了,就激活这个事件.
容器关闭就停止了这个事件。
后来觉得就这么简单的功能如果还用resin来做有些大才小用了。
于是就觉得自己写个应用程序吧,如果是带有界面的应用程序,我们开始应用和结束应用用界面可以控制。而且实现起来比较简单。
但是没有界面的情况下,我本次启动java应用程序会把程序装载到jvm里面去,如果我再次开一个命令行想试图通过xxx stop来结束命令,是不可能的。
因为两次开的命令行装载的程序跟本不是同一个实例,因为他们根本就不再同一个jvm中。
经过仔细研究tomcat的启动框架,觉得用打开端口的方式来控制。。。。。
然后,后来扩展出来了web功能。。。。。。。
主要学习了NIO,Socket方面的知识,熟悉了HTTP协议.....
配置
设置系统环境变量
STATIC_SERVER_HOME:该服务的跟目录比如:D:/work/static-server/
否则系统无法启动!
系统描述:
%STATIC_SERVER_HOME%/conf 是配置文件目录
web.properties是留给用户添加属性的文件,这个属性文件的值可以通过接口IServerContext中的方法获得
log4j.properties是系统日志配置文件
app-server.properties 是系统配置文件
如下解释:
#listener.port
listener.port=7474
是服务启动时候监听的端口号
http.port=80
HTTP服务器端口
web.root=httpdocs
web服务器跟目录,如果修改请制定具体的物理目录如:D:/www/html/否则不需修改。
max.thread=50
web服务器最大链接数
#index file
welcome.file=index.html
web服务器默认首页页面,暂时只支持一个
#listener.class
#exa: class1;class2;class3
listener.class=com.zhanglihai.app.server.test.MyListener
后台监听的应用程序
每一个类都是接口com.zhanglihai.app.server.ISessionListener的实现类
多个类之间用;分割开。系统会自动装载这些类,然后来调用里面的start|stop方法。
##1.0 Beta 版本增加以下标记
default.content-type=text/plain
//系统保留
dir.list=true
//是否可以浏览目录true:如果没有默认页面就浏览目录;false禁止浏览目录
http.encoding=GBK
//request请求中的编码
http.404=/404.html
//当请求发生404时候所制定的文件,要求从系统跟目录算起。
auth.class=需要对请求访问做限制的类全名,并且必须是继承com.zhanglihai.app.server.Authorization类并且覆盖了里面的authorization方法
如果不需要访问验证,此处不需要填写。
%STATIC_SERVER_HOME%/lib :
是系统所需的jar包,其中static-server.1.0.jar里面有两个接口,
static-server.1.0.jar 在1.0 Beta版本中增加两个接口Request,Response,和一个对于访问验证的类
一个是用户要实现的com.zhanglihai.app.server.ISessionListener接口,一个是系统环境变量接口。用户使用的时候要加入这个包
startup.jar是系统启动时候的应用程序入口jar;test.jar是测试ISessionListener,和请求控制验证,接口的程序实际中可以把这个包删除,同时去掉app-server.properties中相关的注册信息
%STATIC_SERVER_HOME%/logs :系统日志输出目录
%STATIC_SERVER_HOME%/httpdocs:系统默认的web跟目录
系统启动|停止:
从dos窗口到%STATIC_SERVER_HOME%/bin/目录
然后执行app-server.bat start来启动服务
同样执行app-server.bat stop来停止服务
Linux用户请用相关的app-server.sh文件来执行同样的命令。
在Linux下需要用户用root权限启动该文件。
下载
STATIC-SERVER
1.0(JDK1.4)
| 系统 | JDK | 版本 | 最后更新时间 | 备注 |
| Windows | JDK1.4或以上 | 1.0 5M | 2005-05-18 15:07 | |
| Linux | JDK1.4或以上 | 1.0 5M | 2005-05-18 15:07 | |
| Windows | JDK1.4或以上 | 1.0 6M | 2005-05-23 20:39 | 完全用NIO、多线程实现数据的读写操作,效率提高很多, 有兴趣可以测试,我测试的结果和Resin的处理能力接近,远远高于Tomcat,手头没有Apache,所以没有测试 |
| Linux | JDK1.4或以上 | 1.0 6M | 2005-05-23 20:39 | |
| Windows | JDK1.4或以上 | 1.0 Beta | 2005-05-24 20:10 | 1、添加对HEAD请求的处理; 2、添加浏览目录的处理; 3、修改浏览目录时候的Bug; 4、添加对请求的编码处理; 5、添加对文件类型的处理; 6、增加对404状态的处理; 7、增加配置文件%STATIC_SERVER_HOME%/conf/mime.properties文件,增加对文件类型的处理; 8、实现对请求资源的控制; 9、增加app-server.properties标记如下: default.content-type=text/plain //系统暂时保留 dir.list=true//是否显示目录 http.encoding=GBK//系统默认请求编码 http.404=/404.html //发生404时候所指定的文件,必须从系统跟目录起。 auth.class=需要对请求访问做限制的类全名,并且必须是继承com.zhanglihai.app.server.Authorization类并且覆盖了里面的authorization方法 10、static-server.1.0.jar中新增加两个接口Request/Response ,和一个访问权限验证的类Authorization,如果需要访问限制,请参看test中AuthTest类的实现,所有的权限验证的类都 应该继承Authorization 11、增加对中文目录以及中文文件名的处理; 12、增加对Request里面中文参数、值的处理; 13、增加web.properties提供给用户更多配置。 |
| Linux | JDK1.4或以上 | 1.0 Beta | 2005-05-24 20:10 | |
| Windows/Linux | JDK1.4或以上 | 1.0 Beta | 2005-05-27 10:08 | 1、修改读取大文件(超过10M)时候的一个bug, 2、写文件时候一个bug,就是用户下载文件时候突然停止或者终端的bug. 请下载文件包刀到本地后解压出里面的 startup.jar,覆盖到%STATIC_SERVER_HOME%/lib 里面去. 另外由于系统文件类型有限,如果系统不识别的文件类型就默认是text/html;请自动更新mime.properties文件.关于类型设置以后会不断升级.. |
| Windows/Linux | JDK1.4或以上 | cr 1.0 | 2005-05-29 10:08 | 1、修改浏览中文目录以及文件时候的一个bug(对于M$.IE和Mozilla.Firefox有些区别); 2、添加对请求日志的记录; 3、扩展Authorization类的方法,扩展Response里面的方法,对于Authorization可以理解为"全局的过滤器"请参考例子中提供的简单方法扩展适合自己的过滤器。 4、增加了app-server.peroperties里面的日志属性 |
| /** * @see com.zhanglihai.app.server.Authorization#authorization(com.zhanglihai.app.server.IServerContext, com.zhanglihai.app.server.Response, com.zhanglihai.app.server.Request) */ public boolean authorization(IServerContext context, Response response, Request request) { String uri = request.getUri(); /** /** private String getFileName(String uri) {
|