0

我有一个 GWT 应用程序,它运行在带有 tomcat 服务器 7 的 debian 上。这个应用程序使用连接池技术与后端数据库进行通信。
我有一些站点(具有不同的域),它们都使用相同的应用程序,它们之间的唯一区别是数据库连接池!
我必须为每个域创建一个虚拟主机,所有虚拟主机配置都完全相同,除了指定数据库名称、用户名和密码的主机名和数据库连接池资源配置。
现在这里有问题:

  1. 在这种情况下,为每个域使用不同的单独虚拟主机是否正确?
  2. tomcat 会为每个虚拟主机分别加载类和库吗?还是只为所有人加载一个实例?在这种情况下,可以使用哪些技术来优化 tomcat 内存使用?
  3. 使用此解决方案,tomcat 重启时间变得太长,因为它需要再次重新加载所有应用程序上下文。有什么办法可以提高tomcat的重启速度?
4

1 回答 1

1
  1. 是的

  2. Web 应用程序有自己的类加载器,而虚拟主机没有。因此,每个主机中的每个应用程序都会有自己的类加载器。如果所有应用程序共享同一个库,您可以将它放在 $CATALINA_BASE/lib 中。缺点是所有应用程序都必须使用该版本,升级它意味着重新启动整个 Tomcat 实例。

  3. 如果您使用最新版本的 Tomcat 7,则可以利用并行部署。在 server.xml 中的 Engine 元素上将 startStopThreads 设置为大于 1 的值

于 2013-10-11T17:34:23.700 回答