Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 如何以编程方式添加tomcat虚拟主机实例_Spring_Apache_Tomcat_Grails_Apache2 - Fatal编程技术网

Spring 如何以编程方式添加tomcat虚拟主机实例

Spring 如何以编程方式添加tomcat虚拟主机实例,spring,apache,tomcat,grails,apache2,Spring,Apache,Tomcat,Grails,Apache2,在过去的两年里,我一直在为使用Grails的公司构建一个社交网络 出现了一个新的需求,即为每个公司创建单独的虚拟主机,该虚拟主机将拥有自己的用户数据库、时间表等(我希望避免重写所有服务层) 例如,最初应用程序运行于 现在,使用我们必须开发的管理控制台,公司应该能够像这样创建自己的子域:等等 我们使用的web服务器是Apache2.2+Tomcat6 有人知道怎么做吗 理想情况下,我希望有一个应用程序实例接收具有不同主机名的请求,这样它就可以有不同的行为,以节省资源,因为Grails占用了太多内存

在过去的两年里,我一直在为使用Grails的公司构建一个社交网络

出现了一个新的需求,即为每个公司创建单独的虚拟主机,该虚拟主机将拥有自己的用户数据库、时间表等(我希望避免重写所有服务层)

例如,最初应用程序运行于 现在,使用我们必须开发的管理控制台,公司应该能够像这样创建自己的子域:等等

我们使用的web服务器是Apache2.2+Tomcat6

有人知道怎么做吗

理想情况下,我希望有一个应用程序实例接收具有不同主机名的请求,这样它就可以有不同的行为,以节省资源,因为Grails占用了太多内存。 例如:

subdomain1.my-social-network.com-->apache 2-->my-social-network.com(+特定头文件)-->tomcat

如果这样做是可能的,有没有一种方法可以根据请求参数或头来选择数据源


非常感谢您提供的任何帮助

您可以选择许多不同的选项,但首先您需要决定如何在最低级别实施此功能:

  • 您可以将请求转到subdomain1.my-social-network.com,将用户转到my-social-network.com
  • 与上面相同,但使用或代替
  • 只需显示站点的内容,并用(可能是最好的方法,因为这些域是永久的)。进一步的文本假定此选项
  • 接下来,您需要有一个截获所有HTTP流量并有一个映射
    {virtual\u path->real\u site}
    。当此筛选器检测到已识别请求的虚拟路径时,可以简单地设置相关(提示:
    servletRequest.setAttribute(字符串,对象)

    如果用户创建/重命名/删除域/虚拟路径,您将相应地填充映射


    最后,渲染组件应该检查该参数并渲染相关站点。在不了解应用程序工作原理的更多细节的情况下,很难进一步详细说明。

    您想为每个不同的虚拟主机安装一个Web应用程序,还是为流量布线并在上下文中设置一些虚拟主机变量的同一个Web应用程序?我不知道我愿意接受建议谢谢您的回答。我不想将用户重定向到另一个url,但我希望他继续处理原始url。在tomcat和apache之间有这样做的方法吗?当然,这是选项3)。你试过像我描述的那样设置servlet过滤器吗?我想我不太理解选项3。您是说我们应该(apache端)将所有子域添加到tomcat并添加一个http请求参数,该参数将由应用程序的业务逻辑使用吗?如果是这样的话,如何使用apache做这样的事情?使用哪些模块?重点是,您应该在Tomcat中处理所有这些,而不是Apache。Apache应该将所有域转发给您的Tomcat,在那里决定显示哪个站点。在Tomcat中处理所有这些意味着我们应该在业务逻辑中这样做,对吗?我想让它变得更好,这就是为什么我在这里发布这个问题。通常是怎么做的?很多人都这样做,我认为这并不复杂