我们有一个由多个客户使用的应用程序。它每次都是相同的应用程序,但使用不同的数据库。
我们目前的设置包括:
Web服务器将特定URL路由到Tomcat,即
现在我们希望将这些条目保留在Apache Config中,但不知何故配置Tomcat和Spring。基本上Tomcat应该接受每个请求(可能由regex定义 - 不是必需的)并将其路由到一个应用程序。
目前,一个应用程序在/webapps/customer1
运行,另一个实例在/webapps/customer2
运行。
将来应用程序应以某种方式运行/webapps/*
,因此在春季我可以查看请求网址,并为db_customer1
的请求选择/customer1/...
,customer2
的请求{1}}。
这可能实现吗?
答案 0 :(得分:2)
如果我理解正确,您需要使用2个(或更多)数据库的单个应用程序,具体取决于客户。客户是通过URL确定的。
如果是这种情况,您应该查看AbstractRoutingDatasource
并创建您自己的该类实现。它允许您在单个应用程序中使用不同的数据源。然后,您应该创建一个Filter或者拦截器来拦截URL,然后根据URL将路由数据源路由到适当的底层数据源。
看看下面链接的这个示例:它有一个客户路由数据源,为不同的登录用户使用不同的数据库: https://spring.io/blog/2007/01/23/dynamic-datasource-routing/