zoukankan      html  css  js  c++  java
  • Dubbo_创建Dubbo服务并在ZooKeeper注册,然后通过Jar包执行



    一、安装ZooKeeper(略)

    二、创建Dubbo服务

     1、DemoService

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    package dub.service.demo;
      
    import java.net.InetAddress;
    import java.net.UnknownHostException;
      
    /**
     * Created by JamesC on 16-10-8.
     */
    public class DemoService implements IDemoService {
      
        public String sayHello(String name) {
            String msg = "欢迎您:" + name + " IP地址:" + getIP();
            System.out.println(msg);
            return msg;
        }
      
      
        private String getIP() {
            InetAddress addr = null;
            try {
                addr = InetAddress.getLocalHost();
            } catch (UnknownHostException e) {
                e.printStackTrace();
            }
            String ip = addr.getHostAddress();//获得本机IP
            String address = addr.getHostName();//获得本机名称
            return ip;
        }
    }


    2、dubbo-provider.xml

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    <?xml version="1.0" encoding="UTF-8"?>
           xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
           xmlns:context="http://www.springframework.org/schema/context"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
     
     
        <context:annotation-config/>
     
        <!-- 配置要扫描的包 -->
        <context:component-scan base-package="dub.service.demo"/>
     
        <!-- 提供方应用信息,用于计算依赖关系 -->
        <dubbo:application name="dubbo-service-demo"/>
     
        <!-- 使用zookeeper注册中心暴露服务地址 -->
        <dubbo:registry protocol="zookeeper" address="zookeeper://192.168.146.130:2181"/>
     
        <!-- 用dubbo协议在20880端口暴露服务 -->
        <dubbo:protocol name="dubbo" port="20880"/>
     
        <!-- 用户服务接口 -->
        <dubbo:service interface="dub.service.demo.IDemoService" ref="demoService" />
     
        <bean id="demoService" class="dub.service.demo.DemoService"/>
     
    </beans>

    3、pom.xml

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
        <modelVersion>4.0.0</modelVersion>
     
        <groupId>dub-service-demo</groupId>
        <artifactId>dub-service-demo</artifactId>
        <version>1.0-SNAPSHOT</version>
        <packaging>jar</packaging>
     
        <name>dub-service-demo</name>
        <url>http://maven.apache.org</url>
     
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        </properties>
     
        <distributionManagement>
            <repository>
                <id>nexus-releases</id>
                <name>Nexus Release Repository</name>
            </repository>
            <snapshotRepository>
                <id>nexus-snapshots</id>
                <name>Nexus Snapshot Repository</name>
            </snapshotRepository>
        </distributionManagement>
     
        <dependencies>
     
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-beans</artifactId>
                <version>4.0.6.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-core</artifactId>
                <version>4.0.6.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>4.0.6.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context-support</artifactId>
                <version>4.0.6.RELEASE</version>
            </dependency>
     
     
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>dubbo</artifactId>
                <version>2.5.3</version>
            </dependency>
     
            <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>
     
     
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
                <version>1.7.5</version>
            </dependency>
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>1.2.17</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-log4j12</artifactId>
                <version>1.7.5</version>
            </dependency>
        </dependencies>
     
        <build>
            <!--打包生成的jar包文件名-->
            <finalName>dub-service-demo</finalName>
     
            <resources>
                <resource>
                    <targetPath>${project.build.directory}/classes</targetPath>
                    <directory>src/main/resources</directory>
                    <filtering>true</filtering>
                    <includes>
                        <!--<include>**/*.xml</include>-->
                        <!--<include>**/*.properties</include>-->
                        <include>**/*.xml</include>
                    </includes>
                </resource>
                <!-- 结合com.alibaba.dubbo.container.Main -->
                <resource>
                    <!--配置文件拷贝的对象目录-->
                    <targetPath>${project.build.directory}/classes/META-INF/spring</targetPath>
                    <!--配置文件必须放在spring文件夹下,否则dubbo即使显示启动成功,实际上也没有启动成功-->
                    <directory>src/main/resources/spring</directory>
                    <filtering>true</filtering>
                    <includes>
                        <!--  <include>spring-context.xml</include>-->
                        <include>**/*.xml</include>
                    </includes>
                </resource>
            </resources>
     
            <plugins>
                <!-- 打包jar文件时,配置manifest文件,加入lib包的jar依赖 -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-jar-plugin</artifactId>
                    <configuration>
                        <classesDirectory>target/classes/</classesDirectory>
                        <archive>
                            <manifest>
                                <mainClass>com.alibaba.dubbo.container.Main</mainClass>
                                <!-- 打包时 MANIFEST.MF文件不记录的时间戳版本 -->
                                <useUniqueVersions>false</useUniqueVersions>
                                <addClasspath>true</addClasspath>
     
                                <classpathPrefix>lib/</classpathPrefix>
                            </manifest>
                            <manifestEntries>
                                <Class-Path>.</Class-Path>
                            </manifestEntries>
                        </archive>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-dependency-plugin</artifactId>
                    <executions>
                        <execution>
                            <!--打包阶段拷贝依赖文件-->
                            <id>copy-dependencies</id>
                            <phase>package</phase>
                            <goals>
                                <goal>copy-dependencies</goal>
                            </goals>
                            <configuration>
                                <type>jar</type>
                                <includeTypes>jar</includeTypes>
                               <!-- <useUniqueVersions>false</useUniqueVersions>-->
                                <!--打包依赖文件的输出路径-->
                                <outputDirectory>
                                    ${project.build.directory}/lib
                                </outputDirectory>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
     
        </build>
     
    </project>


    三、打包Dubbo服务

    1、使用maven进行打包,先运行clean  再运行install


    四、启动Dubbo服务

    1、把jar文件和lib文件夹拷贝到C盘DemoServiceJars目录下


    2、命令行定位到C盘DemoServiceJars目录下,执行java -jar dub-service-demo.jar


    3、ZooKeeper检测到该服务



    4、Linux启动Dubbo的方式也是执行:java -jar dub-service-demo.jar&


    五、注意事项

    1、配置文件dubbo-provider.xml必须放在resource-->spring文件夹下,否则dubbo就算显示启动成功, 实际上也没有启动

    2、源码请从群中下载







  • 相关阅读:
    旧键盘 (20)
    人口普查(20)
    打印沙漏(20)
    程序运行时间(15)
    反转链表 (25)
    科学计数法 (20)
    组个最小数 (20)
    python yield使用
    python如何优雅判断类型
    python中如何优雅使用import
  • 原文地址:https://www.cnblogs.com/gossip/p/5945848.html
Copyright © 2011-2022 走看看