####2012-12-27spring
今天将Mac下DNS设置的模块完成了,因而着手作一个单机服务器吧!将项目拆开成了两个目录,server和localserver。shell
另外解决了一个很初级的Spring配置的问题,若是要引入jar包中的配置,须要在classpath后面加上'',例如: classpath*:/spring/applicationContext.xmlapache
后来又遇到一个问题:想要把shell脚本打入jar包,可是发现即便获取到了jar包中shell脚本的路径(xxx.jar!/xx/ss这样的路径),也没法使用外部程序调用这个文件!浏览器
####2012-12-28缓存
怎么执行jar包内的shell脚本?这是个有趣的话题。后来尝试使用getResourceAsStream读取出文件,而后再写到临时文件夹,而后访问…好吧,问题解决。服务器
后来完善了localserver的设计。考虑到项目已经有4个模块了,就引入了maven聚合来完成编译,将xml中module的路径配置一下就能够了。 顺便提一下,maven-jar-plugin也挺好用的,能够将META-INF写入jar包。例如,下面设置依赖路径和执行的Main类:app
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <configuration> <archive> <manifest> <addClasspath>true</addClasspath> <classpathPrefix>lib</classpathPrefix> <mainClass>us.codecraft.blackhole.selfhost.MacMain</mainClass> </manifest> </archive> </configuration> </plugin>
####2012-12-29maven
今天完成了Mac下的单机服务器版本,能够在程序启动的时候设置DNS服务器、清空DNS缓存,结果遇到了一个比较麻烦的问题:即便系统缓存清空了,浏览器仍然会有缓存。并且有个有趣的事情:浏览器DNS缓存的时间跟ttl值无关,由于浏览器不知道A记录的TTL值,因此一旦访问成功,都会尝试用一个固定过时时间来缓存内容。由于这个问题还挺费解的,也给以前的开发和测试带来很多困扰,因此就作了一个详细的研究,写了一篇博文:为何修改hosts不当即生效?--浏览器DNS缓存机制分析。测试
剩下的就是一些操做的包装了,好好考虑和测试一下。spa