1. 程式人生 > >微服務模板: 後端Hello World

微服務模板: 後端Hello World

您將學習什麼
學習構建、部署和擴充套件雲就緒Predix微服務,包括雲清單、屬性、測試用例和後端微服務的最佳實踐。本教程將詳細介紹實現REST api的Hello World微服務模板。
我們有兩個github專案,其中一個使用Apache CXF實現JAX-RS 2.0標準Java註釋@GET、@PUT、@POST、@DELETE等。另一個使用Spring RestTemplate。Spring RestTemplate仍使用最初的spring註釋,例如@RequestMapping(method = RequestMethod.DELETE)。
兩個專案均利用Spring的所有其他功能,在我們的REST實現中包括Spring安全篩選器或(其他篩選器)。在將來的教程中當我們介紹如何在REST API中實現安全和授權機制以便在Predix雲中建立安全微服務時,您將會看到這一點非常有用。
每個後端微服務模板專案均共享以下特性
• 測試用例與測試用例框架
• 外部屬性檔案
• REST實現與框架
• 通過一個清單檔案實現雲就緒
• 本機、DEV、QA、Stage、Prod等環境
• 可持續整合
您需要學習什麼

開發工具箱教程(可選)
您需要設定什麼
代理
如果您通過公司的代理伺服器訪問網際網路,請回顧關於設定代理的教程。
需要的工具
如果您不使用開發工具箱,確保用以下工具配置您的開發環境。
CloudFoundry CLI
Git
Java SE開發套件(JDK)
Maven
安裝自動工具
• 在Mac OSX上,在終端視窗中執行以下命令
bash <( curl https://raw.githubusercontent.com/PredixDev/local-setup/master/setup-mac.sh ) –cf –git –jdk –maven
• 在Windows上,在“開始”選單的“附件”中,右擊“命令提示符”並選擇“以管理員身份執行”。然後複製以下命令並執行。
@powershell -Command “(new-object net.webclient).DownloadFile(‘
https://raw.githubusercontent.com/PredixDev/local-setup/master/setup-windows.bat
‘,’%TEMP%\setup-windows.bat’)” && “%TEMP%\setup-windows.bat” /cf /git /jdk /maven
您需要做什麼
只需3步您就可以完成一次Cloud Foundry微服務。1.Git clone ,2. mvn clean package,3. cf push。這樣,讓我們詳細瞭解一下這個微服務模板的功能,您就可以對其進行擴充套件,以便在雲上建立您自己的微服務。
下載專案
1. 如果您使用公司的網際網路代理伺服器,您可能需要設定您的代理環境變數,並在Maven settings.xml檔案中設定代理。檢視我們的設定代理教程瞭解更多資訊。
2. 使用Git克隆專案,然後轉到專案目錄。
$ git clone https://github.com/PredixDev/predix-microservice-cf-jsr.git $ cd predix-microservice-cf-jsr
注:如果您感興趣,我們有另外一個使用Spring Rest模板的專案。我們將會在下面指出細微差別。使用以下命令下載該專案。
$ git clone
https://github.com/PredixDev/predix-microservice-cf-spring.git

  1. 使用Maven,構建並打包程式碼
    $ mvn clean package note: mvn clean install may run integration tests against microservices you may not have set up yet
  1. 將應用程式推送到雲上,用您的名稱替換。該名稱在整個雲上的所有應用程式中必須是唯一的。推送命令的這個版本會覆蓋清單檔案中使用的專案名稱。
    $ cf push -predix-microservice-cf-jsr
  2. 如果要檢視雲中微服務的API:
    Copy the url from the output of the push command then in your browser, enter https:// and then paste the url https://(cloud-url-here)

檢視您在雲中的微服務
您應該在您的瀏覽器中看到“Greetings from Predix Spring Boot CXF!”
圖片描述
如果您選擇上面的Spring rest-template專案,將會看到
圖片描述

載入Eclipse
使用Eclipse更改REST微服務或在本地執行微服務。您可以通過轉到標題為將微服務推送到雲上的部分直接將微服務推送到雲上。
EclipseEclipse STS - Springsource工具套件均支援
在Ecli[連結內容]pse內執行以下操作:
Using the File/Import menu item select Maven/Existing Maven Projects and click Next Browse to the predix-microservice-cf-jsr dir and click Finish.

REST API
作為調節應用程式的一部分,Spring啟動Tomcat web容器,GET、PUT、POST、DELETE REST URL在其中呈現。CXF執行的JSR 339 Spec定義了我們在DefaultService.javaDynamicServiceImpl.java檔案中寫入的註釋,其介面為DynamicService.java。

DefaultService直接在predix-microservice-cf-jsr-cxf-context.xml spring檔案中註冊。

DynamicServiceImpl顯示了一個在自身的程式碼中通過init()方法註冊CXF的不同方法。
@PostConstruct public void init() { this.serviceManagerService.createRestWebService(this, null); }
不論哪種方法,@Path、@GET、@PUT、@POST或@DELETE等REST註釋在您建立REST端點時均可用。在本示例中,當有人向http://localhost:9092/health url傳送一個HTTP GET請求時,將呼叫greetings()方法。
@GET @Path(“health/”) public Response greetings() { }
現在您可以在greetings()方法中完全控制微服務功能的實現。

在本地嘗試
1. 使用Eclipse,啟動應用程式。
Right Click the predix-microservice-cf select Run As / Java Application if prompted, choose Application.java and click OK or in Eclise STS - Right Click predix-microservice-cf project and select Run As / Spring Boot Application
2. 如果要檢查微服務的api,開啟一個瀏覽器並導航至:
http://localhost:9092

檢視結果
1. 您應該在您的瀏覽器中看到“Greetings from Predix Spring Boot CXF!”
圖片描述
如果您選擇上面的spring rest-template專案,將會看到

  1. 檢視API explorer連結中的Swagger檔案。微服務記錄在/api url中。
  2. 檢視/health url中的微服務健康狀態連結。
  3. 使用Github頁面檢視/docs url中的檔案。我們提供在README.md中請求的一個動態index.html。
  4. 檢視Github頁面上的Java Docs。
  5. 所有基於微服務模板的微服務將sources.jar和javadoc.jar部署到artifactory。通過以下操作簡單構建您的應用程式:
     mvn clean source:jar javadoc:jar package
     mvn deploy將這些命令部署到您的maven儲存庫中。請注意,由於’mvn install’將執行整合測試,因此您可能需要設定屬性檔案,以指向您的predix服務例項。
  6. 確保在Eclipse中停止微服務,以便為下一個教程案例釋放埠。

當您啟動微服務時會發生什麼?
微服務模板是一個SpringBoot應用程式,簡單來說,它意味著這個基於REST的微服務的所有標準boiler-plate行為都由Spring來處理。所有行為均以Application.java中啟動Spring上下文的main()方法開始,。以下程式碼生成一個完整的微服務,這樣您就可以快速開始編寫您的應用程式。
public static void main(String[] args) { SpringApplication springApplication = new SpringApplication(Application.class); ApplicationContext ctx = springApplication.run(args);
值得注意的(在檔案的底部定義)是CXFServlet bean,它將所有以”/service”開頭的HTTP請求路由至您的程式碼以及網頁應用程式將要執行的Tomcat web容器。
@Bean public TomcatEmbeddedServletContainerFactory tomcatEmbeddedServletContainerFactory() { return new TomcatEmbeddedServletContainerFactory(); } @Bean public ServletRegistrationBean servletRegistrationBean() { return new ServletRegistrationBean(new CXFServlet(), “/service/*”); }
@ImportResource註釋標示某些xml檔案的位置,以設定更多Bean(通過Spring註冊的Java類)。請注意spring xml檔案的--context.xml的命名規範。我們將”cxf”上下文設定檔案與”scan”上下文檔案分隔開。
@ImportResource( { “classpath*:META-INF/spring/predix-microservice-cf-jsr-cxf-context.xml“, “classpath*:META-INF/spring/predix-microservice-cf-jsr-scan-context.xml” }
啟動後,Spring會配置組成應用程式的所有Bean。“component-scan”標示在哪個java包中尋找更多的Bean。

該類只需要一個註釋(例如@Component)
@Component @Path(“/”) public class DefaultService
Spring將在記憶體中建立該類並將其自動裝配(將其公開)至其他Bean。這就是所謂的依賴注入或控制反轉,當您在需要模擬測試行為而建立測試用例時這是一個非常有用的工具。

您可以使用一個@ComponentScan註釋列出駐留有Bean的所有java包,或者您也可以將所有Spring Bean XML條目放在一個檔案中。有時,最好是建立一個單獨的檔案用於配置掃描位置或屬性檔案的位置。這樣做可以為需要過載特定功能的測試用例提供方便。另外有時候,當一個Spring專案是另一個專案的“依賴”時,掃描資料夾和屬性檔案等特定功能需要被過載。

Action中的微服務模板
多個教程指南中的所有樣本微服務,例如RMD參考應用程式、構建一個基本應用程式和邊緣啟動程式,均利用微服務模板作為一個起始點。這些微服務與UAA、資產、時間序列、分析、Predix機器、ACS和UAA等整合在一起。而且,每個微服務均使用多個實用程式專案或SDK

您學到了什麼
現在,您已擁有一個可用於在Predix雲中建立應用程式的微服務模板。簡單更改REST url並新增您的工業網際網路功能。如果要檢視模板的更多功能,請訪問微服務模板:後端的更多功能 - Java SpringBoot REST

活動概況:為了讓國內開發者第一時間瞭解試用Predix 平臺,及時跟蹤瞭解國際工業網際網路的最新技術,GE數字強調文字創新坊推出了Predix 開發者試用計劃,並將提供Predix 的基礎服務、微服務模組、開發工具等給有興趣的開發者試用,試用期為3個月,這也是開發者進行工業化數字轉型的第一步。需要注意的是該賬號僅作開發評估目的使用,不能應用於任何商業用途,最終註冊結果以郵件為準。並且GE保留對相關帳號申請、管理和使用的解釋權。試用結束後,GE不保留任何開發者資料!
掃描下方二維碼參與報名:
圖片描述