西元2006年03月30日
Java EE 5.0 Resource Injections
Java EE 5.0 之中有定義一些可以使用 injection 的 classes
*Servlet
- servlets
- servlet filters
- event listeners
* JSP
- tag handlers
- tag library event listeners
* JSF
- scoped managed beans
* JAX-WS
- service endpoints
- handlers
* EJB
- beans
- interceptors
* Java EE platform
- main class ( static )
- login callback handler
之前沒有看到這個規定, 難怪我嘗試著使用 Struts Action 透過 @Resource, @EJB 取得相關的 Resources, 都是回傳 NULL, 看來 action 之中目前僅能透過 JNDI context.lookup 的方式取得 ejb3 及其他的環境變數.
另外, 曾經當面和 saijones 提到 Deployment Descriptor 與 Annotations 的互補性, 在 spec 中也有定義, 當你在撰寫程式的時候, 使用 @Annotations 可以簡化開發的流程, 基本上, 你就少寫了一個 XML 檔案, 更可以直接設定預設值. 但是當部署人員或應用系統組合人員, 發現你的一些數值需要重新設定, 是不必重新打開原始碼, 修改 @annotations 的部分, 僅僅需要丟一個 xml 檔案放在 /META-INF/ 之中.
不過, 這種方法, 會不會造成 debug 更為艱鉅呢, 如果工程師被告知有 bugs, 可能永遠不知道是 deployer 將初始值修改成另外一個數值 !! 看來, 簡化開發是否能夠簡化 Debug !! 將會是新的 UnitTest 設計考驗 !!
另外, 使用 java EE platform 之中的 annotation 大多是 @Retention 為 RUNTIME 的, 所以並非僅用於 compile-time, annotation 的資料是會封裝在 classes 之中.. 所以使用上要格外留意 :)
21:05 發表於 *Overview | 永久網址 | 留言 (0) | Email this


The comments are closed.