2009-11-12 20 views
0

過去幾天我一直在爲此苦苦掙扎。我想測試容器外的DAO,但在運行測試情況下,我得到的錯誤:com iplanet ias JAR

Error creating bean with name 'SqlMapClient' defined in class path resource [applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: com/iplanet/ias/admin/common/ASException

我使用NB運行測試。人們一直在說我需要將上面的類放在測試用例的運行時類路徑中。但是,我絕對找不到那個罐子在哪裏......?我已經將我的容器classpath +罐子中的所有容器包含在我的項目lib文件夾中,幷包含到Unit測試的運行時類路徑中。我仍然有同樣的錯誤。

也爲此JAR搜索也沒有工作。

也許有人在那裏知道從哪裏得到這個怪異的罐子。希望能解決我的問題。

回答

2

這並不直接回答你的問題,但我有兩個建議。首先,現在我知道您使用的是Spring,我建議您使用自己的ServiceLocator站點查找以前的question中提到的JNDI數據源。相反,你應該使用Spring設施,然後將數據源注入到你的beans中。爲了得到一個數據源JDNI,使用Spring的JndiObjectFactoryBean,這樣的事情:

<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> 
    <property name="jndiName"> 
     <value>java:/comp/env/jdbc/myDS</value> 
    </property> 
</bean> 

然後,容器外運行(通常運行測試時)的時候,我的建議是使用JNDI數據源。相反,您應該使用Spring工具以另一種方式爲DAO提供數據源(例如,使用DriverManagerDataSource,運行測試時不需要真正的連接池)。這將允許您運行測試而無需啓動對測試有意義的iPlanet(並且您不想測試iPlanet的連接池,您想測試您的DAO)。

因此,創建一個applicationContext-test.xml用於測試時使用另一個數據訪問配置。下面,爲DriverManagerDataSource一個例子:

<bean id="dataSource" 
     class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
    <property name="driverClassName" value="..."/> 
    <property name="url" value="..."/> 
    <property name="username" value="..."/> 
    <property name="password" value="..."/> 
</bean> 

這真的是推薦的方法(檢查不同的選項更多細節章Data access using JDBC)。

PS:我不知道com/iplanet/ias/admin/common/ASException從哪裏來,但它顯然是iPlanet本身的一個。如果您確實想查明,請搜索iPlanet安裝的所有jar包,尤其是在其啓動腳本中引用的那個。但是我認爲,'你會面臨JNDI問題,被警告。

+0

當在容器外工作時,我確實停止使用JNDI名稱。相反,我使用你的建議。正如在這個問題中提到的:stackoverflow.com/questions/1716636/...你給上面的XML片段不會是足夠的。我仍然需要SqlMapClientFactoryBean(因爲我的DAO使用了getSqlMapClientTemplate()。queryForXXX()。如果我沒有SqlMapClientFactoryBean,那麼我得到一個錯誤,說'沒有sqlMapClient Found',並且在實例化THAT bean時出錯。安裝iplanet,我想我現在就安裝它來實際找到該死的東西 – Omnipresent 2009-11-12 12:25:53

+0

當然,你需要'SqlMapClientFactoryBean',我只是覆蓋數據源部分,我要檢查另一個問題,因爲有些東西令我困惑,如果你沒有對iPlanet進行任何操作,就不會得到如何拋出iPlanet異常...... – 2009-11-12 12:54:37

+0

確切地說!!和Im試圖做容器外的所有事情。無論iplanet是什麼..它必須與應用服務器相關..但appserver甚至沒有在這裏的圖片。請讓我知道,如果你想我發佈其他東西(代碼明智)。我會接受你的答案在這裏。我們可以轉向另一個問題。謝謝 – Omnipresent 2009-11-12 13:08:12

相關問題