91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Docker下怎么實現java開發

發布時間:2021-12-13 14:39:12 來源:億速云 閱讀:146 作者:iii 欄目:云計算

本篇內容主要講解“Docker下怎么實現java開發”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Docker下怎么實現java開發”吧!

  1. 服務提供者的代碼在目錄dubbo_service_provider下,如下圖紅框所示:

Docker下怎么實現java開發

  1. 服務消費者的代碼在目錄dubbo_service_consumer下,如下圖紅框所示:

Docker下怎么實現java開發

接下來我們逐個分析,實戰開發;

##服務提供者開發## 首先是pom中的依賴關系,除了常用的spring相關的,我們還要加入dubbo和zookeeper的依賴,如下所示:

<!-- dubbo -->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>dubbo</artifactId>
      <version>2.5.3</version>
      <exclusions>
        <exclusion>
          <artifactId>spring</artifactId>
          <groupId>org.springframework</groupId>
        </exclusion>
      </exclusions>
    </dependency>
    <!-- zkclient  -->
    <dependency>
      <groupId>com.github.sgroschupf</groupId>
      <artifactId>zkclient</artifactId>
      <version>0.1</version>
    </dependency>
    <!--  zookeeper -->
    <dependency>
      <groupId>org.apache.zookeeper</groupId>
      <artifactId>zookeeper</artifactId>
      <version>3.3.6</version>
    </dependency>

接下來看代碼,本次實戰提供了兩個服務,分別實現了一下兩個接口:

  1. CalculateService定義add方法,執行最基礎的int型加法服務,實現如下:

public class CalculateServiceImpl implements CalculateService{

    @Override
    public int add(int a, int b) {
        return a + b;
    }
}
  1. PlatformService定義getRpcFrom方法,返回當前環境系統中的換變量TOMCAT_SERVER_ID的值,這個值是docker容器啟動的時候從docker-compose.yml中傳入的;

public class PlatformServiceImpl implements PlatformService {

    @Override
    public String getRpcFrom() {
        return System.getenv().get("TOMCAT_SERVER_ID");
    }
}

以上是兩個演示用的服務實現,邏輯很簡單,現在看如何將服務發布到dubbo環境:

spring-extends.xml是我們自定義的spring配置文件,想發布到dubbo環境的服務都在這里聲明:

<dubbo:application name="dubbo_service_provider" />
	<!-- 本機 偽集群 測試 -->
	<!--
    <dubbo:registry  protocol="zookeeper"  address="192.9.145.19:2181,192.9.145.19:2182,192.9.145.19:2183"  />
    -->
	<dubbo:registry address="zookeeper://zkhost:2181" />
	<dubbo:protocol name="dubbo" port="20880" />
	<dubbo:service interface="com.bolingcavalry.service.CalculateService"
				   ref="calculateService" />
	<dubbo:service interface="com.bolingcavalry.service.PlatformService"
				   ref="platformService" />
	<!-- 和本地bean一樣實現服務 -->
	<bean id="calculateService" class="com.bolingcavalry.service.impl.CalculateServiceImpl" />
	<bean id="platformService" class="com.bolingcavalry.service.impl.PlatformServiceImpl" />

dubbo:application定義了服務歸屬的應用為dubbo_service_provider; dubbo:registry定義了注冊中心地址,本次實戰的zookeeper配置為單機,所以只填寫了一個地址"zookeeper://zkhost:2181",其中zkhost是docker容器的link屬性的別名(連接到zookeeper容器),在dubbo:registry配置的上面有一個被注釋掉的dubbo:registry配置,里面是zookeeper集群時候的連接方式; dubbo:protocol定義采用dubbo協議,使用20880端口; dubbo:service配置了要發布的服務,指定服務接口以及對應的bean;

使用以上配置,在spring環境啟動后注冊中心就會感知到,在pom.xml文件所在目錄下執行<font color="blue">mvn clean package -Dmaven.test.skip=true </font>即可編譯打包,在docker容器發布運行方式請參照《Docker下dubbo開發,三部曲之二:本地環境搭建》;

##服務消費者開發## 服務消費者工程是dubbo_service_consumer,pom中的依賴關系和服務提供者的一樣的,由于要調用dubbo_service_provider提供的服務,所以要把CalculateService和PlatformService這兩個接口引入到工程中,一般是通過jar包方式引入,這里圖個方便,直接將兩個接口的源碼復制到工程中,如下圖:

Docker下怎么實現java開發

再來看看調用服務的代碼,如下圖所示,通過普通的Autowired就能直接使用了,就像普通的spring環境中使用服務一樣簡單:

[外鏈圖片轉存中...(img-uShHNkJu-1568769121752)]

從dubbo環境獲取遠程服務的能力,是通過以下spring配置來實現的:

<!-- 消費方應用名,用于計算依賴關系,不是匹配條件,不要與提供方一樣 -->
	<dubbo:application name="dubbo_service_consumer" />
	<!-- 使用multicast廣播注冊中心暴露發現服務地址 -->
	<!--
	<dubbo:registry  protocol="zookeeper"  address="192.9.145.19:2181,192.9.145.19:2182,192.9.145.19:2183" />
	-->
	<dubbo:registry address="zookeeper://172.28.0.3:2181" />
	<!-- 生成遠程服務代理,可以和本地bean一樣使用demoService -->
	<dubbo:reference id="calculateService" interface="com.bolingcavalry.service.CalculateService" />
	<dubbo:reference id="platformService" interface="com.bolingcavalry.service.PlatformService" />

dubbo:application和dubbo:registry的作用和前面分析的服務提供者的一樣,dubbo:reference是指從dubbo環境獲得遠程的服務,interface指定了服務類型,應用啟動后,用到服務端的時候就會根據注冊中心的信息,遠程調用服務提供者的服務;

到此,相信大家對“Docker下怎么實現java開發”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

天津市| 亚东县| 逊克县| 大足县| 循化| 宁波市| 库伦旗| 昌江| 文登市| 任丘市| 营山县| 舟山市| 西丰县| 兴业县| 平定县| 奉新县| 兴仁县| 涞源县| 宿州市| 登封市| 镇远县| 林周县| 大宁县| 深州市| 凌源市| 鄂温| 礼泉县| 油尖旺区| 安龙县| 竹山县| 饶阳县| 凭祥市| 庆安县| 彩票| 延安市| 桓台县| 浦北县| 建平县| 新龙县| 连城县| 曲水县|