spirng boot+dubbo+zookeeper整合出现的问题
来源:互联网 发布:删除数据库的sql语句 编辑:程序博客网 时间:2024/06/08 02:40
最近没有事情做,于是研究了一下spring boot+dubbo,由于好多的博客都是直接上代码,然后引入好多的jar包,搞得我这个新手一脸懵逼。还是看了[dubbo](dubbo.io),最后呢,整合除了一个非常简陋的框架。
**三个项目 :
spring-boot-api(消费者和提供者的服务支持)
spirng-boot-consumer(消费者)
spring-boot-provider (提供者)**
最外层的pom.xml 中引入dubbo的jar包
<dependencies> <!-- https://mvnrepository.com/artifact/com.gitee.reger/spring-boot-starter-dubbo --> <dependency> <groupId>com.gitee.reger</groupId> <artifactId>spring-boot-starter-dubbo</artifactId> <version>1.0.1</version> </dependency> <!--spring-boot--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>1.5.6.RELEASE</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <version>2.5.7</version> <exclusions> <exclusion> <artifactId>spring</artifactId> <groupId>org.springframework</groupId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.6</version> <exclusions> <exclusion> <artifactId>slf4j-log4j12</artifactId> <groupId>org.slf4j</groupId> </exclusion> </exclusions> </dependency> <dependency> <groupId>com.github.sgroschupf</groupId> <artifactId>zkclient</artifactId> <version>0.1</version> </dependency> </dependencies>
spring-boot-api
这里放入了接口类,service 。
package com.lixk.user.service;public interface UserService { String sayHello();}
spring-boot-provider (提供者)
这里主要是提供口,放入serviceImpl,然后搭建spring boot的启动类
SpringBootApplication,代码如下:
serviceImpl:
package com.lixk.user.serviceImpl;import com.lixk.user.service.UserService;public class serviceImpl implements UserService { public String sayHello() { return "Hello DUBBO!!"; }}
启动类:
@SpringBootApplication@ImportResource(value = {"classpath:providers.xml"})@Controllerpublic class DubboProviderApplication { @RequestMapping("/home") @ResponseBody String home() { return "Hello world"; } public static void main(String[] args) { SpringApplication.run(DubboProviderApplication.class, args); }}
pom.xml
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <artifactId>spring-boot-dubbo</artifactId> <groupId>com.yunduan</groupId> <version>1.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <groupId>com.yunduan</groupId> <artifactId>spring-boot-provider</artifactId> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>com.yunduan</groupId> <artifactId>spring-boot-api</artifactId> <version>1.0-SNAPSHOT</version> </dependency> </dependencies></project>
接着就是在zookeeper上面暴露服务,代码如下:
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> <dubbo:application name="dubbo-provider"/> <dubbo:registry address="zookeeper://127.0.0.1:2181" check="false" subscribe="false"/> <dubbo:service interface="com.lixk.user.service.UserService" ref="userService"/> <!-- 用dubbo协议在100端口暴露服务 --> <dubbo:protocol name="dubbo" port="100" /> <bean id="userService" class="com.lixk.user.serviceImpl.serviceImpl"></bean></beans>
启动提供者的启动类(DubboProviderApplication),你会发现在dubbo的监控项目(dubbo-admin)里面会有这个你的提供者接口
这边我开启的端口是100。
接着我们开始消费者的调用。
spirng-boot-consumer(消费者)
在这里,我放入了controller,直接调用我们的这个提供者的服务。
package com.lixk.user.controller;import com.lixk.user.service.UserService;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import javax.annotation.Resource;@RestControllerpublic class UserController{ @Resource UserService userService; @RequestMapping(value = "/findUser") private String findUser(){ return userService.sayHello(); }}
然后编写启动类
package com;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.context.annotation.ImportResource;@SpringBootApplication@ImportResource(value = {"classpath:consumer.xml"})public class DoubboConsumerApplication { public static void main(String[] args) { SpringApplication.run(DoubboConsumerApplication.class, args); }}
配置文件 consumer.xml
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> <!--<dubbo:application name="demotest-consumer"/>--> <!--向 zookeeper 订阅 provider 的地址,由 zookeeper 定时推送--> <dubbo:registry address="zookeeper://127.0.0.1:2181"/> <!--使用 dubbo 协议调用定义好的 com.lixk.user.service.UserService 接口--> <dubbo:reference id="sayHello" interface="com.lixk.user.service.UserService"/></beans>
pom.xml
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <artifactId>spring-boot-dubbo</artifactId> <groupId>com.yunduan</groupId> <version>1.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <groupId>com.yunduan</groupId> <artifactId>spring-boot-consumer</artifactId> <dependencies> <dependency> <groupId>com.yunduan</groupId> <artifactId>spring-boot-api</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <dependency> <groupId>com.yunduan</groupId> <artifactId>spring-boot-provider</artifactId> <version>1.0-SNAPSHOT</version> </dependency> </dependencies></project>
到这里我的项目配置完成。
但是当我启动消费者的启动类的时候,出现了如下的错误:
com.alibaba.dubbo.rpc.RpcException: Fail to start server(url: dubbo://10.100.16.65:100/com.lixk.user.service.UserService?anyhost=true&application=dubbo-provider&bind.ip=10.100.16.65&bind.port=100&channel.readonly.sent=true&codec=dubbo&dubbo=2.5.7&generic=false&heartbeat=60000&interface=com.lixk.user.service.UserService&methods=sayHello&pid=9128&side=provider×tamp=1511320215052) Failed to bind NettyServer on /10.100.16.65:100, cause: Failed to bind to: /0.0.0.0:100 at com.alibaba.dubbo.rpc.protocol.dubbo.DubboProtocol.createServer(DubboProtocol.java:277) ~[dubbo-2.5.7.jar:2.5.7] at com.alibaba.dubbo.rpc.protocol.dubbo.DubboProtocol.openServer(DubboProtocol.java:254) ~[dubbo-2.5.7.jar:2.5.7] at com.alibaba.dubbo.rpc.protocol.dubbo.DubboProtocol.export(DubboProtocol.java:241) ~[dubbo-2.5.7.jar:2.5.7] at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper.export(ProtocolFilterWrapper.java:94) ~[dubbo-2.5.7.jar:2.5.7] at com.alibaba.dubbo.rpc.protocol.ProtocolListenerWrapper.export(ProtocolListenerWrapper.java:56) ~[dubbo-2.5.7.jar:2.5.7] at com.alibaba.dubbo.rpc.Protocol$Adaptive.export(Protocol$Adaptive.java) ~[dubbo-2.5.7.jar:2.5.7] at com.alibaba.dubbo.registry.integration.RegistryProtocol.doLocalExport(RegistryProtocol.java:163) ~[dubbo-2.5.7.jar:2.5.7] at com.alibaba.dubbo.registry.integration.RegistryProtocol.export(RegistryProtocol.java:116) ~[dubbo-2.5.7.jar:2.5.7] at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper.export(ProtocolFilterWrapper.java:92) ~[dubbo-2.5.7.jar:2.5.7] at com.alibaba.dubbo.rpc.protocol.ProtocolListenerWrapper.export(ProtocolListenerWrapper.java:54) ~[dubbo-2.5.7.jar:2.5.7] at com.alibaba.dubbo.rpc.Protocol$Adaptive.export(Protocol$Adaptive.java) ~[dubbo-2.5.7.jar:2.5.7] at com.alibaba.dubbo.config.ServiceConfig.doExportUrlsFor1Protocol(ServiceConfig.java:499) ~[dubbo-2.5.7.jar:2.5.7] at com.alibaba.dubbo.config.ServiceConfig.doExportUrls(ServiceConfig.java:351) ~[dubbo-2.5.7.jar:2.5.7] at com.alibaba.dubbo.config.ServiceConfig.doExport(ServiceConfig.java:312) ~[dubbo-2.5.7.jar:2.5.7] at com.alibaba.dubbo.config.ServiceConfig.export(ServiceConfig.java:211) ~[dubbo-2.5.7.jar:2.5.7] at com.alibaba.dubbo.config.spring.ServiceBean.onApplicationEvent(ServiceBean.java:122) ~[dubbo-2.5.7.jar:2.5.7] at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:167) ~[spring-context-4.3.10.RELEASE.jar:4.3.10.RELEASE] at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139) ~[spring-context-4.3.10.RELEASE.jar:4.3.10.RELEASE] at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:393) ~[spring-context-4.3.10.RELEASE.jar:4.3.10.RELEASE] at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:347) ~[spring-context-4.3.10.RELEASE.jar:4.3.10.RELEASE] at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:883) ~[spring-context-4.3.10.RELEASE.jar:4.3.10.RELEASE] at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.finishRefresh(EmbeddedWebApplicationContext.java:144) ~[spring-boot-1.5.6.RELEASE.jar:1.5.6.RELEASE] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:546) ~[spring-context-4.3.10.RELEASE.jar:4.3.10.RELEASE] at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122) ~[spring-boot-1.5.6.RELEASE.jar:1.5.6.RELEASE] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:693) [spring-boot-1.5.6.RELEASE.jar:1.5.6.RELEASE] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:360) [spring-boot-1.5.6.RELEASE.jar:1.5.6.RELEASE] at org.springframework.boot.SpringApplication.run(SpringApplication.java:303) [spring-boot-1.5.6.RELEASE.jar:1.5.6.RELEASE] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1118) [spring-boot-1.5.6.RELEASE.jar:1.5.6.RELEASE] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1107) [spring-boot-1.5.6.RELEASE.jar:1.5.6.RELEASE] at com.DoubboConsumerApplication.main(DoubboConsumerApplication.java:18) [classes/:na]Caused by: com.alibaba.dubbo.remoting.RemotingException: Failed to bind NettyServer on /10.100.16.65:100, cause: Failed to bind to: /0.0.0.0:100 at com.alibaba.dubbo.remoting.transport.AbstractServer.<init>(AbstractServer.java:70) ~[dubbo-2.5.7.jar:2.5.7] at com.alibaba.dubbo.remoting.transport.netty.NettyServer.<init>(NettyServer.java:63) ~[dubbo-2.5.7.jar:2.5.7] at com.alibaba.dubbo.remoting.transport.netty.NettyTransporter.bind(NettyTransporter.java:33) ~[dubbo-2.5.7.jar:2.5.7] at com.alibaba.dubbo.remoting.Transporter$Adaptive.bind(Transporter$Adaptive.java) ~[dubbo-2.5.7.jar:2.5.7] at com.alibaba.dubbo.remoting.Transporters.bind(Transporters.java:57) ~[dubbo-2.5.7.jar:2.5.7] at com.alibaba.dubbo.remoting.exchange.support.header.HeaderExchanger.bind(HeaderExchanger.java:41) ~[dubbo-2.5.7.jar:2.5.7] at com.alibaba.dubbo.remoting.exchange.Exchangers.bind(Exchangers.java:71) ~[dubbo-2.5.7.jar:2.5.7] at com.alibaba.dubbo.rpc.protocol.dubbo.DubboProtocol.createServer(DubboProtocol.java:275) ~[dubbo-2.5.7.jar:2.5.7] ... 29 common frames omittedCaused by: org.jboss.netty.channel.ChannelException: Failed to bind to: /0.0.0.0:100 at org.jboss.netty.bootstrap.ServerBootstrap.bind(ServerBootstrap.java:303) ~[netty-3.2.5.Final.jar:na] at com.alibaba.dubbo.remoting.transport.netty.NettyServer.doOpen(NettyServer.java:94) ~[dubbo-2.5.7.jar:2.5.7] at com.alibaba.dubbo.remoting.transport.AbstractServer.<init>(AbstractServer.java:65) ~[dubbo-2.5.7.jar:2.5.7] ... 36 common frames omittedCaused by: java.net.BindException: Address already in use: bind at sun.nio.ch.Net.bind0(Native Method) ~[na:1.8.0_144] at sun.nio.ch.Net.bind(Net.java:433) ~[na:1.8.0_144] at sun.nio.ch.Net.bind(Net.java:425) ~[na:1.8.0_144] at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223) ~[na:1.8.0_144] at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74) ~[na:1.8.0_144] at org.jboss.netty.channel.socket.nio.NioServerSocketPipelineSink.bind(NioServerSocketPipelineSink.java:148) ~[netty-3.2.5.Final.jar:na] at org.jboss.netty.channel.socket.nio.NioServerSocketPipelineSink.handleServerSocket(NioServerSocketPipelineSink.java:100) ~[netty-3.2.5.Final.jar:na] at org.jboss.netty.channel.socket.nio.NioServerSocketPipelineSink.eventSunk(NioServerSocketPipelineSink.java:74) ~[netty-3.2.5.Final.jar:na] at org.jboss.netty.channel.Channels.bind(Channels.java:468) ~[netty-3.2.5.Final.jar:na] at org.jboss.netty.channel.AbstractChannel.bind(AbstractChannel.java:192) ~[netty-3.2.5.Final.jar:na] at org.jboss.netty.bootstrap.ServerBootstrap$Binder.channelOpen(ServerBootstrap.java:348) ~[netty-3.2.5.Final.jar:na] at org.jboss.netty.channel.Channels.fireChannelOpen(Channels.java:176) ~[netty-3.2.5.Final.jar:na] at org.jboss.netty.channel.socket.nio.NioServerSocketChannel.<init>(NioServerSocketChannel.java:85) ~[netty-3.2.5.Final.jar:na] at org.jboss.netty.channel.socket.nio.NioServerSocketChannelFactory.newChannel(NioServerSocketChannelFactory.java:142) ~[netty-3.2.5.Final.jar:na] at org.jboss.netty.channel.socket.nio.NioServerSocketChannelFactory.newChannel(NioServerSocketChannelFactory.java:90) ~[netty-3.2.5.Final.jar:na] at org.jboss.netty.bootstrap.ServerBootstrap.bind(ServerBootstrap.java:282) ~[netty-3.2.5.Final.jar:na] ... 38 common frames omitted
最后在这个这个链接上面找到了解决方法。
希望能够帮到大家。有错误的地方希望大神多多指教,毕竟我也是第一次搭这个框架。只是总结了一下坑点。
阅读全文
1 0
- spirng boot+dubbo+zookeeper整合出现的问题
- spirng boot 整合mybatis
- dubbo、zookeeper,springMVC的整合
- dubbo、zookeeper,springMVC的整合
- spring boot 与dubbo 2.8.4整合的一些问题
- 记一次搭建dubbo+zookeeper+springMvc中出现的问题
- spring boot+dubbo+zookeeper(SOA详细整合)
- Dubbo 与 Zookeeper SpringMVC 的整合
- dubbo和zookeeper的整合使用
- SpringBoot下的Dubbo和Zookeeper整合
- zookeeper+dubbo和spring的整合
- springMVC dubbo zookeeper整合
- Dubbo,Springmaven,Zookeeper整合
- springMVC,Dubbo,zookeeper 整合
- spring+dubbo+zookeeper整合
- springMVC整合dubbo+zookeeper
- Zookeeper+Dubbo+Spring整合
- Dubbo整合Zookeeper入门教程
- python修改IE注册表
- 常用的sublime text 3插件
- NLP+2vec︱认识多种多样的2vec向量化模型
- mysql的sql优化
- MVP架构分包+OkHttp网络请求+RecyclerView展示数据
- spirng boot+dubbo+zookeeper整合出现的问题
- Jackson的使用总结
- python的系统调用
- 小壁虎之EFM32--小试牛刀
- QT 一个类调用另一个类中的方法 (样式表例子)
- Tensorflow实战学习(四十四)【TF.Contrib组件,统计分布,Layer,性能分析器tfprof】
- 数学家刘徽的故事
- CentOS6.4(64位)安装Mysql5.6
- 代码框架生成器