Spring从服务中获取DB URL

时间:2015-05-18 03:29:54

标签: spring spring-mvc

是否有可能从其他服务中获取数据库主机URL,以便在我的春季进行配置。

例如,我以这种方式在我的xml中进行配置

<bean class="org.springframework.jdbc.datasource.DriverManagerDataSource"
        id="dataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
        <property name="url" value="jdbc:mysql://49.111.231.832:3306/myDBU"></property>
        <property name="username" value="user"></property>
        <property name="password" value="user123"></property>
    </bean>

我在外面暴露了我的mysql服务器......一切都运行良好了好几天.. 因为我是一个动态IP地址,它至少在3天内更改一次,所以我想写一个服务,其中我将在另一个项目中更新我的IP地址,并希望使用该服务来获取该IP并且想要通知在我上面的项目中配置动态IP。通过这种方式,我可以避免在每次项目更改代码时感到头痛,然后再次部署。

是否可以这样做或有其他方法吗?

1 个答案:

答案 0 :(得分:0)

选项1:将IP地址发布到动态DNS服务。

如果您的网络设备(例如DSL路由器)支持它:

  1. 注册动态DNS服务,例如www.dyn.com
  2. 为自己保留一个域名。
  3. 将您的网络设备配置为将其IP地址发布到您在步骤2中注册的域上的服务提供商。
  4. 选项2:在配置文件中使用主机名而不是IP地址。

    1. 在配置文件中使用主机名,例如<property name="url" value="jdbc:mysql://db.domain.com:3306/myDBU"/>
    2. 将主机名添加到本地/etc/hosts文件(在Unix上,在Windows上为C:/Windows/System32/drivers/etc/hosts)中的IP地址映射为db.domain.com nn.nn.nn.nn,其中nn.nn.nn.nn是IP地址
    3. 编写后台脚本,只要检测到更改,就会将主机名更新为IP地址映射。
    4. 每当映射发生更改时,请刷新服务器DNS缓存。
    5. 使用这两个选项,在启动时使用以下JVM配置设置,以便JVM不会长时间缓存DNS条目(否则每次IP地址更改时都必须重新启动JVM)。

      java -Dsun.net.inetaddr.ttl=<TTL in seconds>

      您可以将此值设置为较小的数字,例如10,以便每隔10秒清除JVM的DNS缓存。这样,只要IP地址发生变化,您的应用程序将最多不可用10秒。如果您可以使用慢速连接,您甚至可以将此值设置为0,在这种情况下,JVM将永远不会缓存DNS条目,并始终会转到操作系统来解析主机名。