2016-08-17 93 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

感謝您的建議。然而,這個問題變成了我們的應用程序非常深奧的東西,我們通過糾正一些代碼來解決這個問題。 –