server项目目录结构
创建统一的api接口(提供给服务提供者和服务消费者使用)
public interface ILoginService {
String login(String username,String password);
}
将改暴露的接口导出
dubbo-server端
引入pom文件(引入nacos或者zookeeper依赖)
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<!--引入自己对应暴露的接口-->
<dependency>
<groupId>com.jgh</groupId>
<artifactId>dubbo-server-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo</artifactId>
<version>2.7.8</version>
</dependency>
<!-- <dependency>-->
<!-- <groupId>org.apache.dubbo</groupId>-->
<!-- <artifactId>dubbo-dependencies-zookeeper</artifactId>-->
<!-- <version>2.7.8</version>-->
<!-- </dependency>-->
<!--注册到zookeeper依赖-->
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.7</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>2.8.0</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>2.8.0</version>
</dependency>
<!-- 注册到nacos依赖 -->
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
<version>1.2.1</version>
</dependency>
</dependencies>
server端暴露接口的实现类
public class LoginServiceImpl implements ILoginService{
public String login(String username, String password) {
if (username.equals("admin")&&password.equals("admin")){
return "success";
}
return "failed";
}
}
dubbo配置实现类application.xml
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
xmlns="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
<dubbo:application name="dubbo-server"/>
<dubbo:protocol name="dubbo" port="20880" />
<dubbo:registry address="nacos://192.168.56.10:8848"/>
<dubbo:service interface="com.jgh.service.ILoginService" ref="loginService"/>
<bean id="loginService" class="com.jgh.service.LoginServiceImpl"/>
</beans>
配置server端启动类(Maven项目启动方式---自行更换成springboot)
public class App
{
public static void main( String[] args )
{
Main.main(args);
}
}
dubbo-client端
client目录结构
pom文件(引入nacos和zookeeper注册中心)
<dependencies>
<dependency>
<groupId>com.jgh</groupId>
<artifactId>dubbo-server-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo</artifactId>
<version>2.7.8</version>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.7</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>2.8.0</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>2.8.0</version>
</dependency>
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
<version>1.2.1</version>
</dependency>
</dependencies>
此处dubbo-server-api引入不成功的话,可能是本地maven仓库的地址没有统一
设置同一个仓库地址之后就能引入成功了
配置application.xml文件
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
xmlns="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
<dubbo:application name="dubbo-server"/>
<dubbo:registry address="nacos://192.168.56.10:8848" timeout="10000"/>
<dubbo:reference id="loginService" interface="com.jgh.service.ILoginService" />
</beans>
client端启动程序
public class App {
public static void main(String[] args) {
ILoginService loginService = null;
ApplicationContext applicationContext = new ClassPathXmlApplicationContext
("classpath:META-INF/spring/application.xml");
loginService = applicationContext.getBean(ILoginService.class);
System.out.println(loginService.login("admin","admin"));
}
}
以上就是使用dubbo整合nacos/zookeeper的流程。
如何使用启动nacos和zookeeper可参考下一篇文章。