Idea下Dubbo安装配置以及简单的入门工程

 

1.准备:

Jdk1.6及其以上版本

下载zookeeper 具体安装过程详见zookeeper官网:http://zookeeper.apache.org/

下载tomcat 具体安装过程详见zookeeper官网:http://tomcat.apache.org/

下载dubbox代码 github地址:http://dangdangdotcom.github.io/dubbox

 

 

2.介绍:

     2.1安装zookeeper

下载Zookeeper并且解压,然后配置一下环境变量

D:\zookeeper\zookeeper-3.4.14

%ZOOKEEPER_HOME%\bin;%ZOOKEEPER_HOME%\conf;

启动:zookeeper目录下找到bin目录然后命令行运行:zkservice.cmd就可以了

 

     2.2使用Tomcat运行 Dubbo-admin查看provider和consumer

Dubbo-admin的一个工具而已,使用Tomcat将其展现在网页上,如下图所示:

既然是依赖Tomcat展示,那就要先装Tomcat吧!

2.2.1 安装Tomcat

       下载Tomcat然后解压,

Tomcat目录下的conf文件夹下找到server.xml,把8080随便改成8088什么的(防止端口冲突)

Bin目录下点击tomcat8w.exe,如果报错就在当前目录下使用命令行:.\service.bat install解决Tomcat.wexe无法启动的问题

当你出现这个页面,点击start按钮,没报错说明Tomcat安装完成

2.2.2下面开始安装Dubbo-admin:

下载完成Dubbox并解压后的Dubbo-master目录下,使用powershell将下面的命令行输入:mvn install -Dmaven.test.skip=true或者mvn clean package '-Dmaven.test.skip=true'(一个不行就试另外一个,肯定可以的)

输入完命令之后等待结束之后,如图所示,可以看到多出了一个target文件夹:

Target文件夹下将dubbo-admin-2.8.4.war文件拷贝到Tomcat/webapps/ROOT目录下(将原来的ROOT目录中的所有文件删除),然后解压dubbo-admin-2.8.4.war

       之后启动Tomcat,然后进入浏览器输入:localhost:8088,就会出现下面的界面(密码和用户都是root)

说明Tomcat能够启动dubbo-admin了

 

3.前面这些都只是准备工作,下面开始创建Dubbo工程:

首先我们创建一个父maven工程文件:

接着在下面创建controller,interface,service三个子工程文件

 

3.1我们使用controller作为例子创建一个子工程:

这个子工程是一个web工程,

 

后面的interface和service同理,只是不用勾选2处和3处,其他的都是一样的

这是全部创建完成之后的样子

因为controller是web工程,所以和另外两个不太一样,创建完成后,现在需要创建实现的类了

Dubbo很好的融合了spring,使用spring的配置方式就可以实现了

 

1.我们先写MyInterFace,等工程全部写完就知道为什么要先写MyInterFace了(在Service中对MyInterFace中的抽象方法进行实现)

代码:

package com.start.interf;

public interface
IMyInterFace {
   
public String getName(String name);
}

 

2.现在我们在Service(也就是provider)工程下写代码

 

  1. MyInterFace工程中的抽象方法实现类(在maven工程中只需要当前service工程下的pom.xml中添加一个文件就行,就是图上4的文件,一会就回讲到)

实现IMyInterFace中的抽象方法:

package com.start.service;

import com.start.interf.IMyInterFace;

public class IMyInterFaceImpl implements IMyInterFace {

    public String getName(String name) {
       return "name: " + name;
    }
}

 

 

2.TestServiceTest是作为service工程的启动文件,这样Dubbo-admin就能检测出它的存在

package com.start.service;

import java.io.IOException;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestServiceTest {

    public static void main(String[] args) throws IOException {

        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"application.xml"});
        context.start();
        System.out.println("提供者服务已注册成功");
        for(;;){
            System.in.read();//让此程序一直跑,表示一直提供服务
        }
    }
}

 

3.Application.Xml是正常使用dubbo必须的配置文件

<?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="provider"  />
    <!-- 使用zookeeper注册中心暴露服务地址 -->
    <dubbo:registry address="zookeeper://127.0.0.1:2181" />
    <!-- 用dubbo协议在20880端口暴露服务 -->
    <dubbo:protocol name="dubbo" port="29014" />
    <!-- 声明需要暴露的服务接口 -->
    <dubbo:service interface="com.start.interf.IMyInterFace" ref="testService" />
    <!-- 具体的实现bean -->
    <bean id="testService" class="com.start.service.IMyInterFaceImpl" />
</beans>

4.Pom文件是工程所依赖的所有jar包

<?xml version="1.0" encoding="UTF-8"?>
<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">
    <parent>
        <artifactId>parent</artifactId>
        <groupId>com.parent</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>

    <modelVersion>4.0.0</modelVersion>

    <artifactId>Service</artifactId>

    <properties>

        <spring.version>3.2.8.RELEASE</spring.version>

    </properties>

    <dependencies>
<!—这个dependency就是让service能调用到MyInterface中方法的关键 -->

        <dependency>
            <groupId>com.parent</groupId>
            <artifactId>MyInterface</artifactId>
            <version>1.0-SNAPSHOT</version>
            <scope>compile</scope>
        </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>
        <dependency>
            <groupId>com.github.sgroschupf</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.1</version>
        </dependency>

        <!-- spring相关 -->

        <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-context</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-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-aop</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>

            <groupId>org.springframework</groupId>

            <artifactId>spring-tx</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-context-support</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-jms</artifactId>

            <version>${spring.version}</version>

        </dependency>

        <dependency>

            <groupId>org.apache.activemq</groupId>

            <artifactId>activemq-all</artifactId>

            <version>5.16.0-SNAPSHOT</version>

            <scope>test</scope>

        </dependency>

        <dependency>

            <groupId>org.apache.activemq</groupId>

            <artifactId>activemq-all</artifactId>

            <version>5.16.0-SNAPSHOT</version>

        </dependency>

    </dependencies>



</project>

 

只要依次将这些代码复制进自己创建的对应的工程目录文件下,service就算完成了

 

 

3.开始创建consumer(也就是这里的controller)

文件的目录如图:

3处代表的是application.xml文件所在的文件地址(可以通过选中controller工程下的application.xml文件,然后右键copypath获取)

下面是代码:

1.controller调用service工程

package com.start.controller;

import java.io.IOException;
import com.start.interf.IMyInterFace;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class ConsumerServiceTest {

    public static void main(String[] args) {

        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(

                "file:D:/Dubbo_master/parentDemo/parent/Controller/src/main/webapp/WEB-INF/application.xml");

        context.start();

        IMyInterFace testService = (IMyInterFace) context.getBean("testService");

        System.out.println(testService.getName("wangke"));

        try {

            System.in.read();

        } catch (IOException e) {

            e.printStackTrace();

        }
    }

}

 

 

2.controller(也就是consumer)正常使用Dubbo框架所需要的配置文件

<?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="consumer" />

    <!-- 使用multicast广播注册中心暴露发现服务地址 -->

    <dubbo:registry  protocol="zookeeper" address="zookeeper://127.0.0.1:2181" />

    <!-- 生成远程服务代理,可以和本地bean一样使用demoService -->

    <dubbo:reference id="testService" interface="com.start.interf.IMyInterFace" />

</beans>

 

 

 

 

 

 

最后:

先启动zookeeper,再启动Tomcat(忘了怎么启动再往上翻看一下)

Service工程在工程下的main函数下启动,controller工程在工程下的main函数下启动,然后就能看到,控制台上provider和consumer的输出,在网页dubbo-admin的相关信息:

猜你喜欢

转载自blog.csdn.net/prideofme/article/details/89239111