BlackHole开发日记-jar包内文件的访问

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缓存机制分析。

剩下的就是一些操作的包装了,好好考虑和测试一下。

你可能感兴趣的:(maven,dns,BlackHoleJ)