用了dubbo框架,然后service发布服务,web调用服务,然后启动服务一直启动不了,
忘了启动zookeeper。启动zookeeper即可。
如果是连的本地虚拟机,可以先看看是否能ping通你所发布的那个ip.
发布顺序也是至关重要的。谁发布服务先启动谁,也就是先启动service,否则在web启动的时候找不到RPC的方法。
第一步:先导入dubbo的jar包,服务发布工程(Service)和服务调用工程(web)都需要引入jar包。引入的依赖是一样的。
<!-- dubbo相关 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
</exclusion>
<exclusion>
<groupId>org.jboss.netty</groupId>
<artifactId>netty</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
</dependency>
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
</dependency>
第二步:在服务发布端和调用端的spring中添加相应的约束
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd
第三步:在服务发布端的spring配置文件中添加
<!-- 使用dubbo发布服务 -->
<!-- 提供方应用信息,用于计算依赖关系 -->
<dubbo:application name="e3-manager" />
//提供服务的项目名称为e3-manager
<dubbo:registry protocol="zookeeper"
address="192.168.25.154:2181,192.168.25.154:2182,192.168.25.154:2183" />
<!-- 用dubbo协议在20880端口暴露服务 -->
<dubbo:protocol name="dubbo" port="20880" />
<!-- 声明需要暴露的服务接口 -->
//接口的路径,以及接口的实现类
<dubbo:service interface="cn.e3mall.service.ItemService" ref="itemServiceImpl" />
第三步:在调用端的spring配置文件中添加
<!-- 引用dubbo服务 -->
<dubbo:application name="e3-manager-web"/>
<dubbo:registry protocol="zookeeper" address="192.168.25.154:2181,192.168.25.154:2182,192.168.25.154:2183"/>
//引用的接口路径,以及接口的id,接口id为类名小写即为id。
<dubbo:reference interface="cn.e3mall.service.ItemService" id="itemService" />
第四步:启动zookeeper,然后启动service(服务端),然后启动web(调用端)