【发布时间】:2012-08-17 06:51:38
【问题描述】:
我在服务器上的应用程序可以被两个服务器名访问,现在我想通过不同的服务器名加载不同的 applicationcontext.xml。我该怎么做?春天是 Java EE!
【问题讨论】:
标签: java spring jakarta-ee
我在服务器上的应用程序可以被两个服务器名访问,现在我想通过不同的服务器名加载不同的 applicationcontext.xml。我该怎么做?春天是 Java EE!
【问题讨论】:
标签: java spring jakarta-ee
我假设“被两个服务器名访问”是指不同的 HTTP hostname,但映射到同一个 Java EE 服务器实例。
例如server1.acme.com 和 server2.acme.com
一种选择是安装应用程序两次(两个单独的 EAR/WAR 文件)并配置您希望在构建过程中使用哪个 applicationcontext.xml。这样做的好处是您可以根据需要分配单独的上下文根。然后,您可以配置您的 Java EE 服务器(例如 apache 服务器组件)以将 hostname 映射到特定的应用程序上下文根。
选项二是只安装一个 EAR/WAR,其中包含两个实例的所有 spring bean,并为那些不应该共享的 bean 分配唯一的 bean 名称。这具有减少内存占用的优势,因为您只加载一个应用程序并共享一些 Spring bean。您的网络 Controllers 必须知道要根据 hostname 调用哪些服务 bean,您应该可以通过调用 ServletRequest.getRemoteHost() 来获得这些服务 bean
我相信您还可以使用其他技术。这只是我想到的两个。
【讨论】: