Idea新版本升級以後, 有了一個相似postman的工具, 驚爲天人, 本文講述在項目使用過程當中這個插件遇到的一些稀奇古怪的問題.主要爲nested exception is javax.management.InstanceAlreadyExistsException: MXBean already registered with name org.apache.commons.pool2:type=GenericObjectPool,name=pool2"java
在咱們正常的開發過程當中, 對 Rest Api 的測試是很是常見的, 例如 chrome 打開地址, 安裝幾個插件, postman 跑一跑...這些方式都是能夠的, 可是最近忽然發現項目上出現了一個小東西. Rest 接口的邊上出現了一個相似於 main 方法邊上的綠色小箭頭(後文簡稱: 綠箭俠). 以下圖所示. git
好奇的我就點擊了一下, 出現下圖的顯示 github
此時, 出現三個選項, 第三個就不看了, 在瀏覽器打開. 咱們來看看第一個和第二個. 我點了一下 Run Http Request, 出現下圖 spring
不看返回結果對錯, 目前這個狀態是正確請求了咱們的後臺. 可是請求是錯誤的, 由於缺乏了一些必須的參數. 這個時候這麼看就有點雞肋, 由於沒地方能夠傳遞參數, 使用場景就很是侷限了.chrome
而後咱們看第二個, 第二個點擊以後出現下圖: apache
可是參數仍是不知道能不能傳, 或者是怎麼傳. 這時候編輯器右側出現了兩個小圖標. 瀏覽器
第一個看樣子也知道, 是一個相似於查看歷史記錄的按鈕. 第二個點擊一下, 出現了下圖所示: bash
點擊第一個, 神奇的東西出現了 編輯器
這裏面是相似於 Idea 預置的一些 GET 請求方式, 一方面也告訴咱們了 GET 請求的這些狀況下, 咱們應該使用什麼方式來請求, 下面的 auth, post, test 我就不一一多說了, 看完這些東西, 咱們正常的請求就非常流暢了.ide
可是事情到這裏並無結束, 若是結束了, 也就沒有了本文存在的意義.
咱們的項目存在多個, 我忽然發現有的項目有綠箭俠, 有的項目沒有. 雖說經過 Tools 也能找到 Http Client, 可使用, 可是少了這個綠箭俠, 我就感受莫名的不爽, 原本很簡潔的方式就被弄的很複雜. 因而乎就開始找尋這個爲何不存在的緣由.
通過查閱資料, 他和 spring-boot-starter-actuator 有關(我司的項目上用的是 spring-boot-actuator). 項目中須要有這個東西才行. 看了一下, 的確是有這個依賴, 可是綠箭俠仍是不在. 第二步須要的是配置 enable JMX agent, 發現也是正常配置好的.
隨手搜索了一下全文, 發現了一個東西(關鍵詞: 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, 不是使用相同的東西, 可是遇到一樣的錯誤, 解決了個人問題.
這個時候項目就能夠正常運行了, 測試了一下原先的地方, 沒有問題, 個人綠箭俠也出來了.