對於此需求,我們嘗試通過傳遞領域使用org.wso2.carbon.user.core.util.DatabaseUtil類創建數據源,但我們總是會收到一個異常查找數據源時出錯。 我們知道在服務器啓動時,會調用org.wso2.carbon.user.core.internal.Activator - > startDeploy(BundleContext bundleContext),並創建一個新的RealmService實例,其中realm配置和數據源對象已成功初始化。在Activator類中,初始化的realmservice實例被設置爲UserCoreUtil類(UserCoreUtil.setRealmService(realmService))。 RealmService初始化調用DefaultRealmService,其中初始化數據源實例並將該對象添加到屬性中。在WSO2的現有數據庫中創建特定於應用程序的表
對於調用下面調用的任何與用戶或租戶相關的數據庫操作,都會調用CarbonContext.getThreadLocalCarbonContext()。getUserRealm()方法,該方法實際上使用DefaultRealmService在服務器啓動期間存儲的屬性中的數據源,創建userStoreManager實例並返回執行所有用戶相關操作的userRealm。
爲了訪問特定於應用程序的表,我們創建了自己的JDBCCustomManager類並嘗試執行JDBC操作。當我們執行「DatabaseUtil.getRealmDataSource(objRealmService.getBootstrapRealmConfiguration())」時,我們需要數據源來執行數據源操作,但是我們總是會收到一個異常「查找數據源時出錯:jdbc/WSO2CarbonDB」。
如果我們在JDBCUserStoreManager中編寫訪問我們表的方法,但它不是正確的方法。您能否建議是否有其他方法來獲取WSO2的數據源對象,以便我們可以在應用程序中使用它。