服务器端服务调用拒绝连接

时间:2016-08-17 20:06:57

标签: java spring web-services rest jboss

我有几个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)有关,而这并非如此。有问题的所有服务请求都源自服务器。

我对网络或安全性没有太多经验,所以我对这里发生的事情感到茫然。身份验证似乎与问题相关或导致问题,但我不明白为什么或如何解决它。

欢迎任何建议。

  • JBoss 7
  • Java 6
  • Spring MVC 4.0.6
  • Windows 7

感谢。

1 个答案:

答案 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