通过 tomcat 8.5 连接到 Oracle8 的选项
Options to connect to Oracle8 through tomcat 8.5
我正在 Tomcat 8.5.40 上开发 war 运行,使用 jdk 8.261 编译,我需要使用 ojdb8-19.3 连接到 Oracle .0.0 驱动程序。将有更多 war 连接到同一个数据库。
AFAIK 并在文档中找到,实现连接的主要方法有两种:
- Context/Resource/JNDI (https://tomcat.apache.org/tomcat-8.5-doc/jndi-datasource-examples-howto.html)
- Plain Old Java (http://tomcat.apache.org/tomcat-8.5-doc/jdbc-pool.html#Plain_Ol'_Java)(出于遗留原因首选)
由于我担心连接的性能,我将使用连接池。
我的问题是:
两种方法在性能方面是否相同?
我只是想知道是否使用上下文 tomcat 可以更好地管理池,特别是当有多个 war 使用它时。
在代码中而不是 JNDI 中配置数据源有几个缺点:
您引入了代码对 tomcat-jdbc
和该库的特定版本的依赖。这意味着,您的应用程序只能在 Tomcat.
的特定版本上运行
您失去了应用程序之间连接池的优势:如果您以编程方式创建数据源,每个应用程序都将拥有自己的连接池。另一方面,通过使用 JNDI,您可以决定是为每个应用程序创建一个数据源还是共享一个全局数据源(参见 Context versus GlobalNamingResources)。
如果您使用全局数据源,则池中的空闲连接可供所有应用程序使用,因此需要打开新的 TCP/IP 数据库连接的频率会降低(建立新连接的时间成本TCP/IP连接是毫秒级的,所以比较高)。
GlobalNamingResources 示例
在server.xml
中配置数据源:
<GlobalNamingResources>
<Resource auth="Container"
type="javax.sql.DataSource"
name="jdbc/globalDb"
username="username"
password="secret"
url="jdbc:..." />
...
</GlobalNamingResources>
将 <ResourceLink>
添加到您的上下文文件:
<Context>
<ResourceLink name="jdbc/db"
global="jdbc/globalDb"
type="javax.sql.DataSource" />
...
</Context>
我正在 Tomcat 8.5.40 上开发 war 运行,使用 jdk 8.261 编译,我需要使用 ojdb8-19.3 连接到 Oracle .0.0 驱动程序。将有更多 war 连接到同一个数据库。
AFAIK 并在文档中找到,实现连接的主要方法有两种:
- Context/Resource/JNDI (https://tomcat.apache.org/tomcat-8.5-doc/jndi-datasource-examples-howto.html)
- Plain Old Java (http://tomcat.apache.org/tomcat-8.5-doc/jdbc-pool.html#Plain_Ol'_Java)(出于遗留原因首选)
由于我担心连接的性能,我将使用连接池。 我的问题是:
两种方法在性能方面是否相同?
我只是想知道是否使用上下文 tomcat 可以更好地管理池,特别是当有多个 war 使用它时。
在代码中而不是 JNDI 中配置数据源有几个缺点:
您引入了代码对
的特定版本上运行tomcat-jdbc
和该库的特定版本的依赖。这意味着,您的应用程序只能在 Tomcat.您失去了应用程序之间连接池的优势:如果您以编程方式创建数据源,每个应用程序都将拥有自己的连接池。另一方面,通过使用 JNDI,您可以决定是为每个应用程序创建一个数据源还是共享一个全局数据源(参见 Context versus GlobalNamingResources)。
如果您使用全局数据源,则池中的空闲连接可供所有应用程序使用,因此需要打开新的 TCP/IP 数据库连接的频率会降低(建立新连接的时间成本TCP/IP连接是毫秒级的,所以比较高)。
GlobalNamingResources 示例
在server.xml
中配置数据源:
<GlobalNamingResources>
<Resource auth="Container"
type="javax.sql.DataSource"
name="jdbc/globalDb"
username="username"
password="secret"
url="jdbc:..." />
...
</GlobalNamingResources>
将 <ResourceLink>
添加到您的上下文文件:
<Context>
<ResourceLink name="jdbc/db"
global="jdbc/globalDb"
type="javax.sql.DataSource" />
...
</Context>