是否有可能从其他服务中获取数据库主机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。通过这种方式,我可以避免在每次项目更改代码时感到头痛,然后再次部署。
是否可以这样做或有其他方法吗?
答案 0 :(得分:0)
如果您的网络设备(例如DSL路由器)支持它:
<property name="url" value="jdbc:mysql://db.domain.com:3306/myDBU"/>
/etc/hosts
文件(在Unix上,在Windows上为C:/Windows/System32/drivers/etc/hosts
)中的IP地址映射为db.domain.com nn.nn.nn.nn
,其中nn.nn.nn.nn
是IP地址使用这两个选项,在启动时使用以下JVM配置设置,以便JVM不会长时间缓存DNS条目(否则每次IP地址更改时都必须重新启动JVM)。
java -Dsun.net.inetaddr.ttl=<TTL in seconds>
您可以将此值设置为较小的数字,例如10
,以便每隔10秒清除JVM的DNS缓存。这样,只要IP地址发生变化,您的应用程序将最多不可用10秒。如果您可以使用慢速连接,您甚至可以将此值设置为0
,在这种情况下,JVM将永远不会缓存DNS条目,并始终会转到操作系统来解析主机名。