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, 不是使用相同的东西, 可是遇到一样的错误, 解决了个人问题.
这个时候项目就能够正常运行了, 测试了一下原先的地方, 没有问题, 个人绿箭侠也出来了.