BlackHole開發日記-jar包內文件的訪問

####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

相關文章
相關標籤/搜索