Dubbo入门demo

服务端目录结构


image.png

api

maven
<parent>
<artifactId>dubbo-server</artifactId>
<groupId>com.sjx.dubbo</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.sjx.dubbo.api</groupId>
<artifactId>dubbo-api</artifactId>

</project>


/**
 * @author: sjx
 * @description: 定义接口
 */
public interface ISayHello {
     String sayHello(String msg);
}

provider

maven
<dependencies>
<dependency>
<groupId>com.sjx.dubbo.api</groupId>
<artifactId>dubbo-api</artifactId>
<version>1.0-SNAPSHOT</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.9</version>
</dependency>
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.10</version>
</dependency>
</dependencies>

配置: dubbo-server.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="dubbo-server" owner="sjx"></dubbo:application>
    <!--    注册中心-->
    <dubbo:registry address="zookeeper://ip:端口"></dubbo:registry>
    <!--    发布协议的端口和协议名称-->
    <dubbo:protocol name="dubbo" port="20880"></dubbo:protocol>
    <!--    定义发布的服务-->
    <dubbo:service interface="com.sjx.dubbo.api.ISayHello" ref="sayHelloImpl"></dubbo:service>

    <bean id="sayHelloImpl" class="com.sjx.dubbo.provider.SayHelloImpl"></bean>

</beans>

接口实现

public class SayHelloImpl implements ISayHello {
    public String sayHello(String msg) {
        return "Hello:" + msg;
    }
}
加载配置文件,启动server
public class Bootstrap {
    public static void main(String[] args) throws Exception {
        ClassPathXmlApplicationContext pathXmlApplicationContext =
                new ClassPathXmlApplicationContext("dubbo-server.xml");
        pathXmlApplicationContext.start();
        System.in.read();
    }
}

客户端

maven

<dependencies>
<dependency>
<groupId>com.sjx.dubbo.api</groupId>
<artifactId>dubbo-api</artifactId>
<version>1.0-SNAPSHOT</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.9</version>
</dependency>
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.10</version>
</dependency>
</dependencies>

配置:dubbo-client.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="dubbo-client" owner="sjx"></dubbo:application>
    <!--    注册中心-->
    <dubbo:registry address="zookeeper://ip:端口"></dubbo:registry>

    <!--    server 端对外提供的服务地址-->
    <dubbo:reference id="iSayHello" interface="com.sjx.dubbo.api.ISayHello"></dubbo:reference>

</beans>

启动客户端

public class DubboClient {
    public static void main(String[] args) {
        ClassPathXmlApplicationContext pathXmlApplicationContext =
                new ClassPathXmlApplicationContext("dubbo-client.xml");
        //得到ISayHello 的远程代理对象
        ISayHello iSayHello = (ISayHello) pathXmlApplicationContext.getBean("iSayHello");
        System.out.println(iSayHello.sayHello("dubbo"));
    }
}

结果

image.png
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容