用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字

rainyday123    -  云代码空间

——

(十七) 构建dubbo分布式平台-创建dubbo服务生产者

2018-03-29|480阅||

摘要:(十七) 构建dubbo分布式平台-创建dubbo服务生产者

在前面的章节中,我们定义了dubbo服务的接口,接下来针对于接口的实现,我们要定义服务的生产者,服务生产者最终会被注册到注册中心上。

1. 创建ant-bookmark-service项目(dubbo服务生产者),其中pom.xml文件定义如下:

<?xml version="1.0"?>
<project
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
	xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>com.sml.sz</groupId>
		<artifactId>ant-project</artifactId>
		<version>1.0.0</version>
	</parent>
	<artifactId>ant-member-service</artifactId>
	<packaging>war</packaging>
	<name>ant-member-service Maven Webapp</name>
	<url>http://maven.apache.org</url>
	<description>ant的我的收藏Dubbo服务接口提供者</description>
	
	<dependencies>
		<!-- alibaba druid connection pool -->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>druid</artifactId>
			<version>${druid.version}</version>
		</dependency>

		<!-- jdbc driver -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>${mysql.driver.version}</version>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>com.oracle</groupId>
			<artifactId>ojdbc14</artifactId>
			<version>${oracle.driver.version}</version>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>net.sourceforge.jtds</groupId>
			<artifactId>jtds</artifactId>
			<version>${mssql.driver.version}</version>
			<scope>runtime</scope>
		</dependency>

		<!-- AOP相关包 -->
		<dependency>
			<groupId>org.aspectj</groupId>
			<artifactId>aspectjrt</artifactId>
			<version>1.7.4</version>
		</dependency>
		<dependency>
			<groupId>org.aspectj</groupId>
			<artifactId>aspectjweaver</artifactId>
			<version>1.7.4</version>
		</dependency>
		<dependency>
			<groupId>cglib</groupId>
			<artifactId>cglib</artifactId>
			<version>3.1</version>
		</dependency>

		<!-- dubbo 需要的jar start -->
		<dependency>
			<groupId>org.jboss.netty</groupId>
			<artifactId>netty</artifactId>
			<version>3.2.5.Final</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>
		<!-- zookeeper jar -->
		<dependency>
			<groupId>org.apache.zookeeper</groupId>
			<artifactId>zookeeper</artifactId>
			<version>3.4.5</version>
		</dependency>

		<dependency>
			<groupId>com.101tec</groupId>
			<artifactId>zkclient</artifactId>
			<version>0.3</version>
		</dependency>
		<!-- dubbo 需要的jar end -->

		<!-- Dubbo服务接口(member) -->
		<dependency>
			<groupId>com.sml.sz</groupId>
			<artifactId>ant-member-facade</artifactId>
		</dependency>
		
		<!-- ant config begin -->
		<!--  系统公共配置 -->
		<dependency>
			<groupId>com.sml.sz</groupId>
			<artifactId>ant-config</artifactId>
		</dependency> 
		<!-- ant config end 公共配置 -->
		
		<!-- ant framework begin -->
		<!--  系统核心框架包 -->
		<dependency>
			<groupId>com.sml.sz</groupId>
			<artifactId>ant-framework</artifactId>
		</dependency>
		<!-- ant framework end -->

	</dependencies>
	<build>
		<finalName>ant-member-service</finalName>
	</build>
</project>
 2. 定义spring-dubbo-provider.xml配置:
<?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="ant-service-bookmark" />

	<!-- 使用zookeeper注册中心暴露服务地址 -->
	<dubbo:registry protocol="zookeeper" address="127.0.0.1:2181" />

	<!-- 用dubbo协议在20801端口暴露服务 -->
	<dubbo:protocol name="dubbo" port="20801" />

	<!-- 监控中心配置,protocol="registry",表示从注册中心发现监控中心地址 -->
	<!-- <dubbo:monitor protocol="registry" /> -->

	<!-- 当ProtocolConfig和ServiceConfig某属性没有配置时,采用此缺省值 -->
	<dubbo:provider timeout="30000" threadpool="fixed" threads="100" accepts="1000" />

	<!-- 和本地bean一样实现服务 -->
	<!-- 声明需要暴露的服务接口 -->
	<!-- 我的收藏管理 -->
	<dubbo:service retries="0" interface="com.sml.sz.bookmark.service.BookmarkTagFacade" ref="bookmarkTagFacade" />
</beans>  
3. 定义BookmarkTagFacadeImpl.java,这个是dubbo服务接口的实现类(里面定义了基础的增删改查):
/**
 * 我的收藏链接管理Service
 * @author ant
 * @version 2016-01-30
 */
@Component("bookmarkTagFacade")
@Transactional(readOnly = true)
public class BookmarkTagFacadeImpl extends CrudService<BookmarkTagDao, BookmarkTag> implements BookmarkTagFacade{

	@Autowired
	private BookmarkDao bookmarkDao;
	
	public BookmarkTag get(String id) {
		BookmarkTag bookmarkTag = super.get(id);
		bookmarkTag.setBookmarkList(bookmarkDao.findList(new Bookmark(bookmarkTag)));
		return bookmarkTag;
	}
	
	public List<BookmarkTag> findList(BookmarkTag bookmarkTag) {
		return super.findList(bookmarkTag);
	}
	
	public Page<BookmarkTag> findPage(Page<BookmarkTag> page, BookmarkTag bookmarkTag) {
		User user = UserUtils.getUser();
		System.out.println(user.getId());
		return super.findPage(page, bookmarkTag);
	}
	
	
	@Transactional(readOnly = false)
	public void save(BookmarkTag bookmarkTag) {
		super.save(bookmarkTag);
		for (Bookmark bookmark : bookmarkTag.getBookmarkList()){
			bookmark.setCreateBy(bookmarkTag.getCreateBy());
			bookmark.setUpdateBy(bookmarkTag.getUpdateBy());
			if (bookmark.getId() == null){
				continue;
			}
			if (Bookmark.DEL_FLAG_NORMAL.equals(bookmark.getDelFlag())){
				if (StringUtils.isBlank(bookmark.getId())){
					bookmark.setTagId(bookmarkTag.getId());
					bookmark.preInsert();
					bookmarkDao.insert(bookmark);
				}else{
					bookmark.preUpdate();
					bookmarkDao.update(bookmark);
				}
			}else{
				bookmarkDao.delete(bookmark);
			}
		}
	}
	
	@Transactional(readOnly = false)
	public void delete(BookmarkTag bookmarkTag) {
		super.delete(bookmarkTag);
		bookmarkDao.delete(new Bookmark(bookmarkTag));
	}
	
}

4. 定义dao:BookmarkDao.java、BookmarkTagDao.java ,如下:
/**
 * 我的收藏链接管理DAO接口
 * @author ant
 * @version 2016-01-30
 */
@MyBatisDao
public interface BookmarkTagDao extends CrudDao<BookmarkTag> {
	
}

/**
 * 我的收藏链接管理DAO接口
 * @author ant
 * @version 2016-01-30
 */
@MyBatisDao
public interface BookmarkDao extends CrudDao<Bookmark> {
	
}

 5. 定义dao.xml文件:BookmarkTagDao.xml,如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.sml.sz.bookmark.dao.BookmarkTagDao">
    
	<sql id="bookmarkTagColumns">
		a.id AS "id",
		a.bookmarktagname AS "bookmarktagname",
		a.remarks AS "remarks",
		a.del_flag AS "delFlag"
	</sql>
    
	<select id="get" resultType="BookmarkTag">
		SELECT 
			<include refid="bookmarkTagColumns"/>
		FROM t_bookmark_tag a
		<include refid="bookmarkTagJoins"/>
		WHERE a.id = #{id}
	</select>
	
	<select id="findList" resultType="BookmarkTag">
		SELECT 
			<include refid="bookmarkTagColumns"/>
		FROM t_bookmark_tag a
		<include refid="bookmarkTagJoins"/>
		<where>
			a.del_flag = #{DEL_FLAG_NORMAL}
		</where>
		<choose>
			<when test="page !=null and page.orderBy != null and page.orderBy != ''">
				ORDER BY ${page.orderBy}
			</when>
			<otherwise>
				ORDER BY a.update_date DESC
			</otherwise>
		</choose>
	</select>
	
	<select id="findAllList" resultType="BookmarkTag">
		SELECT 
			<include refid="bookmarkTagColumns"/>
		FROM t_bookmark_tag a
		<include refid="bookmarkTagJoins"/>
		<where>
			a.del_flag = #{DEL_FLAG_NORMAL}
		</where>		
		<choose>
			<when test="page !=null and page.orderBy != null and page.orderBy != ''">
				ORDER BY ${page.orderBy}
			</when>
			<otherwise>
				ORDER BY a.update_date DESC
			</otherwise>
		</choose>
	</select>
	
	<insert id="insert">
		INSERT INTO t_bookmark_tag(
			id,
			bookmarktagname,
			remarks,
			del_flag
		) VALUES (
			#{id},
			#{bookmarktagname},
			#{remarks},
			#{delFlag}
		)
	</insert>
	
	<update id="update">
		UPDATE t_bookmark_tag SET 	
			bookmarktagname = #{bookmarktagname},
			update_date = #{updateDate},
			remarks = #{remarks}
		WHERE id = #{id}
	</update>
	
	<update id="delete">
		delete from t_bookmark_tag WHERE id = #{id}
	</update>
	
</mapper>
欢迎大家跟我一起学习《构建dubbo分布式平台》,希望大家持续关注后面的文章!
愿意了解框架技术或者源码的朋友直接求求交流分享技术:2042849237
分布式的一些解决方案,有愿意了解的朋友可以找我们团队探讨
更多详细源码参考来源
顶 0踩 0收藏
文章评论
    发表评论

    个人资料

    • 昵称: rainyday123
    • 等级: 初级设计师
    • 积分: 2440
    • 代码: 0 个
    • 文章: 79 篇
    • 随想: 0 条
    • 访问: 5 次
    • 关注

    人气代码

      标签

      java(2)MVC(7)教程(6)Spring(4)J2EE分布式架构(1)分布式缓存Redis(1)+mybatis(5)+shiro+(2)Activiti(2)+(4)dubbo(1)springmvc(1)mybatis(5)java企业架构(1)(十三)(2)(十四)(2)(十五)(1)kafka集群安装(1)springmvc,(1)阿里云OSS存储(1)Centos下单节点(1)Redis分布式缓存(1)单点登录集成方案,s(1)KafKa+Zook(1)JEESZ-kafk(1)spring,spr(1)mvc,web开发,(1)FastDFS安装、(1)FastDFS分布式(1)Zookeeper集(1)RestFul服务介(1)Kafka入门经典教(1)30分钟学会如何使用(1)springmvc+(1)分布式消息Kafka(1)如何实现redis缓(1)手把手Maven搭建(1)分布式服务:spri(1)Dubbo+Zook(1)分布式架构sprin(1)Springmvc+(1)j2ee分布式架构核(1)DUBBO与ZOOK(1)springmvc整(1)spring和spr(1)J2EE分布式系统环(1)MVC原理(1)Springmvc+(1)环境搭建(一)(1)入门示例讲解(1)【分享】微服务分布式(1)Springmvc+(1)(一)构建dubbo(1)(二)构建dubbo(1)(三)构建dubbo(1)(四)构建sprin(1)(五)构建sprin(1)springmvc+(1)restful(2)redis分布式缓存(1)【分享】微服务分布式(1)Springmvc+(1)(十六)(1)(十七)(1)【企业级框架整合】S(1)springmvc+(1)redis分布式缓存(1)构建springmv(1)构建springmv(1)构建dubbo分布式(1)构建dubbo分布式(1)springmvc+(1)dubbo分布式平台(1)分布式架构sprin(1)分布式服务:spri(1)Dubbo+Zook(1)dubbo分布式平台(1)dubbo分布式平台(1)【分享】微服务分布式(1)Springmvc+(1)Springmvc+(1)j2ee分布式架构核(1)构建springmv(1)构建springmv(1)构建dubbo分布式(1)构建dubbo分布式(1)构建springmv(1)构建dubbo分布式(1)DUBBO与ZOOK(1)构建dubbo分布式(1)SpringBoot(13)企业级(6)(三)(1)B2B2C(1)shop(1)beatlsql(1)(二)Spring(1)Boot配置文件详解(1)整合JPA(1)(五)企业级java(1)b2bc商城系统开源(1)(六)(1)B2B2C多租户电子(1)(四)微服务java(1)分布式环境下自动发现(1)微服务架构(2)SpringClou(1)SpringClou(1)(一)构建第一个Sp(1)(三)SpringB(1)(四)SpringB(1)(五)springb(1)(六)springb(1)企业分布式微服务云S(1)(一)服务的注册与发(1)企业分布式微服务云S(1)(二)服务消费者(r(1)企业分布式微服务云S(1)服务消费者(Feig(1)企业分布式微服务云S(1)(四)断路器(Hys(1)企业分布式微服务云S(1)(五)路由网关(zu(1)

      最新提问

        站长推荐