這並不直接回答你的問題,但我有兩個建議。首先,現在我知道您使用的是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問題,被警告。
當在容器外工作時,我確實停止使用JNDI名稱。相反,我使用你的建議。正如在這個問題中提到的:stackoverflow.com/questions/1716636/...你給上面的XML片段不會是足夠的。我仍然需要SqlMapClientFactoryBean(因爲我的DAO使用了getSqlMapClientTemplate()。queryForXXX()。如果我沒有SqlMapClientFactoryBean,那麼我得到一個錯誤,說'沒有sqlMapClient Found',並且在實例化THAT bean時出錯。安裝iplanet,我想我現在就安裝它來實際找到該死的東西 – Omnipresent 2009-11-12 12:25:53
當然,你需要'SqlMapClientFactoryBean',我只是覆蓋數據源部分,我要檢查另一個問題,因爲有些東西令我困惑,如果你沒有對iPlanet進行任何操作,就不會得到如何拋出iPlanet異常...... – 2009-11-12 12:54:37
確切地說!!和Im試圖做容器外的所有事情。無論iplanet是什麼..它必須與應用服務器相關..但appserver甚至沒有在這裏的圖片。請讓我知道,如果你想我發佈其他東西(代碼明智)。我會接受你的答案在這裏。我們可以轉向另一個問題。謝謝 – Omnipresent 2009-11-12 13:08:12