我在过去的两年里一直在为使用Grails的公司建立社交网络。
出现了一项新要求,即为每个拥有自己的用户,时间线等数据库的公司创建单独的虚拟主机(我希望避免重写所有服务层)
因此,最初应用程序在http://www.my-social-network.com上运行 现在使用我们必须开发的管理控制台,公司应该能够创建自己的子域,如下所示:http://company1.my-social-network.com等等。
我们使用的Web服务器是Apache 2.2 + tomcat 6
是否有人知道如何做到这一点?
理想情况下,我希望有一个应用程序实例接收具有不同主机名的请求,因此它可以表现不同以节省资源,因为Grails消耗了太多内存。 例如:
subdomain1.my-social-network.com - > apache 2 - > my-social-network.com(+特定标题) - > Tomcat的
如果可能的话,是否有办法根据请求参数或标题选择数据源?
感谢任何帮助
答案 0 :(得分:1)
您可以采取多种不同的选择,但首先您需要决定如何在最低级别实施此项目:
接下来,您需要servlet filter拦截所有HTTP流量并拥有地图{virtual_path -> real_site}
。此过滤器可以在检测到已识别请求的虚拟路径时简单地设置相关request attribute(提示:servletRequest.setAttribute(String, Object)
)。
如果用户创建/重命名/删除域/虚拟路径,您将相应地填充地图。
最后,您的渲染组件应检查该参数并呈现相关网站。如果不了解有关应用程序如何工作的更多细节,就很难进一步详细说明。