Spring Boot整合Dubbo框架demo
来源:互联网 发布:交大知行大厦六层 编辑:程序博客网 时间:2024/06/16 14:23
Dubbo框架原理见之前的博文:http://www.cnblogs.com/umgsai/p/5836925.html
首先启动zookeeper
Server端
Pom配置如下
<?xml version="1.0"?><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/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.umgsai</groupId> <artifactId>springboot-demo</artifactId> <version>1.0.0-SNAPSHOT</version> <packaging>jar</packaging> <name>springboot-demo Maven Webapp</name> <url>http://maven.apache.org</url> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.3.5.RELEASE</version> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.7</maven.compiler.source> <maven.compiler.target>1.7</maven.compiler.target> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.8</version> </dependency> <dependency> <groupId>com.101tec</groupId> <artifactId>zkclient</artifactId> <version>0.3</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <version>2.5.3</version> <exclusions> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring</artifactId> </exclusion> </exclusions> </dependency> </dependencies> <build> <finalName>springboot-demo</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <fork>true</fork> <mainClass>${start-class}</mainClass> </configuration> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> <plugin> <artifactId>maven-assembly-plugin</artifactId> <version>2.2-beta-5</version> <configuration> <archive> <manifest> <addClasspath>true</addClasspath> <mainClass>com.springboot.server.demo.SampleController</mainClass> </manifest> </archive> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> <executions> <execution> <id>assemble-all</id> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin> </plugins> </build></project>
发布服务配置
<?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="demo-provider" /> <!-- 使用zookeeper注册中心暴露服务地址 --> <dubbo:registry protocol="zookeeper" address="localhost:2181" /> <!-- 用dubbo协议在20880端口暴露服务 --> <dubbo:protocol name="dubbo" port="20880" /> <!-- 用户服务接口 --> <dubbo:service interface="com.springboot.demo.UserService" ref="userService" /> <bean id="userService" class="com.springboot.demo.UserServiceImpl"/></beans>
测试接口
public interface UserService { public String getUserName();}
接口实现
public class UserServiceImpl implements UserService { public String getUserName() { System.out.println("Being invoked"); return "test user"; }}
Spring Boot启动类
@ImportResource("classpath:config/appcontext-*.xml")@Controller//@EnableAutoConfiguration@SpringBootApplicationpublic class SampleController { @RequestMapping("/home") @ResponseBody String home() { return "Hello world"; } public static void main(String[] args) throws Exception { SpringApplication.run(SampleController.class, args); }}
启动Spring Boot即可在zookeeper上注册服务端
Client端
Pom配置如下
<?xml version="1.0"?><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/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.umgsai</groupId> <artifactId>springboot-dubbo-client</artifactId> <packaging>jar</packaging> <name>springboot-demo Maven Webapp</name> <url>http://maven.apache.org</url> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.3.5.RELEASE</version> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.7</maven.compiler.source> <maven.compiler.target>1.7</maven.compiler.target> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.8</version> </dependency> <dependency> <groupId>com.101tec</groupId> <artifactId>zkclient</artifactId> <version>0.3</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <version>2.5.3</version> <exclusions> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring</artifactId> </exclusion> </exclusions> </dependency> </dependencies> <build> <finalName>springboot-demo</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <fork>true</fork> <mainClass>${start-class}</mainClass> </configuration> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> <plugin> <artifactId>maven-assembly-plugin</artifactId> <version>2.2-beta-5</version> <configuration> <archive> <manifest> <addClasspath>true</addClasspath> <mainClass>com.springboot.client.demo.mainController</mainClass> </manifest> </archive> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> <executions> <execution> <id>assemble-all</id> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin> </plugins> </build></project>
服务配置
<?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="demo-consumer"/> <!--zookeeper注册中心 --> <dubbo:registry protocol="zookeeper" address="localhost:2181" /> <!--使用multicast广播注册中心暴露的服务地址 --> <!--<dubbo:registryaddress="multicast://10.57.41.19:1234" /> --> <!-- 生成远程服务代理,可以和本地bean一样使用demoService--> <dubbo:reference id="userService" interface="com.springboot.demo.UserService" /></beans>
接口从API包中引入,通过以上配置,Dubbo即可实例化配置的接口
调用端代码如下
@ImportResource("classpath:appcontext-*.xml")@Controller//@EnableAutoConfiguration@SpringBootApplicationpublic class MainController extends SpringBootServletInitializer implements EmbeddedServletContainerCustomizer { @Autowired private UserService userService; @RequestMapping("/home") @ResponseBody public String home() { return userService.getUserName(); } public static void main(String[] args) throws Exception { SpringApplication.run(MainController.class, args); } @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(MainController.class); } //修改启动端口 @Override public void customize(ConfigurableEmbeddedServletContainer container) { container.setPort(8081); }}
通过访问http://localhost:8081/home即可调用服务端的方法。
阅读全文
0 0
- Spring Boot整合Dubbo框架demo
- Spring Boot整合Dubbo框架demo
- 解密Spring Boot整合Dubbo RPC框架
- Spring boot 整合Dubbo
- Spring Boot整合Dubbo
- dubbo+zookeeper+spring整合demo
- Spring Boot整合Dubbo运行
- spring boot + dubbo整合注意事项
- (十)Spring Boot 整合dubbo
- Spring Boot整合Dubbo运行
- Dubbo+Zookeeper+Spring整合入门Demo
- dubbo+zookeeper+spring整合(注解式demo)
- Spring Boot Dubbo 整合和入门理解
- Spring Boot对dubbo的整合
- spring boot + jta + druid整合demo
- Dubbo与Zookeeper、spring框架入门整合。
- dubbo zookeeper spring mvc简单整合的工程例子demo
- 一个简单的Dubbo+Zookeeper+Spring整合Demo,附带源码
- http-关于application/x-www-form-urlencoded等字符编码的解释说明
- PAT 甲级 1109. Group Photo (25)
- js通过Url下载文件
- Objective-C中异常处理
- Shell学习笔记
- Spring Boot整合Dubbo框架demo
- arp地址解析协议
- eclipse查看当前项目所在本地硬盘上的目录
- 高德地图计算两坐标之间距离
- java 最佳实践
- java数据结构
- 浅谈Ajax中的GET和POST
- 刚发现set的底层是通过map实现的
- 版本控制