我参与的项目是设计每个客户都有一个数据库。我已经设法读取Tomcat文档并建立连接池。由于数据库是在客户注册时由应用程序自动创建的,因此我需要一种方法来创建动态池。堆栈溢出的以下帖子提供了所需内容的提示:
Using dynamic Datasource with Tomcat
我在网上找到了一个显示如何执行此操作的页面:
Writing and using a Tomcat ObjectFactory
我仍然有几个问题:
1-谁负责管理池中的连接? 在context.xml中的datasource声明中,我们定义了一些控制各种方面的参数,例如最大空闲时间和最大连接数等等.tomcat会处理这个问题,还是我必须在编码时执行它来处理它一个实现ObjectFactory接口的类?
2-据我了解,当连接关闭时,它们会返回池中。假设我创建了一个最多有20个连接的动态池。然后有30个客户登录。因此该池为前20个客户返回20个连接。当这些连接关闭时,它们将返回到池中,接下来的10个客户将要求连接到不同于池中已找到的数据库。问题是:池会自动删除10个连接并使用正确的数据库添加新连接吗?如果是这种情况,这是否真的比没有池时请求打开连接有优势? (想到一个将会负载很重的网站。如果我猜对了,连接丢失的数量可能非常高,以至于无法证明池的作用是什么:最小化从头开始创建连接)
3-我也想问一下是否可以自己实现它(考虑到我是新手)或者我应该找到一个这样做的库(如果它不是这个领域的初学者的任务)
4-是否有任何替代连接池来管理以有效方式动态添加的多个数据库的连接? (如果数据源无效)在类似情况下使用的方法是什么?
提前感谢您的努力。
答案 0 :(得分:0)
在声明数据源时,您可以指定datsource类,例如Oracle数据源。它使用指定的参数来为您管理数据源。最好让数据源管理自己。我试过写一个并不简单。
我认为数据源不适合你,我可能错了。数据源需要一个数据库URL,用户名和密码,将在数据源的生命周期内修复。
为不同的用户设置不同的数据库会破坏这一点。
查看上面给出的参考文献,答案提到使用与数据源不同的资源。