2016-08-17 87 views
0

我有几个部署到JBoss 7的Web应用程序(.war文件)。所有这些Web应用程序都是具有一个条目(身份验证)点的较大应用程序的一部分。这些webapps通过HTTP服务(跨域调用)互相使用功能。服务器端服务调用获取连接拒绝

说我系统上有5个用户。但是,无论出于何种原因,我重新启动了服务器(JBoss)。用户在重启之前或之后都不会退出系统。服务器重新启动后,跨域服务器端服务会导致“连接被拒绝”错误。

此时可以通过浏览器将URL粘贴到地址中来调用服务。这每次都不会有错误。

如果5个用户中的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的

感谢。

回答

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

+0

感谢您的建议。然而,这个问题变成了我们的应用程序非常深奥的东西,我们通过纠正一些代码来解决这个问题。 –