2011-08-05 32 views
0

我將rar文件放置在jboss的部署文件夾中作爲7來部署。稍後部署我的war文件。如何管理JCA ManagedConnectionFactory的生命週期?

此連接器通過standalone.xml中的定義綁定到JNDI位置。

當它被部署時,默認情況下會執行createConnectionFactory(ConnectionManager cm)。

我做這個方法的一些內部管理與類加載器

的ClassLoader contextClassLoader = Thread.currentThread()getContextClassLoader()的幫助。

當我嘗試使用EJB

問題是最初訪問適配器在部署contextClassLoader爲空的時間則再次執行該createConnectionFactory(的ConnectionManager釐米)方法。之後它從ejb調用時有一個值。我的家務管理失敗了。

問題:

  1. createConnectionFactory(的ConnectionManager釐米)在部署=>的時間被執行,這是正確的行爲?

  2. 如何配置ironJacamar/jboss在部署時不執行此方法?

其他信息:Jboss的AS7,NetBeans的7,Jdk1.7

編輯: 上述行爲是正確的。我使用的適配器要求部署時使用的類加載器必須與運行時使用的類加載器相同。默認情況下,它使用Thread.currentThread()。getContextClassLoader()。我改變它使用ClassLoader cl = MyManagedConnectionFactory.class.getClassLoader();

回答

1

createConnectionFactory(ConnectionManager cm)在部署時執行=>這是正確的行爲嗎?

如果你有一個連接工廠的定義,那麼我會希望看到調用此方法,當容器創建和綁定在JNDI名稱空間中的連接工廠的定義 - 你得到的通話採取的ConnectionManager表明事實這是在受管方案中執行的。

JCA規範的第6章詳細描述了資源適配器的這個領域,所以我會想到一個明確的答案。編輯:第17章也可能有關。

+0

是的,你是對的。我使用的適配器要求部署時使用的類加載器必須與運行時使用的類加載器相同。默認情況下,它使用Thread.currentThread()。getContextClassLoader()。我將其更改爲使用 ClassLoader cl = MyManagedConnectionFactory.class.getClassLoader(); –

相關問題