Spring Dubbo整合开发
来源:互联网 发布:购买了域名怎么使用 编辑:程序博客网 时间:2024/05/17 01:44
spring-dubbo-api 服务的接口
spring-dubbo-domain 接口的实现,也是dubbo的生产者spring-dubbo-web 接口的调用者,消费者
1 spring-dubbo-api
接口:UserService
package spring.dubbo.api.service;public interface UserService {public String select(String id);}
<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"> <modelVersion>4.0.0</modelVersion> <groupId>spring.dubbo.test</groupId> <artifactId>spring-dubbo-api</artifactId> <version>0.0.1-SNAPSHOT</version></project>
maven创建的时候选的打包方式是jar
2 spring-dubbo-domain
pom.xml 引入spring-dubbo-api 接口包,因为要实现接口,dubbo只能调用接口,所以会有spring-dubbo-api ,没有直接使用类;dubbo zookeeper包 spring包
<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"><modelVersion>4.0.0</modelVersion><groupId>spring.dubbo.test</groupId><artifactId>spring-dubbo-domain</artifactId><version>0.0.1-SNAPSHOT</version><packaging>war</packaging><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><java.version>1.7</java.version><spring.version>3.2.8.RELEASE</spring.version><commons.version>2.2</commons.version></properties><dependencies><!-- 使用dubbo的接口 --><dependency><groupId>spring.dubbo.test</groupId><artifactId>spring-dubbo-api</artifactId><version>0.0.1-SNAPSHOT</version></dependency><!-- junit --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.7</version><type>jar</type><scope>test</scope></dependency><!-- dubbo,zookeeper包 --><dependency><groupId>com.alibaba</groupId><artifactId>dubbo</artifactId><version>2.4.10</version><exclusions><exclusion><groupId>org.springframework</groupId><artifactId>spring</artifactId></exclusion></exclusions></dependency><dependency><groupId>com.101tec</groupId><artifactId>zkclient</artifactId><version>0.4</version></dependency><!-- spring 包 --><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-aop</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-orm</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc-portlet</artifactId><version>${spring.version}</version></dependency></dependencies></project>
UserServiceImpl
package spring.dubbo.domain.service;import org.springframework.stereotype.Service;import spring.dubbo.api.service.UserService;@Service("userService")public class UserServiceImpl implements UserService {public String select(String id) {return "{name:这是dubbo调用的服务"+",id:"+id+"}";}}
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"xmlns:oscache="http://www.springmodules.org/schema/oscache"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd http://www.springmodules.org/schema/oscache http://www.springmodules.org/schema/cache/springmodules-oscache.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd"> <context:annotation-config /><context:component-scan base-package="spring.dubbo.domain.service" /><import resource="user-provider.xml"/> </beans>
user-provider.xml
消费者配置,添加配置后有可能xml会报错,需要下载 dubbo.xsd,我的在 C:\Users\Administrator\Desktop\dubbo\dubbo.xsd,按照window-preferences-xml Catalog-Add
LOCATION放dubbo.xsd的地址,如下
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> <!-- 提供方应用名称信息,这个相当于起一个名字,我们dubbo管理页面比较清晰是哪个应用暴露出来的 --><dubbo:application name="spring-dubbo-domain"/><!-- 提供方应用名称信息,这个相当于起一个名字,我们dubbo管理页面比较清晰是哪个应用暴露出来的 --> <!-- 使用zookeeper注册中心暴露服务地址 --><dubbo:registry id="zk1" address="192.168.150.129:2181" protocol="zookeeper" /> <!-- 使用multicast广播注册中心暴露服务地址 --> <!--<dubbo:registry address="multicast://224.5.6.7:1234" /> --> <!-- 用dubbo协议在20886端口暴露服务 --> <dubbo:protocol id="mydubbo" name="dubbo" port="20886" /> <dubbo:provider registry="zk1" protocol="mydubbo"/> <!-- 声明需要暴露的服务接口 --> <dubbo:service interface="spring.dubbo.api.service.UserService" ref="userService" /> </beans>
dubbo注册中心的地址,为zookeeper安装时候配置的,默认本机ip:2181
web.xml
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>spring-dubbo-domain</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <!-- 指定spring配置文件位置 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:conf/applicationContext.xml</param-value> </context-param> <!-- 启动spring --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener></web-app>
说明:maven创建web项目:创建项目时候选择war包,创建好后,随便在一个其他web项目copy出WEB-INF,放在自己的webapp下即可;
3 spring-dubbo-web
pom.xml同上
<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"><modelVersion>4.0.0</modelVersion><groupId>spring.dubbo</groupId><artifactId>spring-dubbo-web</artifactId><version>0.0.1-SNAPSHOT</version><packaging>war</packaging><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><java.version>1.7</java.version><spring.version>3.2.8.RELEASE</spring.version><commons.version>2.2</commons.version></properties><dependencies><!-- 使用dubbo的接口 --><dependency><groupId>spring.dubbo.test</groupId><artifactId>spring-dubbo-api</artifactId><version>0.0.1-SNAPSHOT</version></dependency><!-- junit --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.7</version><type>jar</type><scope>test</scope></dependency><!-- dubbo,zookeeper包 --><dependency><groupId>com.alibaba</groupId><artifactId>dubbo</artifactId><version>2.4.10</version><exclusions><exclusion><groupId>org.springframework</groupId><artifactId>spring</artifactId></exclusion></exclusions></dependency><dependency><groupId>com.101tec</groupId><artifactId>zkclient</artifactId><version>0.4</version></dependency><!-- spring 包 --><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-aop</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-orm</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc-portlet</artifactId><version>${spring.version}</version></dependency><!-- 定时器 --> <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>1.8.5</version> </dependency> </dependencies></project>
这是一个测试类,spring容器加载完毕,自动执行该方法,这个方法里注入了dubbo提供的接口UserService,如果调用成功说明dubbo已经被成功调用;当然这个类需要在spring的配置里添加<bean class="spring.dubbo.web.controller.UserController"/> ;
package spring.dubbo.web.controller;import java.util.concurrent.TimeUnit;import javax.annotation.Resource;import org.springframework.context.ApplicationListener;import org.springframework.context.event.ContextRefreshedEvent;import spring.dubbo.api.service.UserService;public class UserController implements ApplicationListener<ContextRefreshedEvent>{@Resourceprivate UserService userService;public void onApplicationEvent(ContextRefreshedEvent event) {if(event.getApplicationContext().getParent() == null){System.out.println("这是消费端的应用");System.out.println(userService.select("123"));;}}}
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"xmlns:oscache="http://www.springmodules.org/schema/oscache"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd http://www.springmodules.org/schema/oscache http://www.springmodules.org/schema/cache/springmodules-oscache.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd"> <context:annotation-config /><context:component-scan base-package="spring.dubbo" /><import resource="user-consumer.xml"/> <bean class="spring.dubbo.web.controller.UserController"/> </beans>
user-consumer.xml
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> <!-- 提供方应用名称信息,这个相当于起一个名字,我们dubbo管理页面比较清晰是哪个应用暴露出来的 --><dubbo:application name="spring-dubbo-web"/> <!-- 使用zookeeper注册中心暴露服务地址 --><dubbo:registry id="zk1" address="192.168.150.129:2181" protocol="zookeeper" /> <dubbo:protocol id="mydubbo" name="dubbo" port="20886" /> <dubbo:consumer registry="zk1"/> <dubbo:reference id="userService" interface="spring.dubbo.api.service.UserService"/> </beans>
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>spring-dubbo-web</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:conf/applicationContext.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener></web-app>
测试:测试的时候可以在eclipse启动2个tomcat,不要放在1个里面,2个tomcat的3个端口参数不能相同,否则无法启动。
修改端口参数
测试结果:
log4j:WARN No appenders could be found for logger (org.springframework.web.context.ContextLoader).
log4j:WARN Please initialize the log4j system properly.
这是消费端的应用
{name:这是dubbo调用的服务,id:123}
三月 13, 2017 5:10:37 下午 org.apache.coyote.AbstractProtocol start
信息: Starting ProtocolHandler ["http-bio-8081"]
三月 13, 2017 5:10:37 下午 org.apache.coyote.AbstractProtocol start
信息: Starting ProtocolHandler ["ajp-bio-8001"]
三月 13, 2017 5:10:37 下午 org.apache.catalina.startup.Catalina start
信息: Server startup in 4040 ms
- Spring Dubbo整合开发
- spring+dubbo整合
- spring+dubbo+zookeeper整合
- Zookeeper+Dubbo+Spring整合
- spring dubbo整合详细
- spring整合dubbo
- zookeeper,dubbo,spring整合
- Spring boot 整合Dubbo
- Spring整合threadPool+dubbo
- dubbo与spring整合
- Spring Boot整合Dubbo
- spring 、zookeeper(dubbo)整合
- spring 、zookeeper(dubbo)整合
- dubbo、zookeeper、Spring整合实例
- Dubbo spring mvc整合示例
- spring 整合dubbo 测试搭建
- spring 、zookeeper(dubbo)整合
- dubbo+zookeeper+spring整合demo
- Linux环境变量
- Web开发、原生开发、混合开发的区别优势:
- 关于javax.servlet.ServletException: java.lang.IllegalStateException: No WebEnvironment found: no Envir
- 汽水瓶
- HDU
- Spring Dubbo整合开发
- GYM 100712 E.Epic Professor(水~)
- shp转化为json
- poj1321 棋盘问题
- Android studio下gradle打包
- Centos6没有GUI的情况下使用matplotlib绘图
- Fragment详解之四——管理Fragment(2)
- R语言 利用随机森林预测股票走势<一>
- PostgreSQL9 initdb: 命令行参数太多 (第一个是 "(x86)/pgsql9/data")