【发布时间】:2012-02-06 07:27:32
【问题描述】:
我知道 Tomcat 和 Servlet 规范 do not support starting webapps in a particular order。
但是,在我看来,这似乎是一个常见的用例,我想知道是否有人发现了一个聪明的解决方法。
我有 webapp A,它使用 Spring Remoting 公开共享服务,其中 webapp B 是客户端。除非 webapp A 正在运行,否则 Webapp B 无法初始化。但是,我的 Tomcat 总是线性启动 webapps,从 webapp B 开始。
出于基础架构的原因,我必须让它们在同一个 Tomcat 服务器上运行。
有什么想法吗?
谢谢, 罗伊
更新 -
事实证明,在我的特殊情况下,顺序并不重要。原因是这样的:假设我使用以下方法之一在应用程序 B 之前启动应用程序 A。所以应用程序 A 启动,但是,由于 Spring 远程处理正在使用 HTTP Invoker,HTTP 端口尚未打开(它不会打开直到 所有 应用程序启动)。所以 A 将启动,B 将挂起,因为它正在寻找的端口尚不可用。呵呵。
最终结果是两个独立的 Tomcat 实例。
【问题讨论】:
-
让需要等待其他网络应用的网络应用等待,而不是失败并放弃。
-
嘿戴夫,unf。它们不会并行启动。B 启动(好吧,尝试启动),然后 A 将启动。但如果 B 因为无法连接到 A 而无法启动,则 A 永远不会尝试启动。
-
它应该以 ASCII 顺序启动它们。我在 Debian Apache 安装中看到的一个技巧是创建 000_default、001_default 命名约定。这样在查看 dir 列表的 ASCII 顺序时会更清楚一些。