2012-11-15 42 views
0

我正在開發一個新的我們的jdk 1.4.2,JSF + iBatis Web應用程序。iBatis單例被調用兩次

對於數據庫的事情,我已經添加了一個新的生產線在我們SqlMapConfig.xml這樣

<sqlMapConfig> 
     ... 
    <sqlMap resource="com/example/properties/SqlMapLockOfferte.xml" /> 
</sqlMapConfig> 

我創造我的查詢位置的新SqlMapLockOfferte.xml文件。

我已經將它部署在我的tomcat 4.1上,並且都顯得很好。

我已經打包,並部署在我們的測試環境中,WebLogic 8.1,並在BEA啓動時我看到的第一個奇怪的錯誤:

ERROR [IBatisSqlMapClientSingletonFactory] java.io.IOException: Could not find resource com/example/properties/SqlMapConfig.xml 

但配置文件仍然在這裏,我沒有移動它。 接下來,在應用程序日誌我看到另外一個奇怪的事情:

DEBUG com.example.ibatisimpl.IBatisSqlMapClientSingletonFactory - configuration successfully ended 
DEBUG com.example.ibatisimpl.IBatisSqlMapClientSingletonFactory - configuration successfully ended 

但是,正如其名稱暗示,該日誌是一種公共靜態方法裏面,所以我whondering爲什麼我看到這兩個時間。

最後,最有趣的事情。該Web應用程序運行正在運行,並且iBatis似乎工作正常,除了使用上述XML中定義的新查詢的部分。 在這種情況下,當我嘗試使用SqlMapClient對象時,我收到NullPointerException,我試圖實例化單身人士。

有什麼想法?

謝謝, Piwakkio。

回答

0

我想通了什麼來源於這個問題。

在我的Web應用程序中,我使用了一個HttpSessionListener,並在他的構造函數中將我的iBatis對象實例化。

在Tomcat 4.1中,所有工作都很好,但在WebLogic 8.1中,會話偵聽器似乎是在Web應用程序啓動時創建的,而這正是導致此問題的原因。 顯然,只有當Web應用程序請求時,Tomcat纔會安裝會話偵聽器。