為什麼 SOAP 服務 (jax-ws) 在 Linux 作業系統上在一段時間後停止並拋出 WebServiceTransportException: Unauthorized ]?
php小編草莓在這裡為大家解答一個常見問題:為什麼在Linux作業系統上使用SOAP服務(jax-ws)時,在一段時間後會停止並拋出WebServiceTransportException: Unauthorized異常?這個問題可能是由於權限問題引起的。在Linux上,SOAP服務可能需要存取某些檔案或目錄,但是沒有足夠的權限進行訪問,導致服務停止。解決這個問題的方法是確保SOAP服務有足夠的權限來存取所需的檔案和目錄。可以透過更改檔案和目錄的權限或確保SOAP服務使用具有足夠權限的使用者來解決這個問題。
問題內容
我開發了一個肥皂應用程序,並向所需的服務發送請求。問題是一段時間後拋出異常:
堆疊追蹤:
servlet.service() for servlet [dispatcherservlet] in context with path [/api] threw exception [request processing failed: org.springframework.ws.client.webservicetransportexception: unauthorized [401]] with root cause org.springframework.ws.client.webservicetransportexception: unauthorized [401] at org.springframework.ws.client.core.webservicetemplate.handleerror(webservicetemplate.java:665) ~[spring-ws-core-4.0.2.jar!/:na] at org.springframework.ws.client.core.webservicetemplate.dosendandreceive(webservicetemplate.java:587) ~[spring-ws-core-4.0.2.jar!/:na] at org.springframework.ws.client.core.webservicetemplate.sendandreceive(webservicetemplate.java:538) ~[spring-ws-core-4.0.2.jar!/:na] at
該功能在 windows 中有效,但在 linux (rocky linux) 中,它會在一段時間(5-10 分鐘)後停止工作。
這是我的配置(一些資訊已更改,例如 url):
@configuration @requiredargsconstructor public class customerpaymentclientconfig { @bean public jaxb2marshaller marshaller() { jaxb2marshaller marshaller = new jaxb2marshaller(); marshaller.setcontextpath("com.example.wsdl"); return marshaller; } @bean public webservicetemplate webservicetemplate(webservicetemplatebuilder builder, jaxb2marshaller marshaller) throws exception { return builder .setdefaulturi("https://service.example.com/webportalvc/paymentws") .setmarshaller(marshaller) .setunmarshaller(marshaller) .build(); } }
這是我的客戶
@service @requiredargsconstructor public class gpppaymentclient extends webservicegatewaysupport { private final webservicetemplate webservicetemplate; private final jaxb2marshaller marshaller; public initiatepaymentresponse initiatepayment(messageheader messageheader, initiatepayment initiationrequest) { jaxbelement<initiatepaymentresponse> object = (jaxbelement<initiatepaymentresponse>) webservicetemplate.marshalsendandreceive(initiationrequest, webservicemessage -> { try { string namespaceser = "http://services.ws.payment.example.net/"; soapmessage soapmessage = (soapmessage) webservicemessage; soapheader header = soapmessage.getsoapheader(); header.addnamespacedeclaration("ser", namespaceser); objectfactory objectfactory = new objectfactory(); messageheader soapheader = objectfactory.createmessageheader(); soapheader.setuserid(messageheader.getuserid()); soapheader.setreceiverid(messageheader.getreceiverid()); soapheader.settransactionid(messageheader.gettransactionid()); soapheader.setmessagedatetime(messageheader.getmessagedatetime()); jaxbelement<messageheader> headerelement = new jaxbelement<>(new qname("http://services.ws.payment.example.net/", "messageheader"), messageheader.class, null, soapheader); marshaller.marshal(headerelement, header.getresult()); jaxbelement<initiatepayment> bodyelement = new jaxbelement<>(new qname("http://test.ws.payment.example.net/", "initiatepayment"), initiatepayment.class, null, initiationrequest); marshaller.marshal(bodyelement, soapmessage.getpayloadresult()); } catch (exception e) { log.info(e.tostring()); } }); return object.getvalue(); } }
在這裡,我新增屬性以信任來自信任庫的 ssl 憑證
@Bean public void addProperties() { System.setProperty("javax.net.ssl.keyStore", keyStoreLocation); System.setProperty("javax.net.ssl.keyStorePassword", keyStorePassword); System.setProperty("javax.net.ssl.trustStore", cacertLocation); System.setProperty("javax.net.ssl.trustStorePassword", cacertPassword); }
解決方法
幾年前我就遇到這樣的問題。據我了解,問題出在 JDK 版本。我將 JDK 更改為另一個版本 (Amazon Coretto),一切正常。
以上是為什麼 SOAP 服務 (jax-ws) 在 Linux 作業系統上在一段時間後停止並拋出 WebServiceTransportException: Unauthorized ]?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

本研究全面深入剖析了在KaliLinux的滲透測試和安全審計流程中可能出現的軟體卸載難題,為保障系統穩定可靠貢獻了解決之道。一、了解軟體的安裝方式在進行應用程式卸載前kalilinux卸載軟體,首先確定其安裝路徑是至關重要的步驟。進而,根據所選途徑相應地挑選出適當的卸載方案。常見的安裝方法包括apt-get、dpkg以及原始碼編譯等各類別形式。每種策略都具備自身特性和相應的卸載措施。二、使用apt-get指令卸載軟體在KaliLinux系統中,apt-get功能元件被廣泛應用於高效便捷地執行軟體包

近日,國產作業系統麒麟Linux廣受矚目,個人人為資深電腦工程師麒麟linux安裝教程,對科技創新抱持濃厚興趣,故親身體驗了該系統的安裝流程,現將經驗在此和諸位共享。在執行安裝程序之前,我針對相關步驟進行了充分準備。首要任務是下載並拷貝最新的麒麟Linux作業系統鏡像至U盤;其次64位元linux,確保已備份個人設備中的重要數據,以應對潛在的安裝問題;最後,關閉電腦並插入U盤。進入安裝介面重新啟動電腦後,及時按下F12功能鍵,步入系統啟動選單選擇USB優先啟動項目。隨著一個美觀簡約的啟動畫面出現眼前

實際上,電腦使用了較長的一段時間之後,整體的效能都會呈現下降的趨勢,而對Windows系統的適應性也會不斷下降。除了電腦本身的原因,Windows系統不斷增強和擴展,對硬體需求也越來越高。因此,舊電腦安裝Windows系統後出現卡頓現象並不令人意外。之前,很多朋友都在後台詢問系統卡頓,舊電腦怎麼辦?如果你發現將新版Windows10系統安裝在舊電腦上會導致卡頓和操作問題,或許考慮轉向Linux系統是個不錯的選擇。大白菜整理了5個微型Linux系統,適合老舊電腦使用,可以有效降低CPU佔用率,讓你的

Linuxext2檔案系統是一種在大部分Linux作業系統上使用的檔案系統,它採用了一種高效的磁碟儲存結構來管理檔案和目錄的儲存。在深入探討Linuxext2檔案系統的實體儲存結構之前,我們首先需要先了解一些基本概念。在ext2檔案系統中,資料儲存在資料塊(block)中,資料塊是檔案系統中最小的可分配單位。每個資料塊有固定的大小,通常為1KB、2KB或4

如果您使用Linux作業系統,並希望系統在啟動時自動載入驅動器,可以透過將裝置的唯一識別碼(UID)和掛載點路徑新增至fstab設定檔來實現。 fstab是位於/etc目錄中的檔案系統表文件,它包含了系統在啟動時需要掛載的檔案系統的資訊。透過編輯fstab文件,您可以確保在每次系統啟動時都能正確載入所需的驅動器,從而確保系統的穩定運作。自動安裝驅動器可方便地應用於多種情境。例如,我計劃將系統備份到外部儲存設備。為了實現自動化,需確保設備與系統保持連接,甚至在啟動時。同樣,很多應用程式會直接

解決Linux命令列顯示亂碼問題的方法在Linux作業系統中,有時候我們在使用命令列介面時會遇到顯示亂碼的情況,這會影響我們對命令輸出結果或檔案內容的正常檢視和理解。造成亂碼的原因可能是由於系統字元集設定不正確、終端軟體不支援顯示特定字元集、檔案編碼格式不統一等問題。本文將介紹一些解決Linux命令列顯示亂碼問題的方法,同時提供具體的程式碼範例,幫助讀者解決類別

身為2024年的一位Linux熱衷者,我對最佳Linux發行版的期待令人興奮不已。以下,我將闡述個人觀點並解析為何2024年最具魅力的Linux發行版具有獨特的許多優點。 1.初識Linux最美發行版毫無疑問,2024年的Linux最優發行版堪稱科技與藝術的完美融合。其在使用者介面、功能規劃以及效能優化等多方面表現卓越,使得面對眾多競爭對手也能獨樹一格。這不僅是一款作業系統,更像徵自由、開放與創新的生活態度。此最優版本融入了全新設計與互動模式,勢必令人耳目一新。無論是佈局結構、標誌圖案或色彩搭配,

為什麼Linux中的行程會處於休眠狀態?在Linux作業系統中,進程可能會處於休眠狀態,這是由於多種不同的原因和條件造成的。當進程處於休眠狀態時,表示該進程暫時被掛起,無法繼續執行,直到滿足某種條件後才能被喚醒繼續執行。接下來將詳細介紹在Linux中進程進入休眠狀態的幾種常見情況,並透過具體的程式碼範例加以說明。等待I/O完成:當進程發起一個I/O操作(例如讀取