【发布时间】:2015-08-18 06:28:35
【问题描述】:
我有一些应用程序通过 SpringJDBC 和普通 JDBC 连接到 Oracle 数据库。
JDBC URL 模式是 -
jdbc:oracle:thin:@hostname:portNumber/schemaName
我们正在尝试创建一个可以与应用程序相关的 TNS 条目。例如,如果有一个应用程序 StockTrade,那么架构名称将为 DBStockTrade。
但是开发者仍然需要知道用于构建 JDBC URL 的主机名和端口号,并且需要在架构名称更改时进行二进制更改。
有没有办法避免使用主机名和端口号,而只使用模式名称来连接数据库?这个想法是使用某种只包含模式名称的属性文件,并去掉其他细节。
【问题讨论】:
-
为什么不使用 jndi 查找?
-
这些客户端/服务器应用程序是否部署到大量客户端?还是将三层应用程序部署到数量相对较少的应用程序服务器上?您可以使用 Oracle Internet Directory (OID) 来集中存储所有 TNS 信息,并在应用程序中使用静态 TNS 别名。但这通常在有大量客户端应用程序的客户端/服务器世界中比在有少量相同配置的应用程序服务器的三层世界中更有意义。
-
你能试试 jdbc url jdbc:oracle:thin:@hostname:portNumber:Database_Name 我正在以这种方式使用我的项目并且不会引起问题。
-
@ÖmerFarukKurt - 如何消除对主机名和端口的依赖?您只是使用 SID 而不是服务名称?
-
将配置外部化到属性文件或 JNDI 中,您不需要进行“二进制更改”。