0

在 mule 中,我有许多应用程序在同一个容器上运行,它们使用相同的连接字符串/用户/密码集访问 jdbc 连接器。

当然,任何应用程序都在其 xml 配置文件中配置了相同的全局连接器,因此存在代码重复。

有没有办法为每个容器只定义一次连接并从任何应用程序访问它?

4

3 回答 3

2

我会试试这个:让一个应用程序创建数据源并将其存储在 JNDI 中,并让其他应用程序从 JNDI 中获取它。

由于没有强有力的应用程序启动顺序保证,因此一个需要 JNDI 数据源的应用程序可能会启动得太早。您需要配置 Spring 以便能够在发生故障时再次执行 JNDI 查找,并在 Mule JDBC 连接器上配置线程重试策略。

此外,您还需要在 lib/user 中安装数据源和数据库 JAR,以便所有应用程序都可以使用它们。

于 2013-09-20T15:31:11.233 回答
1

只需在系统中的某个位置在 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>
于 2013-09-20T11:54:23.300 回答
0

我已经使用域项目解决了此类问题,我在其中插入了其他项目已使用的所有数据库配置。

于 2020-01-27T17:24:33.757 回答