grails 有一個(gè) wicket 的插件:
http://graemerocher.blogspot.com/2007/05/grails-wicket-wonders-of-grails-plug-in.html
我試了一下,發(fā)現(xiàn)最新版本(0.3)的wicket插件,運(yùn)行helloworld都有問(wèn)題,錯(cuò)誤是:
wicket.markup.MarkupNotFoundException: Markup not found.
查看了一下原因,按照文檔, HelloWorld.html 是放在 grails-app/views 目錄下的,但是 wicket 插件 沒(méi)有修改classpath 和 resource 裝載的路徑,也就是說(shuō),實(shí)際上這個(gè) HelloWorld.html 對(duì)于 wicket 來(lái)說(shuō) 是不可見的。但是如果把這個(gè) HelloWorld.html 放在 src/java 目錄下,則可以正常運(yùn)行。
想到了一個(gè)簡(jiǎn)單的解決方案,修改 $GRAILS_HOME/scripts/Package.groovy,在 146 行增加:
fileset(dir:"${basedir}/grails-app/views") {
include(name:"**/**")
exclude(name:"**/*.groovy")
}
就像 src/java 當(dāng)中的資源一樣,全部拷貝到目標(biāo)目錄下,這樣的效果就和放在 src/java 目錄下一樣了。
主站:
http://blogsite.3322.org/
首先看看我前幾天的一篇blog
spring 與 osgi的第一個(gè)障礙
eclipse3.1, spring2.0.1,將spring.jar放到一個(gè)插件中,在另一個(gè)插件中去使用。 最簡(jiǎn)單的例子,在context.getBean的時(shí)候就報(bào)了一個(gè)異常:
Caused?by:?org.xml.sax.SAXParseException:?cvc
-
elt.
1
:?Cannot?find?the?declaration?of?element?
'
beans
'
.
先是搜了一遍,沒(méi)有發(fā)現(xiàn)很有幫助的內(nèi)容。然后跟了一下,發(fā)現(xiàn)還是因?yàn)閤sd的映射找不到。而造成這個(gè)問(wèn)題的原因, 是在 spring.jar當(dāng)中的META-INF/spring.schemas 這個(gè)找不到。
而這個(gè)找不到的最根本原因,是因?yàn)樵趀clipse當(dāng)中,META-INF目錄是不能夠被其他插件找到的。也就是說(shuō),META-INF 目錄是擁有spring.jar的那個(gè)插件所獨(dú)占的,而其他插件就算依賴于這個(gè)插件,也是無(wú)法找到META-INF目錄下的文件, 從而拋出這個(gè)異常。
解決問(wèn)題的辦法有幾個(gè),最簡(jiǎn)單的莫過(guò)于拷貝spring.schemas文件到需要的插件中,另一個(gè)辦法是把spring的context 裝載就放在spring.jar所在的插件中,或者改eclipse的代碼。 :(
這個(gè)問(wèn)題解決之后,緊接著第二個(gè)問(wèn)題就是
Unable?to?locate?NamespaceHandler?
for
?namespace?http:
//
www.springframework.org/schema/aop
造成這個(gè)的原因和第一個(gè)類似,將spring.handlers拷貝到META-INF目錄下就ok了。
上面是我以前的一個(gè)經(jīng)驗(yàn),今天仔細(xì)研究了一下,發(fā)現(xiàn)自己掉進(jìn)了 經(jīng)驗(yàn)主義的圈套。
這個(gè)經(jīng)驗(yàn)是這樣積累起來(lái)的:在剛開始嘗試使用eclipse的時(shí)候,用的是3.0和3.1Mx系列,當(dāng)時(shí) 不知道osgi是個(gè)什么東西 :$ 創(chuàng)建的幾個(gè)插件,都沒(méi)有創(chuàng)建osgi bundle manifest。也就是說(shuō), 只有plugin.xml,而沒(méi)有META-INF/MANIFEST.MF文件的。但是在運(yùn)行期,eclipse會(huì)自動(dòng)的 從plugin.xml當(dāng)中讀取信息,生成臨時(shí)的MANIFEST.MF文件,放在 runtime的 configuration/org.eclipse.osgi/manifests 目錄下。而生成這個(gè)MANIFEST.MF文件,是 通過(guò) PluginConverterImpl 這個(gè)類來(lái)實(shí)現(xiàn)的,在它的 isValidPackageName 方法中,所有的 META-INF或者以META-INF開頭的目錄,都不會(huì)被自動(dòng)的export出去,從而在臨時(shí)生成的MANIFEST.MF 文件中,永遠(yuǎn)不會(huì)有META-INF目錄的export。
當(dāng)時(shí)剛開始接觸eclipse和osgi,根本不知道自己當(dāng)時(shí)最佳的解決方案就是創(chuàng)建一個(gè) bundle manifest, 然后在其中將META-INF目錄export出來(lái)。而是通過(guò)盲目的修改代碼來(lái)繞過(guò)這個(gè)彎。后來(lái)這個(gè)彎繞過(guò)去了, 留給我的經(jīng)驗(yàn)就是:META-INF這個(gè)目錄,是插件獨(dú)享的,別的插件不允許訪問(wèn)的。
于是,在前幾天,當(dāng)spring.jar當(dāng)中的幾個(gè)META-INF目錄下的文件訪問(wèn)不了時(shí),我也認(rèn)為這個(gè)經(jīng)驗(yàn)有用, 差點(diǎn)就去改eclipse的代碼了。幸好嘗試了一下,把spring.jar所在的插件中,將META-INF目錄共享出來(lái), 居然就好了。仔細(xì)查了一下,發(fā)現(xiàn)屏蔽META-INF的代碼只出現(xiàn)在PluginConverterImpl這個(gè)類當(dāng)中。 回頭想了想,終于明白自己這次是掉在經(jīng)驗(yàn)主義的坑里面了。
經(jīng)驗(yàn)主義害死人啊。唉。
主站: http://blogsite.3322.org/
SUN Tech 2006第一天
會(huì)場(chǎng)設(shè)在最擁堵的北四環(huán)中路,趕到會(huì)場(chǎng)已經(jīng)接近9點(diǎn),匆忙報(bào)道之后,
第一感覺(jué)是不像去年那么大的場(chǎng)面了,只有兩個(gè)會(huì)場(chǎng),而且很奇怪的是,
參展的其他廠商,也只有AMD一家,顯得有點(diǎn)冷清。
James Gosling又一次出現(xiàn)了,不過(guò)做的演講并沒(méi)有很多新鮮的東西,值得
注意的倒是Ruby on Rails出現(xiàn)在他的演講內(nèi)容當(dāng)中,這大概也與JDK未來(lái)版本
要支持動(dòng)態(tài)語(yǔ)言,以及SUN把jruby的兩個(gè)人招進(jìn)去有一系列的關(guān)系。隨后有
一個(gè)SUN的技術(shù)展示,其中有意思的一個(gè)是 SPOT(Small Programmable Object Tech),
有點(diǎn)象《少數(shù)派報(bào)告》當(dāng)中阿湯哥用的手套,用手套來(lái)當(dāng)做鼠標(biāo)一樣的在
空中使用,很是不錯(cuò)。
隨后一整天的演講,給我的感覺(jué),重頭戲是Netbeans,其次是Ajax,再其次是
Java EE 5。感覺(jué)今天一系列的活動(dòng)都與Netbeans有關(guān),Ajax和Java EE 5包括
Java ME,都時(shí)不時(shí)的與Netbeans掛上鉤。從今天被Netbeans洗腦的結(jié)果來(lái)看,
Netbeans現(xiàn)在確實(shí)越來(lái)越好用,功能也越來(lái)越強(qiáng)大。Eclipse如果按照現(xiàn)在的發(fā)展
速度,確實(shí)有些危險(xiǎn)。不過(guò),從另一個(gè)角度看,有競(jìng)爭(zhēng)才能促進(jìn)發(fā)展,也不算是件
壞事。
其他方面的收獲,包括對(duì)JAVA SE 7 的一些特性了解,Java EE 5的一些介紹,以及
關(guān)于Java EE 5的參考實(shí)現(xiàn) GlassFish的介紹,順便還聽了一些Java ME的東西,也
有些意思,可惜暫時(shí)用不上。
今天有一些感觸:
?
好的技術(shù),如果沒(méi)有好的工具支持,也是很難生存的。這就聯(lián)想到我們自己的IMP框架,
過(guò)去將重點(diǎn)放在framework和engine上,而對(duì)于designer的投入則遠(yuǎn)遠(yuǎn)不夠。這樣造成的現(xiàn)
象就是限制了開發(fā)效率,從而沒(méi)有能夠最大的發(fā)揮IMP框架的作用。
Netbeans雖然好用,也能夠從一定程度上提高生產(chǎn)力。但是我還是那種觀點(diǎn),看上去
很美的代碼生成機(jī)制,往往只是節(jié)省了“創(chuàng)建”的時(shí)間成本,而對(duì)于“修改”的效
率提高,卻不一定有幫助。
JSF感覺(jué)還是沿襲了Struts的東西太多,就算通過(guò)Ajax的render,感覺(jué)還是不能算非常好的
Component Framework。還是不如Echo2 ;)
回家的時(shí)候,正趕上北四環(huán)的擁堵高峰,回到家已經(jīng)很晚了,寫的很零亂,不知道明天
會(huì)不會(huì)有什么大的收獲。反正今天感覺(jué)就是被洗了一天的腦,害得我都想裝一個(gè)Netbeans
來(lái)玩玩了。
SUN Tech 2006第二天
又經(jīng)歷了痛苦的2個(gè)小時(shí)到達(dá)了會(huì)場(chǎng),今天的SUN公司主題居然是“開源的好處”,
重點(diǎn)提出開源最終有利于開源者,號(hào)稱SUN從OpenSaloris的開源當(dāng)中獲得了很多
好處。不知道前幾年大家強(qiáng)烈要求SUN 開源的時(shí)候,是不是也是這種論調(diào)。也懶得
去查以前的新聞了,不過(guò)總算逐漸有將Java開源的打算了,而且SUN號(hào)稱要將所有的
軟件開源,這對(duì)于open source社區(qū),也算是件好事。
今天總的來(lái)說(shuō)內(nèi)容不是很豐富,這一次的Tech Day,總共也就是幾個(gè)人在講,一個(gè)人
講好幾場(chǎng),這在以前的Tech Day是很少出現(xiàn)的。
今天的收獲如下:
聽了一場(chǎng)關(guān)于swing和美化swing的講座,感覺(jué)SUN對(duì)于java的投入,比以前更大了。
以前,關(guān)于swing的微詞很多,也有很多不好用的反饋,但是在幾個(gè)jdk版本的發(fā)布過(guò)
程當(dāng)中都沒(méi)有改進(jìn),最典型的莫過(guò)于ContentPane,"Lastly, after seven years, we've made
jFrame.add equivalent to jFrame.getContentPane().add()."。在JDK5之后,可以感覺(jué)到SUN
對(duì)于用戶社區(qū)的反饋開始逐漸重視。對(duì)于swing當(dāng)中的功能較弱的問(wèn)題,專門整了一個(gè)
swinglab來(lái)解決。其中還有個(gè)swingx的子項(xiàng)目,也有不少的swing功能增強(qiáng)組件可以用。
Apache Derby,也就是原來(lái)IBM收購(gòu)informix時(shí)收購(gòu)到的Cloudscape,現(xiàn)在又有了一個(gè)新
名字叫 Java DB,而且會(huì)隨著JDK6一起發(fā)布。Java DB的功能比較完善,據(jù)說(shuō)性能也不
錯(cuò),號(hào)稱支持300G的數(shù)據(jù)量沒(méi)有問(wèn)題。如果這樣的話,不僅hsql可以拋掉,而且說(shuō)不定
mysql也可以不用了。我現(xiàn)在也很喜歡這種既可以embed,又可以做為cs的數(shù)據(jù)庫(kù),現(xiàn)在
做rails的就是用sqlite,感覺(jué)也夠用了。Java DB還有個(gè)很強(qiáng)的功能是,可以將數(shù)據(jù)打包為
jar文件,做為只讀的db,放在光盤或者其他地方,做為備份和還原,以及做demo應(yīng)用放
在光盤上,應(yīng)該都有很大的用處。
JDK for script language. 在JDK6當(dāng)中,已經(jīng)支持 ruby和javascript兩種腳本語(yǔ)言了。
功能上感覺(jué)有點(diǎn)象BSF,但是由于隨著JDK6一起發(fā)布,所以以后影響力會(huì)更大。
而且,做演講的人也提到,jruby的開發(fā)者進(jìn)入SUN公司,恐怕不只是用ScriptEngine
支持script語(yǔ)言這么簡(jiǎn)單。今天體驗(yàn)了一下印度人說(shuō)英語(yǔ),確實(shí)是強(qiáng)...
另外還聽了一下 MBean,Concurrence方面的東西,收獲也有一些。例如在JDK6當(dāng)中,
MBeanServer缺省就啟動(dòng)了,而不像JDK5里,需要用一個(gè)命令行參數(shù)才能啟動(dòng)。
兩天下來(lái),感覺(jué)這一期的SUN Tech Day和以往最大的區(qū)別就是,這一期完全是被
SUN自己壟斷了,沒(méi)有別的公司演講, 不討論別的公司的內(nèi)容,沒(méi)有別的公司參展。
言必稱 NetBeans,操作系統(tǒng)必稱 Solaris。從一個(gè)角度來(lái)看,SUN公司確實(shí) 積極的
參與到了開源社區(qū)當(dāng)中,并且比以前更加接近用戶,也更積極的響應(yīng)用戶的request。
這一點(diǎn),從Netbeans的進(jìn)展神速, 到JDK最近幾個(gè)版本的新特性增加速度,都比JDK5
以前要好很多。這對(duì)于Java的進(jìn)一步發(fā)展,可以說(shuō)是一件好事。從另一個(gè) 角度來(lái)看,
這一屆Tech Day表現(xiàn)出來(lái)的情況,不知道是應(yīng)該說(shuō)SUN更加有了自主意識(shí),還是應(yīng)該說(shuō)
SUN確實(shí)沒(méi)有很好的組織 這次會(huì)議。從參加演講的人員,到展廳的布置來(lái)看,
都不如往屆。不知道是不是SUN財(cái)務(wù)緊張?jiān)斐傻模琱oho.
又花了兩個(gè)小時(shí)才從首堵北京的北四環(huán)中路到了家,感覺(jué)今年的Tech Day,
最大的收獲是被洗腦了,也體會(huì)到了目前最火爆的Ajax是如何的火爆。
主站:
http://blogsite.3322.org/jspwiki/