在 mule 中,我有许多应用程序在同一个容器上运行,它们使用相同的连接字符串/用户/密码集访问 jdbc 连接器。
当然,任何应用程序都在其 xml 配置文件中配置了相同的全局连接器,因此存在代码重复。
有没有办法为每个容器只定义一次连接并从任何应用程序访问它?
在 mule 中,我有许多应用程序在同一个容器上运行,它们使用相同的连接字符串/用户/密码集访问 jdbc 连接器。
当然,任何应用程序都在其 xml 配置文件中配置了相同的全局连接器,因此存在代码重复。
有没有办法为每个容器只定义一次连接并从任何应用程序访问它?
我会试试这个:让一个应用程序创建数据源并将其存储在 JNDI 中,并让其他应用程序从 JNDI 中获取它。
由于没有强有力的应用程序启动顺序保证,因此一个需要 JNDI 数据源的应用程序可能会启动得太早。您需要配置 Spring 以便能够在发生故障时再次执行 JNDI 查找,并在 Mule JDBC 连接器上配置线程重试策略。
此外,您还需要在 lib/user 中安装数据源和数据库 JAR,以便所有应用程序都可以使用它们。
只需在系统中的某个位置在 xml 中为您的 JDBC 连接器创建一个 spring bean,然后让您的所有应用程序将其加载到您的应用程序中:
<spring:import resource="JDBC-beans.xml" />
和xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd ">
<!-- Initialization for data source -->
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/TEST"/>
<property name="username" value="root"/>
<property name="password" value="password"/>
</bean>
</beans>
我已经使用域项目解决了此类问题,我在其中插入了其他项目已使用的所有数据库配置。