codecamp

Java 语言定义服务

示例使用 Spring XML 配置方式进行演示。

除此之外,Dubbo Java 还提供了包括注解、API、配置文件、spring boot等多种启动与接入方式,具体可参见配置章节具体描述。

下载示例代码

示例代码在 dubbo-samples 中

  1. 下载源码
$ git clone -b master https://github.com/apache/dubbo-samples.git
  1. 进入示例目录
$ cd dubbo-samples/dubbo-samples-basic

快速运行示例

在 dubbo-samples-basic 目录

  1. 编译 Provider
$ mvn clean package -Pprovider
  1. 运行 Provider
$ java -jar ./target/provider.jar 
  1. 编译 Consumer
$ mvn clean package -Pconsumer
  1. 运行 consumer
$ java -jar ./target/consumer.jar 

详细解释

定义服务接口

DemoService.java

package org.apache.dubbo.samples.basic.api;

public interface DemoService {
    String sayHello(String name);
}

在服务提供方实现接口

DemoServiceImpl.java

public class DemoServiceImpl implements DemoService {
    @Override
    public String sayHello(String name) {
        System.out.println("[" + new SimpleDateFormat("HH:mm:ss").format(new Date()) + "] Hello " + name +
                ", request from consumer: " + RpcContext.getContext().getRemoteAddress());
        return "Hello " + name + ", response from provider: " + RpcContext.getContext().getLocalAddress();
    }
}

用 Spring 配置声明暴露服务

provider.xml:

<bean id="demoService" class="org.apache.dubbo.samples.basic.impl.DemoServiceImpl"/>

<dubbo:service interface="org.apache.dubbo.samples.basic.api.DemoService" ref="demoService"/>

服务消费者

引用远程服务

consumer.xml:

<dubbo:reference id="demoService" check="true" interface="org.apache.dubbo.samples.basic.api.DemoService"/>

加载Spring配置,并调用远程服务

Consumer.java

public static void main(String[] args) {
    ...
    DemoService demoService = (DemoService) context.getBean("demoService");
    String hello = demoService.sayHello("world");
    System.out.println(hello);
}


Dubbo-go 3.0 动态配置
Java 快速开始
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

介绍与示例

应用级服务发现

动态修改运行态配置项

参考手册

配置中心参考手册

元数据参考手册

API 参考手册

Kubernetes 生命周期对齐探针

在线运维命令参考手册

Telnet 命令参考手册

Maven 插件参考手册

性能优化

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }