我們有類似的情況,我們開發了一個連接器來訪問外部WebDav存儲,並希望從獨立應用程序(非託管)使用它。
我確實認爲最簡單的方法是在設計層面解決這個問題,並以連接器的核心邏輯與JCA無關且可以輕鬆重用的方式組織您的代碼。然後,您可以使用JCA特定的代碼將連接器公開給AS。它甚至可能被封裝在兩個jar文件中 - 這至少是我們選擇的解決方案(但我們將它們全部打包成一個.jar文件)。
否則,JCA連接器是 「膠水」 以下三方:
- 應用服務器
- 的EIS
- 應用程序組件。
應該可以通過輕量級實現必需的類來模擬AS,然後直接使用JCA連接器。
AS關於JCA連接器的一項主要工作是管理連接池,並且從我記憶中,您應該實現的相應接口是ConnectionManager
。
JCA連接器收到對ConnectionManager
的引用,但實現是AS特定的。編寫一個提供基本池化(或根本沒有池化)的輕量級實現聽起來是可行的。
我曾經寫過一次sequence diagram of the connection allocation機制。也許你會覺得它很有用。另一個界面是ResourceAdapter
,您可以在其中定義啓動/關閉,但這很容易手動調用。
(可能有一點比這更多,它當然取決於你的JCA連接器使用了什麼,例如,如果它使用Work
和WorkManager
,那麼它變得更復雜嘲笑。但它似乎並不是你的情況。)
否則,我認爲Spring對JCA有一些支持,可能值得看看他們是如何做到的。
從閱讀JCA規範,有 據說一些支持在非託管環境
那麼你可以說你是指對規範的特定部分執行 代碼?
我對規範的引用基於JCA 1.5規範中的各個子部分,如3.4,5.3.8,6.4.2等。感謝您的幫助。不幸的是,它看起來像我們的代碼,它太緊密地纏繞在規範的託管部分的所有錯誤的地方。 – 2010-05-06 21:57:13