測試的環境是:
Groovy 1.7.10
Tomcat 6.0.32
Groovlets是Groovy內建的Servlet功能,可以用Groovy Script直接開發動態網頁程式。
但目前的版本有個致命的陷阱,發生的情況是:
在 index.groovy 網頁程式(Groovlet)使用以下的語法
import my.webapp.utils.Helper
def helper = new Helper()
其中 my.webapp.utils.Helper 是 Groovy 撰寫的類別(檔名為Helper.groovy),但已經透過groovyc編譯成.class放在WEB-INF/classes 目錄下。
在大多數情況下,這樣用是沒問題的,因為Helper本身已經是經過編譯的class檔,所以不管用Groovy或Java寫應該都要一樣才對。所以當我的Helper程式碼已經改用Groovy撰寫,也累積超過500行,結果就掉入了這個陷阱,必須重新以Java改寫才能順利解決。
第一次用瀏覽器打開 index.groovy 是沒問題的,但重新整理之後,就開始不斷出現 404 error。
追蹤Groovy的程式碼,發現問題就在其中 AbstractHttpServlet 類別的 getResourceConnection() 函式,這個函式的定義是給 GroovyScriptEngine 呼叫使用。所以當網頁被打開,需要解析 index.groovy 的時候,GroovyServlet會透過Servlet Context取得網頁程式的路徑,再產生Groovy程式檔案的路徑,但其妙的是 Helper.groovy 也會被 getResourceConnection() 拿去解析,由於這是一個已經編譯、放在classes目錄下的類別,所以就會造成無法正確找到檔案,拋出ResourceException,最後就形成404 error。
已將這個問題丟到Groovy論壇,希望能順利解決,暫時解決的方法就是自己開發的library盡量用Java寫。
如果要用Groovy開發網站,看來Grails才是最好的選擇,因為在Grails下,幾乎各種程式(Controller/View/Model/Script/TagLib/Class)都能用Groovy打造,Grails在整合的部分應該下了不少工夫。只是目前手邊的專案,仍有停留在傳統J2EE架構,只能搭配Groovy簡化開發工作,但遇到的問題其實還不少。
訂閱:
張貼留言 (Atom)
-
▼
2011
(197)
-
▼
4月
(30)
- Proposal: Web Design Index Search Engine
- 開放源碼的Cloud Foundry打造PaaS
- 台中人體工學椅試坐的門市 Ergohuman 111、Enjoy 121、Nefil;Herman ...
- NetBeans 7.0發表,支援JDK7、Oracle資料庫
- 如果買書也能做公益?
- Ubuntu 11.04: Overlay Scrollbars in Unity
- 用 Groovy + tesseract-ocr 破解很遜的驗證碼圖片
- 改變未來生活的現在進行式,Facebook臉書效應
- 解決CSS3文字陰影效果(text-shadow)在Google Chrome瀏覽器中文字型模糊問題
- 使用Gradle快速建立Jetty網站開發測試環境
- 跨瀏覽器的CSS3圓角(rounded corner)、陰影(shadow)
- Groovlets出現404 error錯誤訊息
- 為什麼要寫網誌?
- 報名2011全球華文部落格大獎
- Install Subersion(SVN) support for Eclipse Helios ...
- UrlRewriteFilter 讓JavaEE Web Application也有漂亮的短網址
- 從「老貓學出版」電子書免費下載發現新閱讀時代
- 淺談Linux普通使用者權限安裝軟體,以node.js為例
- Monaco 適合程式碼的螢幕字型
- 使用QEMU快速測試LiveCD開機光碟
- 區網升級1000Mbps與Ubuntu查詢網路卡連線速度的方法
- 新玩具實測 INTEL 320 Series SSD 40G (SSDSA2CT040G3)
- 開放源碼的雲端企業IT架構軟體openQRM簡介
- 將 Ubuntu Linux 搬移到新硬碟
- 本誌近期IE瀏覽次數比例降至49%
- 從精實軟體開發到精實創業(Lean Startup)
- 部落格放廣告真的會有人點嗎?
- Blog2Print! 讓部落客自己也能輕鬆印製專書
- [實測] 壹電視網樂通機上盒 + 訊舟EDIMAX EW-7711UTn USB無線網路卡
- Synergy 免費 KVM 軟體,讓一組鍵盤滑鼠控制多部電腦主機
-
▼
4月
(30)
沒有留言:
張貼留言