2014-02-25 64 views
2

我有一個定時器進程,它讀取lotus notes 5並轉儲在modeshape存儲庫中讀取的文檔。該過程將時間戳和其他相關信息寫入數據庫表中,並使用它來獲取停止的位置,然後讀取其餘文檔。UnsatisfiedLinkError:原生庫C: Domino nlsxbe.dll已經加載到另一個類加載器中

問題出現在應用程序被部署並重新部署時。當我這樣做,雖然會話與Lotus Notes的創造,它拋出我的異常:

ava.lang.UnsatisfiedLinkError:本地庫C:\多米諾\ nlsxbe.dll已裝入另一個類加載器

這因爲重新部署並沒有從JVM中移除依賴的dll和Jars。 我需要一個解決方案,我可以從JVM中刪除依賴項,或者在下次嘗試創建會話時引用相同的dll和資源。

注 - 我沒有LOTUS註釋api嘗試加載依賴項的代碼,我甚至不知道創建連接所需的依賴API和DLL,因此我移動了整個安裝文件夾蓮花筆記多米諾客戶端到我的java.library.path

請幫忙,這只是讓我瘋了。可能是一個非常簡單的問題,但我需要一些專家建議如何以更好的方式實現這一點。

+0

該問題不適用於Notes。加載相同的庫兩次應該沒有限制(至少從我知道的R6版本開始)。 –

回答

2

我修好了。我感染了NotesThread類,發現它總是試圖在導致問題的類加載器中加載nlsxbe.dll。我拋棄了使用NotesThreads(以及將來的任何IBM API)並使用java線程並解決問題的想法。

+2

NotesThreads的原因是Notes/Domino在關閉時可以終止一個線程。如果你只擴展Thread,那麼Notes/Domino無法正確終止JVM(也不能清理後端對象)......除了Notes版本之外,它聽起來像是無論如何設置了無效安裝,所以它不會影響你,除非你必須運行Notes/Domino作爲應用程序。 –

+0

謝謝西蒙的擡頭。應用程序與蓮花筆記交互的服務器部署後,沒有蓮花筆記部署,也不會有這樣的安裝。所以我想我在這方面很安全。我現在得到的新問題是蓮花筆記會話在一段時間後超時,這限制了回收對象的蓮花筆記。爲此,我在每1000條記錄之後實例化會話和數據庫對象。這應該可以做到這一點。如果沒有,那麼你可能會很快得到一個新的問題:) – TusharPanda

相關問題