Dubbo&maven 聚合初学Demo级别配置展示
来源:互联网 发布:mysql创建唯一约束 编辑:程序博客网 时间:2024/05/21 17:29
Dubbo&DubboX浅谈(Demo级别)
引入
近期阿里爸爸的开源框架dubbo进行的学习探索结合一套自己的小项目完成了一个Maven聚合项目下的为服务框
Dubbo背景
这里不对背景,以及dubbo是什么进行叙述以下链能更好的帮你找到答案
项目搭建背景
这里使用的是一个婚恋社交网站的背景
主要展示maven聚合下的dubbo通过进行跨域服务
相关代码如下
工程如下
parent定义依赖管理
<dependencies> <dependency> <groupId>com.Vee</groupId> <artifactId>Vee-commons</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <dependency> <groupId>com.Vee</groupId> <artifactId>Vee-manage-pojo</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> </dependency> <dependency> <groupId>javax.annotation</groupId> <artifactId>javax.annotation-api</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>javax.ws.rs</groupId> <artifactId>javax.ws.rs-api</artifactId> <version>2.0</version> </dependency> <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-mapper-asl</artifactId> <version>1.9.12</version> </dependency> <!--在此直接引入dubbo--> <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <version>2.8.4</version> </dependency>
Doubo接口定义
package com.Vee.dubbo.service;import com.Vee.manage.pojo.UserBase;import com.alibaba.dubbo.rpc.protocol.rest.support.ContentType;import javax.ws.rs.*;import javax.ws.rs.core.MediaType;import java.util.List;/** * Created by NZY-PC on 2017/5/5. */@Path("search")@Consumes({MediaType.APPLICATION_JSON, MediaType.TEXT_XML})@Produces({ContentType.APPLICATION_JSON_UTF_8, ContentType.TEXT_XML_UTF_8})public interface DubboSearchRestSerivce { @POST @Path("query") public List<UserBase> toSearch(@QueryParam(value ="AgeBegin") Integer AgeBegin, @QueryParam(value = "AgeEnd") Integer AgeEnd, @QueryParam(value = "BirthCity") String BirthCity, @QueryParam(value = "BirthProvince") String BirthProvince, @QueryParam(value = "College") String College, @QueryParam(value = "Gender") Integer Gender, @QueryParam(value = "MarryStatue") Integer MarryStatue, @QueryParam(value = "Salary") String Salary);}
提供者实现了Vee-dubbo工程中的接口
pom
<parent> <groupId>com.Vee</groupId> <artifactId>Vee-parent</artifactId> <version>1.0-SNAPSHOT</version> </parent> <dependencies> <dependency> <groupId>com.Vee</groupId> <artifactId>Vee-manage-pojo</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <dependency> <groupId>com.Vee</groupId> <artifactId>Vee-commons</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <!--dubbo依赖--> <dependency> <groupId>com.Vee</groupId> <artifactId>Vee-dubbo</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <!--dubbo 服务端依赖 | --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.0.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.7</version> </dependency> <dependency> <groupId>org.jboss.resteasy</groupId> <artifactId>resteasy-jaxrs</artifactId> <version>3.0.7.Final</version> </dependency> <!--dubbo 服务端依赖 | --> </dependencies>
提供者实现接口类
package com.Vee.search.dubbo;import com.Vee.dubbo.service.DubboSearchRestSerivce;import com.Vee.manage.pojo.UserBase;import com.Vee.search.service.UserSearchService;import org.springframework.beans.factory.annotation.Autowired;import java.util.List;/** * Created by NZY-PC on 2017/5/5. */public class DubboSearchRestServiceimpl implements DubboSearchRestSerivce{ @Autowired UserSearchService userSearchService; public List<UserBase> toSearch(Integer AgeBegin,Integer AgeEnd, String BirthCity,String BirthProvince, String College,Integer Gender, Integer MarryStatue,String Salary){ UserBase userBase = new UserBase(); userBase.setGender(Gender); userBase.setBirthProvince(BirthProvince); userBase.setBirthCity(BirthCity); userBase.setMarryStatue(MarryStatue); userBase.setCollege(College); userBase.setSalary(Salary); List<UserBase> userBaseList = userSearchService.queryUserListByWhere(userBase); return userBaseList; }}
提供者serch整合spring的相关配置文件
<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-2.5.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> <!-- name:用于注册中心计算应用间依赖关系;消费者和提供者应用名称不要一样,此参数不是匹配条件;项目叫什么就填什么 --> <!-- owner:应用负责人,用于服务治理,请填写负责人公司邮箱前缀 --> <dubbo:application name="Vee-search" /> <!-- 使用zookeeper注册中心暴露服务地址 --> <dubbo:registry address="zookeeper://10.8.36.20:2181?backup=10.8.36.21:2181,10.8.36.22:2181" /> <!-- 用dubbo协议在20880端口暴露服务 --> <!-- <dubbo:protocol name="dubbo" port="20880" /> --> <!-- 如果ID不填,缺省和name属性值一样,重复则在name后加序号。 --> <!-- port:dubbo协议缺省端口为20880,rmi协议缺省端口为1099,http和hessian协议缺省端口为80 --> <!-- threadpool:默认fixed --> <!-- threads:服务线程池大小 --> <!-- accepts:服务提供方最大可接受连接数 --> <!-- payload:请求及响应数据包大小限制,单位:字节;默认是8M --> <dubbo:protocol name="rest" threads="500" port="8084" contextpath="/" server="servlet" accepts="500" extension="com.alibaba.dubbo.rpc.protocol.rest.support.LoggingFilter" /> <!-- timeout:远程服务调用超时时间(毫秒) --> <!-- loadbalance:负载均衡策略,可选值:random,roundrobin,leastactive,分别表示:随机,轮循,最少活跃调用 --> <dubbo:service interface="com.Vee.dubbo.service.DubboSearchRestSerivce" ref="dubboSearchRestSerivce" protocol="rest" timeout="10000"/> <!--注册bean不要填写错了,对应接口的实现类--> <bean id="dubboSearchRestSerivce" class="com.Vee.search.dubbo.DubboSearchRestServiceimpl"/></beans>
此外!!!提供者还有一个非常重要的配置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="jt-manage" version="2.5"> <display-name>Vee-Search</display-name> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring/applicationContext*.xml</param-value> </context-param> <!--dubbo 必须在放在最前面监听--> <listener> <listener-class>com.alibaba.dubbo.remoting.http.servlet.BootstrapListener</listener-class> </listener> <!--Spring的ApplicationContext 载入 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- 编码过滤器,以UTF8编码 --> <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>com.alibaba.dubbo.remoting.http.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list></web-app>
消费者
消费者相关pom文件
<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.Vee</groupId> <artifactId>Vee-web</artifactId> <packaging>war</packaging> <version>1.0-SNAPSHOT</version> <name>Vee-web Maven Webapp</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <parent> <groupId>com.Vee</groupId> <artifactId>Vee-parent</artifactId> <version>1.0-SNAPSHOT</version> </parent> <dependencies> <dependency> <groupId>com.Vee</groupId> <artifactId>Vee-commons</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <dependency> <groupId>com.Vee</groupId> <artifactId>Vee-dubbo</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <dependency> <groupId>com.Vee</groupId> <artifactId>Vee-manage-mapper</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.0.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.8</version> </dependency> <dependency> <groupId>com.github.abel533</groupId> <artifactId>mapper</artifactId> <version>2.3.2</version> </dependency> <dependency> <groupId>javax.validation</groupId> <artifactId>validation-api</artifactId> <version>1.1.0.Final</version> </dependency> <!-- 文件上传组件 --> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>${commons-fileupload.version}</version> </dependency> <!-- Redis客户端 --> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>${jedis.version}</version> </dependency> <!--httpclient--> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>${httpclient.version}</version> </dependency> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpmime</artifactId> <version>4.3.1</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-websocket</artifactId> <version>4.0.1.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-messaging</artifactId> <version>4.0.1.RELEASE</version> </dependency> </dependencies></project>
消费者Spring配置文件
<?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-2.5.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> <dubbo:application name="Vee-web"/> <dubbo:registry address="zookeeper://10.8.36.20:2181?backup=10.8.36.21:2181,10.8.36.22:2181" /> <dubbo:reference check="false" id="dubboSearchRestSerivce" interface="com.Vee.dubbo.service.DubboSearchRestSerivce" timeout="10000"/></beans>
消费者调用代码
消费在服务中直接用注入方法注入服务调用方法即可
dubbo&zookeeper
zk作为容器为dubbo提供支持,dubbo中文的图形界面非常亲和易懂具体配置目前在网上已经有很多了在此留下一些链接值得一提的是dubbo的整合中经常出现莫名其妙的依赖错误这些问题会导致启动项目时 直接报错对于找个的解决问题 最好的办法就是梳理一遍本人项目的依赖非常不清晰 因为刚开始做,这一块显得很没有条理还希望多指点对于出现莫名报错的情况 我的选择是,重新放一边依赖重新=。=第一次写 见谅
链接提供
http://blog.csdn.net/aixiaoyang168/article/details/51362675#comments
http://blog.csdn.net/qq1142003960/article/details/45362043
阅读全文
0 0
- Dubbo&maven 聚合初学Demo级别配置展示
- 通过dubbo-demo源码学习maven多项目聚合
- springmvc+mybatis+mysql+log4j.xml+logjdbc+maven聚合+nexus+dubbo demo骨架
- Maven+SpringMVC+Dubbo 简单的入门demo配置
- Maven+SpringMVC+Dubbo+zookeeper 简单的入门demo配置
- Maven+SpringMVC+Dubbo 简单的入门demo配置
- Maven+SpringMVC+Dubbo 简单的入门demo配置
- Dubbo服务 初学配置
- Dubbo(二)聚合工程之实体类,通用Parent Demo
- Dubbo(三) 聚合工程之Service层接口Demo
- Dubbo(四) 聚合工程之服务提供者Demo
- Dubbo(五) 聚合工程之服务消费者Demo
- 实现一个展示数据Demo--- 渣渣级别
- Dubbo安装配置及demo,helloworld测试
- Dubbo学习笔记(二)------Demo配置
- maven 依赖 继承 聚合的配置
- maven+ssm+redis配置demo
- Dubbo Demo
- 查看Fabric0.6的默认用户列表方式
- FPGA学习(第8节)-Verilog设计电路的时序要点及时序仿真
- 使用vundle管理vim的插件
- ubuntu下在docker中安装mysql5.6
- PoEdu-Windows班-005 ListView控件的使用方法
- Dubbo&maven 聚合初学Demo级别配置展示
- SQL2008 清除日志文件方法
- 读廖雪峰的 Python 教程小结--------Python函数
- JKI State Machine
- PHP:分页功能,底层原理;
- Effective Java读书笔记十九(Java Tips.Day.19)
- Hibernate的聚合查询返回类型Long
- OpenSessionInViewFilter原理以及为什么要用OpenSessionInViewFilter
- [usaco]Name That Number题解