我一直在到处寻找,收集零碎的东西,如果这已经在其他地方得到了回答,但我找不到,我很抱歉。
我正在用Java编写一个web应用程序,在后端使用Tomcat和SQLAzure。
有多个servlet访问SQLAzure DB。我想使用由Tomcat 8.5管理的连接池
我的应用程序上下文。META-INF中的xml如下所示:
<Context>
<Resource name="jdbc/sqlazure"
auth="Container"
driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
type="javax.sql.DataSource"
maxIdle="30"
username="[username]"
password="[password]"
url="jdbc:sqlserver://[database]:1433;database=BackInfo;encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=30"
removeAbandonedTimeout="30"
logAbandoned="true" />
</Context>
在Java代码中,我以典型的方式访问:
InitialContext ic = new InitialContext();ds = (DataSource)ic.lookup("java:comp/env/jdbc/sqlazure");
ds.get连接。
一切似乎都正常,所以让我在这里确认我的理解:
>
我不需要指定单独的站点。xml,因为我使用的是Tomcat8.5。对的
当我以这种方式连接时,Azure将自动创建池。池中的连接数等不能(不需要?)可以进行配置。
在我意识到我将有其他servlet需要访问数据库之前,我有一个servlet直接通过SQLServerConnectionPoolDataSource创建数据源并从那里获得连接。留档声明:
SQLServerConnectionPoolDataSource通常用于支持内置连接池并需要ConnectionPoolDataSource提供物理连接的Java应用程序服务器环境,例如提供JDBC 3.0 API规范连接池的Java平台、企业版(Java EE)应用程序服务器。
这是否意味着当我直接使用SQLServerConnectionPoolDataSource请求连接时,它将检查Tomcat是否支持池,然后基本上使用JDBC机制创建由Tomcat管理的SQLAzure连接池?
通过Tomcat JNDI查找获取数据源时,使用上下文中指定的SQLServerDriver。xml。当web应用程序启动时,它将检查上下文。xml并使用SQLServerDriver连接到SQLAzure,检查是否支持池,如果支持,则Tomcat正在使用该驱动程序自动创建它返回的连接池数据源?
我还想到了另一个问题。是否有一个Singleton DataSource类返回对池化连接DataSource的引用,还是让每个servlet在其init()中查找数据源并存储在私有变量中更好?
谢谢
根据我的理解,SQL服务器的jdbc连接池是由JavaApplication创建的,而不是Azure创建的。我的建议是,您需要参考下面的Tomcat官方文档来理解JNDI资源
问题内容: 我在两个表之间有多对多关系。 表包含我的餐厅。 表包含不同的类别。 表包含两列,每列分别包含两个表的ID。 以下陈述是我能想到的,但没有给我我想要的输出。 我希望输出是有关餐厅的信息,并在最后一列中是类别的连接行。 问题答案: 要串联值,可以使用。xml路径解决方案有误,应使用和特殊字符。 您也可以使用变量解决方案
请原谅,这很可能是一个愚蠢的新手问题。 我们使用Hystrix作为两个服务之间的断路器。为了提高性能,我们使用了连接池。我们正在使用Apache HttpClient的PoolingHttpClientConnectionManager来处理连接池。 我们还使用Hystrix的“TimeoutInMissels”属性来捕获问题。 我们遇到的“问题”是,在正常操作中,创建一个新的HTTPS连接需要c
本文向大家介绍说下左连接和右连接相关面试题,主要包含被问及说下左连接和右连接时的应答技巧和注意事项,需要的朋友参考一下 比如有两张表 A,B。左连接是把符合条件的所有A表的内容列出来,B表如果没有内容匹配用NULL代替。 右连接是符合条件的所有B表的内容列出来,A表如果没有内容匹配用NULL代替
我正在尝试识别应用程序中的SQL连接泄漏。经过一些操作后,当我的应用程序处于空闲状态(用户未执行任何活动)时,我在返回的结果集中看到7个与我的数据库的连接。所有连接的状态均为,所有连接的值均为。 我正在使用连接池,但连接字符串中未指定连接生存期。这意味着如果我是对的,将使用它的默认值0。连接生存期的值为零意味着SQL server永远不应该关闭连接,对吗? 我让我的应用程序空闲一段时间(15-20
有没有办法阻止SQL Azure DB,这样它就不会向我们的帐户收取任何费用?我不想删除它,就在测试和未使用时,我们将其设置为“停止”,就像我们可以对网站、云服务和虚拟机所做的那样。
我有一个使用Hibernate作为ORM的javaSpring启动应用程序。数据库是一个AzureSQL服务器。 我已经在供应商适配器配置上启用了setShowSql。 当我想查找对象时,我使用了TypeQuery的方法和并调用方法。 控制台中打印的查询不包含OFFSET和ROW FETCH子句,Hibernate似乎首先检索所有结果,然后对结果列表应用分页。 这显然会导致性能问题。 我哪里做错了