有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

  1. # 1 楼答案

    听起来你的应用程序在被访问之前是不会被加载的。尝试在你的网站中添加一个条目。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