我在weblogic 10.3.3中部署了一个web应用程序作为war文件。现在我想使这个应用程序可集群化。为此,我使用weblogic中的HttpClusterServlet
作为负载平衡器。根据documentation我可以将这个servlet配置放到web.xml中
<servlet>
<servlet-name>HttpClusterServlet</servlet-name>
<servlet-class>weblogic.servlet.proxy.HttpClusterServlet</servlet-class>
<init-param>
<param-name>WebLogicCluster</param-name>
<param-value>server-1:7122|server-1:7123</param-value>
</init-param>
</servlet>
问题是,此配置在生成时是硬连接的,无法在运行时重新配置。例如,我希望能够动态添加5个服务器。我有几个想法来解决这个问题:
使用自己的servlet实现扩展
weblogic.servlet.proxy.HttpClusterServlet
。这是不可能的,这堂课是期末考试。使用servlet过滤器重新配置servlet。自从JavaServletAPI2.1以来,Servlet不再可以通过ServletContext().getServlet(String)访问,而且没有直接替换。
反射可能是一个选项,但我无法找到可靠的方法来访问配置
到目前为止,我在外部重新配置这个init参数的所有尝试都失败了。我愿意接受任何解决办法。
最佳答案
这可能有助于How to externalize web.xml servlet init-param? Spring DelegatingFilterProxy for Servlets?即使不使用spring,也不难将该servlet移植到另一个ioc容器。