2017年6月10日 星期六

EJB 3.1 Embeddable API + Junit 技術心得整理

簡介

在 Junit 中使用 Embedded GlassFish Server 做爲 EJB 元件的測試環境。The EJB 3.1 Embeddable API is designed for unit testing of EJB modules.

參考範例 Using the Embedded EJB Container to Test Enterprise Applications (https://netbeans.org/kb/docs/javaee/javaee-entapp-junit.html?print=yes)




設定

預設行爲


  •  Embedded EJB Container 會複製 Glassfish Domain 下的 domain.xml 做爲他的 Domain 設定.
  •  Embedded EJB Container 會在使用者目錄 下建立暫時的 domain, 例如: C:/Users/user/AppData/Local/Temp/domain6466380673056850xml


啓動設定

 Embedded EJB Container 啓動時,可進行設定以下的 Property [1]:
  •  Installation location: Embedded EBJ Container 的安裝位置,預設為 GlassFish Server 的位置。
  •  Instance location:Embedded EBJ Container instance 的安裝位置,依優先順序為: glassfish.embedded.tmpdir system property value, java.io.tmp system property value,as-install/domains/domain1
  •  configuration.file:使用的設定檔,預設為 domain-dir/config/domain.xml
  •  Application Name:應用程式的名稱,會影響 EJB 元件的 JNDI 名稱。預設的 Application name 為 classes。類別的預設 JNDI 名稱為 jndi:global/classes/[you_class_name]。若 Application Name 設爲 App,則類別的預設名稱為 jndi:global/app/classes/[you_class_name]


as-install 是指 GlassFish Server 安裝的根目錄,内有 domains 及 lib 目錄。
domain-dir 是指 伺服器實體的根目錄,例如: C:\glassfish4\glassfish\domains

在 Log 檔的一開始會顯示 Embedded GlassFish Server 所使用的:installation location, configuration file. 也可以在 Log 檔中找到 EJB 元件的 JNDI 名稱。


Resources 的設定

若要測試 Entity Bean,需手動啓動資料庫。

和一般的 GlassFish Server 上的 Resources 設定相同。可使用 glassfish-resources.xml 來設定。或者,到 Glassfish 的 Admin Console 設定 jdbc resources。

若 Resources 未設定好,執行測試時會出現錯誤訊息:
Jun 09, 2017 1:54:22 PM org.glassfish.deployment.admin.DeployCommand execute
SEVERE: Exception while preparing the app : Invalid resource : { ResourceInfo : (jndiName=java:app/jdbc/TicketClass__pm), (applicationName=classes) }
com.sun.appserv.connectors.internal.api.ConnectorRuntimeException: Invalid resource : { ResourceInfo : (jndiName=java:app/jdbc/TicketClass__pm), (applicationName=classes) }

如果確認 Resource 的設定無誤,但執行測試時仍然出現上述錯誤,試著重新部署應用程式,看是否能解決問題。



延伸閲讀


  •  Getting Started in Arquillian Guides, http://arquillian.org/guides/getting_started/.


References

[1] Oracle, 2011, EJB 3.1 Embeddable API Properties in Oracle GlassFish Server 3.1 Embedded Server Guide. https://docs.oracle.com/cd/E18930_01/html/821-2424/gjlde.html. Accessed on 2017/06/10.
[2] Oracle , 2013. GlassFish Server Open Source Edition Embedded Server Guide, Release 4.0. http://www.emse.fr/~lalevee/ismin/eb/documents/glassfish-docs/embedded-server-guide.pdf. Accessed on  2017/06/10

沒有留言: