4

請注意,我非常密切地反映了example given hereOpenEJB本地客戶端注入失敗

事實上,我的情況稍微簡單一些,因爲在這一點上我甚至沒有使用持久性單元進行測試。我的測試項目提供了一個簡單的MDB和一個會話bean; MDB和會話bean都正常加載,並且可以在沒有注入的情況下成功進行測試(以受限制的方式)。

建議的注射用@LocalClient註釋上我的單元測試與已知的錯誤而失敗:

javax.naming.NamingException: Unable to find injection meta-data for [your-class]. Ensure that class was annotated with @org.apache.openejb.api.LocalClient and was successfully discovered and deployed. See http://openejb.apache.org/3.0/local-client-injection.html

當我訪問這個網頁它告訴我,我可能需要一個額外的屬性添加到我的測試用例上下文設置。所以,現在的樣子:

@Override 
public void setUp() throws Exception { 
    initializeContext(); 
} 
public void initializeContext() { 
    Properties p = new Properties(); 
    p.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.client.LocalInitialContextFactory"); 
    // the property i've added 
    p.put("openejb.tempclassloader.skip", "annotations"); 

    try { 
     InitialContext initialContext = new InitialContext(p); 
     initialContext.bind("inject", this); 
    } catch (Throwable throwable) { 
     throwable.printStackTrace(); 
     throw new RuntimeException(throwable); 
    } 
} 

但它仍然是失敗的。我非常喜歡這個成語,如果我能夠在我的項目中成功使用它,我會非常興奮。

其他一些注意事項:

  • 我提供一個 '空' ejb-jar.xml中(在SRC /主/資源)和應用client.xml的(src/test下/資源)正如Apache建議的,告訴OpenEJB掃描類路徑[更新:事實證明,我做錯了。請參閱下面的爲我工作的建議我的答案。]
  • @LocalClient標註的測試案例不是由OpenEJB的引擎認定爲實際得到回升,妥善處理(如我的MDB是,例如)

在此先感謝您的幫助或指導。

回答

7

這個問題很可能是由描述符的位置不正確引起的,這些描述符提示OpenEJB哪些模塊可用。

爲了保證測試的類得到回升正常,確保你將一個名爲application-client.xml文件在src/test/resources/META-INF,內容如下:

<application-client/>

這應該強制OpenEJB的掃描和反應存在@LocalClient註釋。

+0

高興你發現了問題,並張貼了答案雙重感謝。我已經提交了一個JIRA進行了改進,我們可以將其添加到我們可以檢查的事項列表中https://issues.apache.org/jira/browse/OPENEJB-1570 – 2011-06-08 02:43:40

+0

備註是@LocalClient不再需要在OpenEJB 4中,任何部署描述符都不是。尚未發佈,但它看起來非常好。我們需要進一步瞭解CDI支持,然後發佈測試版。 – 2011-06-08 02:45:35

+0

謝謝@David! – 2011-06-09 13:35:01

0

我有一個類似的問題,當我試圖在一個名爲tomee-embedded-trial的測試項目中測試東西時,事實證明openejb忽略了名爲tomee - 。*的東西。

我固定它,我通過指定以下系統屬性: openejb.deployments.classpath.include=".*-trial.*"openejb.deployments.package.include=".*-trial.*"