IntelliJ IDEA 外掛Rest Client 外掛使用過程遇到的問題

JulySong發表於2018-10-17

IntelliJ IDEA 外掛Rest Client 外掛使用過程遇到的問題

Idea新版本升級之後, 有了一個類似postman的工具, 驚為天人, 本文講述在專案使用過程中這個外掛遇到的一些稀奇古怪的問題.主要為nested exception is javax.management.InstanceAlreadyExistsException: MXBean already registered with name org.apache.commons.pool2:type=GenericObjectPool,name=pool2"

在我們正常的開發過程中, 對 Rest Api 的測試是非常常見的, 例如 chrome 開啟地址, 安裝幾個外掛, postman 跑一跑...這些方式都是可以的, 但是最近突然發現專案上出現了一個小東西. Rest 介面的邊上出現了一個類似於 main 方法邊上的綠色小箭頭(後文簡稱: 綠箭俠). 如下圖所示.

IntelliJ IDEA 外掛Rest Client 外掛使用過程遇到的問題

好奇的我就點選了一下, 出現下圖的顯示

IntelliJ IDEA 外掛Rest Client 外掛使用過程遇到的問題

此時, 出現三個選項, 第三個就不看了, 在瀏覽器開啟. 我們來看看第一個和第二個. 我點了一下 Run Http Request, 出現下圖

IntelliJ IDEA 外掛Rest Client 外掛使用過程遇到的問題

不看返回結果對錯, 目前這個狀態是正確請求了我們的後臺. 但是請求是錯誤的, 因為缺少了一些必須的引數. 這個時候這麼看就有點雞肋, 因為沒地方可以傳遞引數, 使用場景就非常侷限了.

然後我們看第二個, 第二個點選之後出現下圖:

IntelliJ IDEA 外掛Rest Client 外掛使用過程遇到的問題
這個時候能看到的東西就比較多了, 起碼在這個編輯器裡面, 我們可以修改他的請求方式是 GET 還是 POST 什麼的.

但是引數還是不知道能不能傳, 或者是怎麼傳. 這時候編輯器右側出現了兩個小圖示.

IntelliJ IDEA 外掛Rest Client 外掛使用過程遇到的問題

第一個看樣子也知道, 是一個類似於檢視歷史記錄的按鈕. 第二個點選一下, 出現了下圖所示:

IntelliJ IDEA 外掛Rest Client 外掛使用過程遇到的問題

點選第一個, 神奇的東西出現了

IntelliJ IDEA 外掛Rest Client 外掛使用過程遇到的問題

這裡面是類似於 Idea 預置的一些 GET 請求方式, 一方面也告訴我們了 GET 請求的這些情況下, 我們應該使用什麼方式來請求, 下面的 auth, post, test 我就不一一多說了, 看完這些東西, 我們正常的請求就很是流暢了.

但是事情到這裡並沒有結束, 如果結束了, 也就沒有了本文存在的意義.

我們的專案存在多個, 我突然發現有的專案有綠箭俠, 有的專案沒有. 雖然說通過 Tools 也能找到 Http Client, 可以使用, 但是少了這個綠箭俠, 我就感覺莫名的不爽, 本來很簡潔的方式就被弄的很複雜. 於是乎就開始找尋這個為什麼不存在的原因.

經過查閱資料, 他和 spring-boot-starter-actuator 有關(我司的專案上用的是 spring-boot-actuator). 專案中需要有這個東西才行. 看了一下, 的確是有這個依賴, 但是綠箭俠還是不在. 第二步需要的是配置 enable JMX agent, 發現也是正常配置好的.

IntelliJ IDEA 外掛Rest Client 外掛使用過程遇到的問題

隨手搜尋了一下全文, 發現了一個東西(關鍵詞: jmx)

spring.jmx.enabled=false
複製程式碼

很明顯是這裡配置的有問題, 於是乎把這個配置給幹掉試試.

結果, 專案就跪了, 丟擲了一個異常(省略部分異常資訊):

nested exception is javax.management.InstanceAlreadyExistsException: MXBean already registered with name org.apache.commons.pool2:type=GenericObjectPool,name=pool2
複製程式碼

然後就開始網上查詢這個問題的原因所在. 大體原因是因為繼承 GenericObjectPool 池, 然後自動注入導致名字衝突了.

網上問題的解決方案也是如此, 類似於在配置檔案或者什麼地方, 把 spring.jmx.enabled 的值設定為 false. 但是設定為 false 就會讓我沒辦法擁有綠箭俠. 後來發現了一個配置

@EnableMBeanExport(registration = RegistrationPolicy.IGNORE_EXISTING)
複製程式碼

在我的 Configuration 自動注入的時候, 加上這個註解, 問題就迎刃而解. 這裡參考了開源專案FastDFS_Client, 不是使用相同的東西, 但是遇到同樣的錯誤, 解決了我的問題.

這個時候專案就可以正常執行了, 測試了一下原先的地方, 沒有問題, 我的綠箭俠也出來了.

個人部落格地址: IntelliJ IDEA 外掛Rest Client 外掛使用過程遇到的問題

相關文章