我有一个由一堆GWT页面前端的J2EE应用程序。当服务器启动时,这些静态页面可能会在实现GWT RPC调用所需的服务(数据库等)可用之前被访问。我想知道防止用户在这些服务可用之前访问此静态内容的最佳方法是什么。
为了完成此练习,假设某处存在一个isInitialized()方法。我可以接受显示错误消息的页面或简单地拒绝连接。
为了完成此练习,假设某处存在一个isInitialized()方法。我可以接受显示错误消息的页面或简单地拒绝连接。
javax.servlet.Filter
的实现)是显而易见的选择。它可以查看您的isInitialized()
方法并将请求重定向/转发到某个“尚未可用”的页面。在web.xml
中,过滤器的url-pattern
将被选择以捕获您想要保护的特定请求。你的应用程序是否在负载均衡器后面?如果是,那么你的问题实际上是必须防止负载均衡器将流量定向到未完全初始化的任何服务器实例。你可以创建一个AmIReady servlet来检查服务器状态,然后返回适当的响应代码(200或503?)。将其绑定到/checkstatus或其他内容,并使负载均衡器使用此URL作为健康检查。
如果你正在进行粘性负载平衡,@skaffman提出的想法可能有效,前提是你确实将*no-cache.js文件的缓存设置为no-cache。然而,这种方法会导致用户从初始化服务器获得错误响应的一段时间,而另一个服务器在集群中可能已经获得了良好的响应(当然,假设你能够进行轮询部署以避免停机时间。并且你的会话缓存策略允许用户在服务器之间无缝切换等等。