java服务器端服务调用被拒绝连接
我在JBoss7上部署了几个web应用(.war文件)。所有这些webapp都是一个更大的应用程序的一部分,该应用程序只有一个入口(身份验证)点。这些网络应用通过HTTP服务(跨域调用)相互利用功能
假设我在系统上有5个用户。但不管出于什么原因,我都会重新启动服务器(JBoss)。用户在重新启动之前或之后都不会退出系统。服务器重启后,跨域服务器端服务会导致“连接被拒绝”错误
此时,可以通过浏览器将URL粘贴到地址中来调用服务。每次都能正常工作
如果5个用户中有1个(仅1个)重新验证,那么服务器端服务调用将重新开始为所有5个用户工作。所有5个无需重新认证。我们的应用程序是SSO,所以没有太多的身份验证代码。我们只是调用一些NTLM调用来进行身份验证
我们不会向服务传递任何凭据。任何经过身份验证的人都有权调用服务
应该注意的是,系统的所有其他功能都可以在没有任何用户重新验证的情况下工作(客户端AJAX;DB查询/更新)。只有通过HTTP调用服务器端服务调用不起作用
根据我发现的其他帖子和文档,“连接被拒绝”的发生是因为1)服务没有运行,或者2)存在防火墙问题
在我的情况下,这两个都不是真的。如上所述,这些服务可以从浏览器中调用。我可以通过在Windows电脑上运行本地JBoss来重新创建它。我只需要重新启动它,错误就发生了。没有涉及防火墙
我认为这可能是CORS的问题,但CORS似乎与来自浏览器(例如Javascript/AJAX)的请求有关,而这里的情况并非如此。所有有问题的服务请求都源自服务器
我在网络或安全方面没有太多经验,所以我不知道这里发生了什么。身份验证似乎与问题有关,或是导致问题的原因,但我不明白为什么或如何解决它
欢迎提出任何建议
- JBoss 7
- 爪哇6
- Spring MVC 4.0.6
- Windows 7
谢谢
# 1 楼答案
听起来你的应用程序在被访问之前是不会被加载的。尝试在你的网站中添加一个条目。xml
启动时的负载是关键。这里有一个更详细的问题What does the servlet <load-on-startup> value signify