【问题标题】:Mulesoft + Connect with different database servers dynamically using single connector configurationMulesoft + 使用单一连接器配置动态连接不同的数据库服务器
【发布时间】:2020-01-26 11:27:36
【问题描述】:

根据标志或不带标志动态连接不同的数据库服务器,并且不想使用选择连接器与其他数据库服务器连接,因为我们在使用多个数据库连接器的项目中使用相同的数据库配置超过 1000 次。如果我们使用选择连接器,我们需要在项目中的任何地方应用。例如

使用 Oracle 数据库服务器标记 True Connect 和使用 SQL 数据库服务器标记 False Connect

【问题讨论】:

    标签: mule anypoint-studio dataweave mule-esb mulesoft


    【解决方案1】:

    我假设是 Mule4。如果你希望 Mule3 的这个应该是类似的,但你需要编写 MEL 而不是 DataWeave 表达式。

    我只是能够使用以下Database Config 全局元素连接到两个不同的数据库,一个 MySQL 和一个 Derby:

    <db:config name="Database_Config" doc:name="Database Config" doc:id="af508698-f0a0-44fa-89ee-d67e5d0a5ee8" >
        <db:generic-connection url='#[if (false) "jdbc:mysql://hostname:3306/training?user=name&amp;password=pass" else "jdbc:derby://localhost:1527/memory:training"]' driverClassName='#[if (false) "com.mysql.jdbc.Driver" else "org.apache.derby.jdbc.ClientDriver"]' />
    </db:config>
    

    你必须确保我在你的pom.xml 中有两个 JDBC 驱动程序。

    【讨论】:

    • 在 mule 3 中,我们无法动态编写驱动程序类名 请参阅此语法 #[dw('oracle.jdbc.driver.OracleDriver when (true == true) 否则 com.microsoft.sqlserver.jdbc .SQLServerDriver')]
    • 或者这样 #[\"oracle.jdbc.driver.OracleDriver" when (true == true) else "com.microsoft.sqlserver.jdbc.SQLServerDriver"]
    • 您是否尝试过创建两个全局元素并改为在全局元素上编写 MEL 条件?
    • 是的,我试过了,你能建议在应用程序执行期间更新全局属性的方法吗?我必须使用入站属性更新值。
    • 我也尝试过,但无法在 mule3 中使用。我确实尝试创建一个 bean 并将 urldriverName 属性传递给 StandardDataSource 类无济于事。类名总是失败——在我运行这些测试之后,我不相信它可以参数化 TBH。
    猜你喜欢
    • 2016-10-27
    • 1970-01-01
    • 1970-01-01
    • 2011-08-15
    • 1970-01-01
    • 2017-11-22
    • 1970-01-01
    • 1970-01-01
    • 2017-02-02
    相关资源
    最近更新 更多