我有几个Web应用程序(.war文件)部署到JBoss 7.所有这些Web应用程序都是一个具有一个条目(身份验证)点的大型应用程序的一部分。这些Web应用程序通过HTTP服务(跨域调用)相互使用功能。
说我系统上有5个用户。但是我出于某种原因重启了服务器(JBoss)。用户不会在重新启动之前或之后退出系统。重新启动服务器后,跨域服务器端服务导致“连接被拒绝”错误。
此时,可以通过将URL粘贴到地址中,通过浏览器调用服务。这每次都有效,没有错误。
如果5个用户中的1个(仅1个)重新进行身份验证,则服务器端服务调用将再次针对所有5个用户开始工作。所有5个都不需要重新认证。我们的应用程序是SSO,因此没有太多的身份验证代码。我们只是调用一些NTLM调用进行身份验证。
我们不会将任何凭据传递给服务。经过身份验证的任何人都有权调用这些服务。
应该注意的是,系统的所有其他功能在没有任何用户重新验证的情况下工作(客户端AJAX;数据库查询/更新)。只通过HTTP调用服务器端服务调用不起作用。
根据我发现的其他帖子和文档,“连接被拒绝”的发生是因为1)服务未运行或2)存在防火墙问题。
在我的案例中,这些都不是真的。如上所述,可以从浏览器调用服务。我可以通过在我的Windows计算机上运行本地JBoss来重新创建它。我只需重新启动它就会发生错误。没有涉及防火墙。
我认为这可能是一个CORS问题,但似乎CORS与源自浏览器的请求(例如Javascript / AJAX)有关,而这并非如此。有问题的所有服务请求都源自服务器。
我对网络或安全性没有太多经验,所以我对这里发生的事情感到茫然。身份验证似乎与问题相关或导致问题,但我不明白为什么或如何解决它。
欢迎任何建议。
感谢。
答案 0 :(得分:0)
听起来你的应用程序在访问之前没有加载。尝试在web.xml中添加一个条目
<servlet>
<servlet-name>YourApp</servlet-name>
<servlet-class>com.company.YourApplication</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
启动加载是关键。这是一个更详细的问题What does the servlet <load-on-startup> value signify