我們試圖使用在prod和pre-prod環境中具有不同端點的SOAP服務(在Java應用程序中)。我們使用wsimport生成客戶端代碼,並嘗試使用綁定提供程序覆蓋端點。在運行時替換SOAP端點的問題
綁定提供程序在產品前環境中工作正常(自動生成的代碼來自產品前環境wsdl)但是,當我們嘗試在生產環境中執行測試時,綁定提供程序無法覆蓋端點。 在生產環境中,它會引發「連接失敗,當它試圖連接到預產品」。 我們瞭解到,綁定提供程序需要訪問pre-prod wsdl和prod wsdl來覆蓋端點。由於安全組限制,我們無法從prod訪問proprod wsdl。
我們也嘗試通過在運行時從prod wsdl調用服務來讀取終點,但wsdl中的端口信息被硬編碼爲某個IP地址,並且無法更改並且修復了prod wsdl超出了我們的控制範圍。
在運行時是否有其他方式來覆蓋端點?
我正在分析UDDI和網關服務的可能解決方案。同時,還有沒有其他來自編碼預期的快速解決方案? 現在我們的應用程序不使用任何網關,並且UDDI過程也需要多個批准,因此只需檢查是否有快速的事情。 – user3452558
您可以參考Axis2源代碼,並檢查它在調用之前如何修改端點。參考這個例子,並檢查Axis2 src代碼:https://axis.apache.org/axis2/java/core/docs/userguide-creatingclients-xmlbeans.html – amitmah
感謝Amitmah的建議。我解決了這個問題。實際上,在自動生成的存根文件中存在一個奇怪的靜態塊和靜態參數,這是主要問題。我們從字面上改變了自動生成的代碼,重新編寫了邏輯,讀了一堆我們沒有使用的構造函數和靜態方法。所以我通過更改自動生成的文件並確保它們在部署中不被替換,找到了更快的方法。但仍然感謝您提出的所有建議,它已經開啓了我將繼續探索的新想法。 – user3452558