####2012-12-27
今天将Mac下DNS设置的模块完成了,于是着手做一个单机服务器吧!将项目拆开成了两个目录,server和localserver。
另外解决了一个很初级的Spring配置的问题,如果要引入jar包中的配置,需要在classpath后面加上'',例如: classpath*:/spring/applicationContext.xml
后来又遇到一个问题:想要把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类:
<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-29
今天完成了Mac下的单机服务器版本,可以在程序启动的时候设置DNS服务器、清空DNS缓存,结果遇到了一个比较麻烦的问题:即使系统缓存清空了,浏览器仍然会有缓存。而且有个有趣的事情:浏览器DNS缓存的时间跟ttl值无关,因为浏览器不知道A记录的TTL值,所以一旦访问成功,都会尝试用一个固定过期时间来缓存内容。因为这个问题还挺费解的,也给之前的开发和测试带来不少困扰,所以就做了一个详细的研究,写了一篇博文:为什么修改hosts不立即生效?--浏览器DNS缓存机制分析。
剩下的就是一些操作的包装了,好好考虑和测试一下。
来源:oschina
链接:https://my.oschina.net/u/190591/blog/99082