昨天在搭建dubbo+zookeeper项目时,两次用同一个端口20880做为提供者,结果是端口号被占用。web
网上得解决方法有不少:tomcat
方案1:是改dubboprovider.xml里端口号将20880改为别的端口好比如20881app
方案2:直接关闭以前20880端口提供的服务,即重复使用20880webapp
方案3:修改tomcat里server.xml里的属性将ide
<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">修改成:spa
<Host appBase="webapps" autoDeploy="false" deployOnStartup="false" name="localhost" unpackWARs="true">server
可是以上方案都不太令我满意,由于理论上同一个服务能够有多个提供者。因而去dubbo的官网寻找解决方法,仍是找到了比较优雅的解决方式:xml
贴出截图一张以供思考:blog
因此接下来目的已经很明确——将provider.xml里port=20880属性值修改成-1class
<dubbo:protocol name="dubbo" port="-1"></dubbo:protocol>
这样能够解决同一个端口号占用的问题,并且同一个服务有多个提供者,再来一张效果图:
能够看到端口号的确是从20880开始递增,不过还有一点须要思考,就是这么多端口自动生成,该如何维护。若是您有更好的观点,欢迎补充>>>