通过tomcat 8.5连接到Oracle8的选项



我正在Tomcat 8.5.40上运行一个war,它是用jdk 8.261编译的,我需要用ojdb8-19.3.0.0驱动程序连接到Oracle。将会有更多的战争连接到同一个数据库。

在AFAIK和文档中,有两种主要的方法来实现连接:

  • 上下文/资源/JNDI(https://tomcat.apache.org/tomcat-8.5-doc/jndi-datasource-examples-howto.html)
  • 纯古Java(http://tomcat.apache.org/tomcat-8.5-doc/jdbc-pool.html#Plain_Ol'_Java((出于遗留原因,首选(

由于我关心连接的性能,我将使用连接池。我的问题是:

两种方法在性能方面是否相同

我只是想知道使用上下文,tomcat是否能更好地管理池,特别是当有多场战争使用它时

在代码中而不是在JNDI中配置数据源有几个缺点:

  • 您引入了代码对tomcat-jdbc和该库的特定版本的依赖关系。这意味着,您的应用程序只能在Tomcat的特定版本上运行。

  • 您失去了应用程序之间连接池的优势:如果以编程方式创建数据源,则每个应用程序都将拥有自己的连接池。另一方面,通过使用JNDI,您可以决定是为每个应用程序创建一个数据源,还是共享一个全局数据源(请参阅Context与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>

相关内容

  • 没有找到相关文章

最新更新