博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringMVC和Dubbo的整合
阅读量:6866 次
发布时间:2019-06-26

本文共 11203 字,大约阅读时间需要 37 分钟。

hot3.png

源码:  

一.准备maven项目

mvn archetype:generate -DgroupId=com.lsf.app -DartifactId=coder-center -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false       创建coder-center项目,服务的具体实现

mvn archetype:generate -DgroupId=com.lsf.app -DartifactId=coder-center-api -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false  创建coder-center-api项目,暴露服务

mvn archetype:generate -DgroupId=cn.lsf.app -DartifactId=appserver -DarchetypeArtifactId=maven-archetype-webapp -DinteractivMode=false   创建appserver  web项目,消费各服务

注释:

mvn archetype:generate      固定格式

  -DgroupId         组织标识(包名)

  -DartifactId        项目名称

  -DarchetypeArtifactId    特ArchetypeId,maven-archetype-quickstart,创建一个Java Project;maven-archetype-webapp,创建一个Web Project

  -DinteractiveMode      是否使用交互模式

然后把项目导入Eclipse中,项目结构图如下

104236_oJi6_1400088.png

二.服务提供者

1.在coder-center-api中定义接口,用来暴露出去

package com.shengfeng.user.service;import com.shengfeng.user.bean.UserBean;public interface UserService {   long addUser();   UserBean getUserByUserId();}

2.在coder-center-api中定义bean,用来暴露出去

package com.shengfeng.user.bean;import java.io.Serializable;public class UserBean implements Serializable{    private static final long serialVersionUID = -5621716534400078000L;    private long id ;    private String  username;//用户名    private String password;//密码    private String level;//等级    private int sex;//性别    private String mobilephone;//手机号    private String img;// 头像    public long getId() {        return id;    }    public void setId(long id) {        this.id = id;    }    public String getUsername() {        return username;    }    public void setUsername(String username) {        this.username = username;    }    public String getPassword() {        return password;    }    public void setPassword(String password) {        this.password = password;    }    public String getLevel() {        return level;    }    public void setLevel(String level) {        this.level = level;    }    public int getSex() {        return sex;    }    public void setSex(int sex) {        this.sex = sex;    }    public String getMobilephone() {        return mobilephone;    }    public void setMobilephone(String mobilephone) {        this.mobilephone = mobilephone;    }    public String getImg() {        return img;    }    public void setImg(String img) {        this.img = img;    }}

3.在coder-center中的pom.xml添加依赖,把需要用的jar引进来

    
4.0.0
    
com.shengfeng
    
coder-center
    
jar
    
1.0-SNAPSHOT
    
coder-center
    
http://maven.apache.org
    
        
        
3.2.11.RELEASE
    
    
        
        
            
com.shengfeng
            
coder-center-api
            
1.0-SNAPSHOT
        
        
        
        
            
org.springframework
            
spring-core
            
${spring.version}
        
        
            
org.springframework
            
spring-web
            
${spring.version}
        
        
            
org.springframework
            
spring-oxm
            
${spring.version}
        
        
            
org.springframework
            
spring-tx
            
${spring.version}
        
        
            
org.springframework
            
spring-jdbc
            
${spring.version}
        
        
            
org.springframework
            
spring-webmvc
            
${spring.version}
        
        
            
org.springframework
            
spring-aop
            
${spring.version}
        
        
            
org.springframework
            
spring-aspects
            
${spring.version}
        
        
            
org.springframework
            
spring-context-support
            
${spring.version}
        
        
            
org.springframework
            
spring-test
            
${spring.version}
            
test
        
        
        
        
            
com.alibaba
            
dubbo
            
2.4.9
        
        
        
            
org.apache.zookeeper
            
zookeeper
            
3.4.6
            
pom
        
        
            
com.101tec
            
zkclient
            
0.4
        
    

4.在coder-center中实现coder-center-api的接口

package com.shengfeng.user.service.impl;import com.shengfeng.user.bean.UserBean;import com.shengfeng.user.service.UserService;/** *  UserService impl  * */public class UserServiceImpl implements UserService {    public long addUser() {        return 0;    }    public UserBean getUserByUserId() {        UserBean userBean = new UserBean();        userBean.setUsername("shengfeng");        return userBean;    }}

5.在coder-center中将实现的服务暴露出来,provider.xml配置文件如下

    
    
    
    
     
    
    
    
    

6.服务启动类

package com.shengfeng.user.main;import org.springframework.context.support.ClassPathXmlApplicationContext;public class Provider {    public static  ClassPathXmlApplicationContext context;    public static void main(String[] args) {        context = new ClassPathXmlApplicationContext(new String[] { "provider.xml" });        context.start();        System.out.println("coder-center 启动成功");        while (true) {            try {                Thread.sleep(1000);            } catch (InterruptedException e) {                e.printStackTrace();            }        }    }}

7.启动main方法之后,去dubbo-admin管理平台上看是否已经将提供的服务暴露到上面

104635_ActF_1400088.png

查看提供者

104754_s4yN_1400088.png

这样就完成了一半,还剩下一个消费者

三.服务消费者

1.在appserver项目中先在pom.xml文件中引入相应的jar包

    
4.0.0
    
com.shengfeng
    
appserver
    
war
    
1.0
    
appserver Maven Webapp
    
http://maven.apache.org
    
        
appserver
    
    
        
        
3.2.11.RELEASE
    
    
        
        
            
com.shengfeng
            
coder-center-api
            
1.0-SNAPSHOT
        
        
        
        
            
org.springframework
            
spring-core
            
${spring.version}
        
        
            
org.springframework
            
spring-web
            
${spring.version}
        
        
            
org.springframework
            
spring-oxm
            
${spring.version}
        
        
            
org.springframework
            
spring-tx
            
${spring.version}
        
        
            
org.springframework
            
spring-jdbc
            
${spring.version}
        
        
            
org.springframework
            
spring-webmvc
            
${spring.version}
        
        
            
org.springframework
            
spring-aop
            
${spring.version}
        
        
            
org.springframework
            
spring-aspects
            
${spring.version}
        
        
            
org.springframework
            
spring-context-support
            
${spring.version}
        
        
            
org.springframework
            
spring-test
            
${spring.version}
            
test
        
        
        
        
            
com.alibaba
            
dubbo
            
2.4.9
        
        
        
            
org.apache.zookeeper
            
zookeeper
            
3.4.6
            
pom
        
        
            
com.101tec
            
zkclient
            
0.4
        
    

2.消费服务的类UserAction

package com.shengfeng.user.action;import java.io.IOException;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.shengfeng.user.service.UserService;public class UserAction {    public static void main(String[] args) throws IOException {        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(                new String[] { "consumer.xml" });        context.start();        System.out.println("consumer启动成功");        UserService userService = (UserService) context.getBean("userService");        System.out.println("username:" + userService.getUserByUserId().getUsername());        while (true) {            try {                Thread.sleep(1000);            } catch (InterruptedException e) {                e.printStackTrace();            }        }    }}

这里需要说一下,不要消费完服务就关闭,这样的话它都到不了注册中心那里,也就是dubbo-admin那里的消费者一直会显示不出来,这里的解决办法是让它睡1秒

3.消费服务的配置文件consumer.xml

     
    
    
    
    
    

4.启动UserAction的main方法,然后去dubbo-admin管理平台上去看是否有消费者的相应信息

105306_pcvF_1400088.png

查看消费者

105333_qYs3_1400088.png

然后可以在eclipse控制上看到可以消费到 提供者提供的服务

105401_J47t_1400088.png

比较简单,不过可以试试手~

转载于:https://my.oschina.net/lsf930709/blog/544427

你可能感兴趣的文章
剑指offer——面试题18:删除链表的节点
查看>>
SubLime Text 3 配置SublimeREPL来交互式调试程序
查看>>
C++ cin相关函数总结
查看>>
2018/11/11蓝桥杯Java培训
查看>>
2018/12/08 L1-042 日期格式化 Java
查看>>
java输出数组中出现的次数最多的那个及次数
查看>>
Unicode和UTF-8的关系
查看>>
入门HTML的回顾,小总结
查看>>
[Leetcode]100. Same Tree -David_Lin
查看>>
阿里云推送服务
查看>>
工作中遇到的懒加载问题
查看>>
lbp纹理特征
查看>>
elastic的gc相关
查看>>
perl学习(3)正则表达式
查看>>
案例分析:免费的维护服务
查看>>
HDU_2152 Fruit(生成函数)
查看>>
css关于定位那些事情
查看>>
WCF IIS上部署服务
查看>>
微软职位内部推荐-Software Development Engineering II
查看>>
Senparc.Weixin.MP SDK 微信公众平台开发教程(五):使用Senparc.Weixin.MP SDK
查看>>