<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="/rss20.xsl" media="screen"?>
<rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<atom:link href="http://jakarta99.blogspirit.com/_overview/index.rss" rel="self" type="application/rss+xml" />
<title>jini's Java EE 5.0 部落格 - _overview</title>
<description>jini ( 99% jakarta )</description>
<link>http://jakarta99.blogspirit.com/_overview/</link>
<lastBuildDate>Mon, 17 Jul 2006 09:57:27 +0200</lastBuildDate>
<generator>blogSpirit.com</generator>
<copyright>All Rights Reserved</copyright>
<item>
<guid isPermaLink="true">http://jakarta99.blogspirit.com/archive/2006/07/16/struts-action-get-resource-by-injection.html</guid>
<title>Struts Action get Resource by Injection</title>
<link>http://jakarta99.blogspirit.com/archive/2006/07/16/struts-action-get-resource-by-injection.html</link>
<author>noreply@blogspirit.com (jini(99% jakarta))</author>
<category>*Overview</category>
<pubDate>Mon, 17 Jul 2006 01:40:00 +0200</pubDate>
<description>
&lt;a href=&quot;http://www.codecomments.com/archive419-2006-6-954408.html&quot; target=&quot;_blank&quot;&gt;http://www.codecomments.com/archive419-2006-6-954408.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Craig McClanahan:&lt;/strong&gt;&lt;br /&gt;&lt;font color=&quot;3333ee&quot;&gt;&lt;br /&gt;&lt;em&gt;A couple of possibilities come to mind ...&lt;br /&gt;&lt;br /&gt;* Inject the resource into a container-instantiated object&lt;br /&gt;(like a servlet), and modify your framework to copy values&lt;br /&gt;in when it creates, say, an Action instance in the Struts case.&lt;br /&gt;BIG PROBLEM: thread safety ... the servlet instance is shared&lt;br /&gt;across all threads, so the variable would get stomped on if there&lt;br /&gt;was more than one simultaneous request.&lt;br /&gt;&lt;br /&gt;* Modify your framework to scan for the injection annotations itself&lt;br /&gt;when it creates new object instances, and perform the same kinds&lt;br /&gt;of injection that the container can do.&lt;br /&gt;&lt;br /&gt;* Use a dependency injection framework that knows how to initialize&lt;br /&gt;properties from JNDI lookups, and configure it to look up the&lt;br /&gt;corresponding resources.&lt;br /&gt;&lt;br /&gt;* Use the managed beans portion of JSF (even if you are not using&lt;br /&gt;the rest of it) as a dependency injection framework, and let the&lt;br /&gt;container go ahead and do the injection for you. (If you're using&lt;br /&gt;an additional framework, it would need to be modified to use&lt;br /&gt;managed beans to create object instances, instead of doing&lt;br /&gt;Class.newInstance() things itself).&lt;br /&gt;&lt;br /&gt;Craig&lt;/em&gt;&lt;br /&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;換句話說, Application Server 決定了是否可以 inject 相關的 Resource 到你的系統之中,&lt;br /&gt;如果該 Application Server 並沒有支援 Struts Action 或其他 Framework,&lt;br /&gt;就等於即使你的系統也在 Java EE 5.0 的環境中執行 ~~&lt;br /&gt;也得使用 JNDI lookup 去取得相關的 Resource, &lt;br /&gt;&lt;br /&gt;假設仍然使用習慣的 Framework, 就不會修改相關原始碼去掃描 Annotations.&lt;br /&gt;應該也不會另外找個 DI Framework 來增加 Framework 的複雜度吧..&lt;br /&gt;難道 大家都要被迫學習 JSF ?!&lt;br /&gt;&lt;br /&gt;看來.. 在 Web-tier 利用 InjectionFilter or InjectionInitServlet 先取得相關資源&lt;br /&gt;例如 DataSources, EntityManager 放到 SessionScope 或 ApplicationScope ?&lt;br /&gt;應該是比較可行的方案了..
</description>
</item>
<item>
<guid isPermaLink="true">http://jakarta99.blogspirit.com/archive/2006/04/09/resource-資源取得-jndi-的相關資源.html</guid>
<title>@Resource 資源取得 JNDI 的相關資源</title>
<link>http://jakarta99.blogspirit.com/archive/2006/04/09/resource-資源取得-jndi-的相關資源.html</link>
<author>noreply@blogspirit.com (jini(99% jakarta))</author>
<category>*Overview</category>
<pubDate>Sun, 09 Apr 2006 17:20:07 +0200</pubDate>
<description>
在 TheServerside 看到這篇文章&lt;br /&gt;http://www.theserverside.com/news/thread.tss?thread_id=39828&lt;br /&gt;&lt;br /&gt;我利用簡單的資料庫連結做說明, Java EE 5.0 如何使用 @Resource 來取得相關資源&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1. JDBC direct connect the Database&lt;/strong&gt;&lt;br /&gt;這是簡單的範例, 我們可以直接利用 DriverManager 去取得 connection, 這種寫法是由  Application 直接驅動連結, 沒有透過 Container, 我認為不是很好的方法 !&lt;br /&gt;&lt;code&gt;&lt;br /&gt;// JDBC Driver 的主要 class 名稱&lt;br /&gt;Class.forName(&quot;com.mysql.jdbc.Driver&quot;); &lt;br /&gt;// 每個 Driver都有標準的連結位置撰寫方式&lt;br /&gt;String url = &quot;jdbc:mysql://host:port/database&quot;; &lt;br /&gt;// 將 URL 與登入帳號密碼連結&lt;br /&gt;Connection con = DriverManager.getConnection( url ,&quot;username&quot;,&quot;password&quot;); &lt;br /&gt;//....&lt;br /&gt;con.close();&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2. DataSource Connection&lt;/strong&gt;&lt;br /&gt;透過 JNDI 以及 Context lookup 取得 DataSource, 再用 DataSource.getConnection() 取得 Connection.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;Context initCtx = new InitialContext();&lt;br /&gt;DataSource ds = (DataSource) initCtx.lookup(&quot;jdbc/mysql&quot;);&lt;br /&gt;Connection conn = ds.getConnection();&lt;br /&gt;//... use this connection to access the database ...&lt;br /&gt;conn.close();&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;3. @Resource mapped global JNDI &lt;/strong&gt;&lt;br /&gt;當開發工程師知道, application server 之中, 已經具備了 jdbc/mysql 這個 JNDI Name, 這樣算是取代了 JNDI context lookup 的方法.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;@Resource(name=&quot;jdbc/mysql&quot;)&lt;br /&gt;private DataSource ds;&lt;br /&gt;&lt;br /&gt;Connection conn = ds.getConnection();&lt;br /&gt;//... use this connection to access the database ...&lt;br /&gt;conn.close();&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;4. @Resource dependency injection&lt;/strong&gt;&lt;br /&gt;當開發工程師不知道, application server 之中, 到底具備了哪些資源可以利用, 可以利用 Java EE 5.0 Annotation Resource Injection 的特性, 讓組裝部署人員做相關的設定.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;@Resource&lt;br /&gt;private DataSource ds;&lt;br /&gt;&lt;br /&gt;Connection conn = ds.getConnection();&lt;br /&gt;//... use this connection to access the database ...&lt;br /&gt;conn.close();&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;web.xml&lt;br /&gt;&lt;code&gt;&lt;br /&gt;    &lt;resource-ref&gt;&lt;br /&gt;        &lt;res-ref-name&gt;packageName.ClassName/ds&lt;/res-ref-name&gt;&lt;br /&gt;        &lt;res-type&gt;javax.sql.DataSource&lt;/res-type&gt;&lt;br /&gt;        &lt;res-auth&gt;Container&lt;/res-auth&gt;&lt;br /&gt;        &lt;res-sharing-scope&gt;Shareable&lt;/res-sharing-scope&gt;&lt;br /&gt;    &lt;/resource-ref&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;sun-web.xml &lt;br /&gt;&lt;code&gt;&lt;br /&gt;  &lt;resource-ref&gt;&lt;br /&gt;    &lt;res-ref-name&gt;DSResourceInjectionServlet/ds&lt;/res-ref-name&gt;&lt;br /&gt;    &lt;jndi-name&gt;jdbc/__default&lt;/jndi-name&gt;&lt;br /&gt;  &lt;/resource-ref&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;所以, 組裝人員可以在 web.xml , sun-web.xml ( glassfish ) 設定相關的 injection 環境及對應到 application server 的 global 的 jndi 設定, 這樣, 可以輕易地完成 Injection 的實作.
</description>
</item>
<item>
<guid isPermaLink="true">http://jakarta99.blogspirit.com/archive/2006/03/30/java-ee-5-0-resource-injections.html</guid>
<title>Java EE 5.0 Resource Injections</title>
<link>http://jakarta99.blogspirit.com/archive/2006/03/30/java-ee-5-0-resource-injections.html</link>
<author>noreply@blogspirit.com (jini(99% jakarta))</author>
<category>*Overview</category>
<pubDate>Thu, 30 Mar 2006 21:05:00 +0200</pubDate>
<description>
Java EE 5.0 之中有定義一些可以使用 injection 的 classes&lt;br /&gt;&lt;br /&gt;*Servlet&lt;br /&gt;  - servlets&lt;br /&gt;  - servlet filters&lt;br /&gt;  - event listeners&lt;br /&gt;* JSP&lt;br /&gt;  - tag handlers&lt;br /&gt;  - tag library event listeners&lt;br /&gt;* JSF&lt;br /&gt;  - scoped managed beans&lt;br /&gt;* JAX-WS&lt;br /&gt;  - service endpoints&lt;br /&gt;  - handlers&lt;br /&gt;* EJB&lt;br /&gt;  - beans&lt;br /&gt;  - interceptors&lt;br /&gt;* Java EE platform&lt;br /&gt;  - main class ( static )&lt;br /&gt;  - login callback handler&lt;br /&gt;&lt;br /&gt;之前沒有看到這個規定,  難怪我嘗試著使用 Struts Action 透過 @Resource, @EJB 取得相關的 Resources, 都是回傳 NULL, 看來 action 之中目前僅能透過 JNDI context.lookup 的方式取得 ejb3 及其他的環境變數.&lt;br /&gt;&lt;br /&gt;另外, 曾經當面和 saijones 提到 Deployment Descriptor 與 Annotations 的互補性, 在 spec 中也有定義, 當你在撰寫程式的時候, 使用 @Annotations 可以簡化開發的流程, 基本上, 你就少寫了一個 XML 檔案, 更可以直接設定預設值. 但是當部署人員或應用系統組合人員, 發現你的一些數值需要重新設定, 是不必重新打開原始碼, 修改 @annotations 的部分, 僅僅需要丟一個 xml 檔案放在 /META-INF/ 之中.&lt;br /&gt;&lt;br /&gt;不過, 這種方法, 會不會造成 debug 更為艱鉅呢, 如果工程師被告知有 bugs, 可能永遠不知道是 deployer 將初始值修改成另外一個數值 !! 看來, 簡化開發是否能夠簡化 Debug !! 將會是新的 UnitTest 設計考驗 !!&lt;br /&gt;&lt;br /&gt;另外,  使用 java EE platform 之中的 annotation 大多是 @Retention 為 RUNTIME 的, 所以並非僅用於 compile-time, annotation 的資料是會封裝在 classes 之中.. 所以使用上要格外留意 :)
</description>
</item>
<item>
<guid isPermaLink="true">http://jakarta99.blogspirit.com/archive/2006/02/16/為何要使用-java-ee5-之官方說辭.html</guid>
<title>為何要使用 Java EE5 之官方說辭</title>
<link>http://jakarta99.blogspirit.com/archive/2006/02/16/為何要使用-java-ee5-之官方說辭.html</link>
<author>noreply@blogspirit.com (jini(99% jakarta))</author>
<category>*Overview</category>
<pubDate>Thu, 16 Feb 2006 08:47:53 +0100</pubDate>
<description>
java.sun 有一篇文章 Why Move to Java EE ( http://java.sun.com/javaee/whymove.html )&lt;br /&gt;這篇文章說明了使用 Java EE 5 可以達到&lt;br /&gt;&lt;br /&gt; - 簡化開發 : 最重要的改善應該是利用 annotation 取代 D.D. ( Deployment Descriptor ) 吧 !&lt;br /&gt; - EJB 的改善 : 採用 POJOs 的方式以及加強 Persistence 的技術. 讓 EJB3 開發上更為容易 !&lt;br /&gt; - 加強 WebServices 的功能 : 除了開發上的簡化之外更整合了許多最新的技術&lt;br /&gt; - JSF, JSTL, AJAX 等 Web 技術  &lt;br /&gt;&lt;br /&gt;我從撰寫 J2EE 到去年更名的 JavaEE 已經是第五個年頭.&lt;br /&gt;在其間, 由 Servlet 轉到 JSP 再利用 struts, ejb, hibernate 等等的技術與整合方式,&lt;br /&gt;現在覺得無論是什麼架構, 一定要和 IDE 整合的更平順, 讓開發上更為容易 !&lt;br /&gt;&lt;br /&gt;例如, Hibernate 透過 Middlegen 可以產生 hbm.xml 及 PersistenceObject, 這樣子的開發模式,&lt;br /&gt;比起使用 IDE 製作 DAO + ValueObject 來得輕鬆與容易. &lt;br /&gt;我相信未來 EJB3.0 的撰寫與測試, 結合 IDE 會更方便 :)&lt;br /&gt;&lt;br /&gt;但是 Java Enterprise Edition 包含了 Programming 技術之外, 還有 Security, Transaction, Management 等底層.&lt;br /&gt;我覺得現在所有的 Application Server 都以 JMX 做為核心來製作. 這是一件好事情, 另外 Secuirty 是否能夠標準化, 我當然期望能夠標準化 ~ Authentication / Authorization for J2EE 的標準應該還有一段路要處理 !&lt;br /&gt;&lt;br /&gt;JSF + EJB3 這種開發模式是否能夠成功呢 ?&lt;br /&gt;說真的, JSF 成為 Java EE 5 Application Server 的標準之一, 我卻看不到他的未來.
</description>
</item>
</channel>
</rss>