日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Google App Engine JAX-RS REST服务

發(fā)布時(shí)間:2023/12/3 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Google App Engine JAX-RS REST服务 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
在本文中,您將學(xué)習(xí)如何使用JAX-RS參考實(shí)現(xiàn)(Jersey)創(chuàng)建REST服務(wù)并將其部署在Google AppEngine上。
先決條件 對(duì)于本教程,您將需要:
  • Google AppEngine帳戶
  • Eclipse Galileo(3.5.x)
  • 適用于Java的Google App Engine SDK
    • 按照此處所述安裝Eclipse的Google插件(檢查您是否正在使用GAE Java SDK的1.3.1版,如果未下載,請(qǐng)配置該插件以使用它)
    • 在本地?fù)碛蠥ppEngine文檔也很有用,您可以從此處下載。
  • JAX-RS參考實(shí)現(xiàn),請(qǐng)確保您采用Jersey 1.1.5版本。 您可以從這里下載。
    • 將文件解壓縮到我們稱為$ JERSEY_HOME的目錄中
  • JAXB 2.2實(shí)現(xiàn)可簡化XML的編組/解組,并簡化JSON支持。 從這里下載
    • 使用java -jar JAXB2_20091104.jar命令安裝它。 JAXB的安裝目錄將稱為$ JAXB_HOME

創(chuàng)建新的應(yīng)用程序

要在Eclipse中創(chuàng)建新的App Engine項(xiàng)目,請(qǐng)執(zhí)行以下操作:

  • 單擊“新的Web應(yīng)用程序項(xiàng)目”按鈕 在工具欄中。 也可以使用菜單文件> Web應(yīng)用程序項(xiàng)目來執(zhí)行此操作
  • 將打開“創(chuàng)建Web應(yīng)用程序項(xiàng)目”向?qū)?#xff1a;
    • 項(xiàng)目名稱:EmployeeService
    • 打包:com.grallandco.employee.service
    • 取消選中“使用Google Web Toolkit”
    • 檢查您使用的SDK版本是否為“ App Engine 1.3.0”; 如果沒有配置項(xiàng)目以使用它。
    • 該屏幕應(yīng)類似于以下屏幕:
    • 點(diǎn)擊完成
    • 該項(xiàng)目應(yīng)類似于以下屏幕:

    運(yùn)行應(yīng)用程序

    隨Eclipse插件一起安裝的App Egine SDK包含一個(gè)Web服務(wù)器(基于Jetty),可用于測試和調(diào)試。 要測試是否已正確創(chuàng)建應(yīng)用程序,請(qǐng)選擇菜單運(yùn)行>運(yùn)行方式> Web應(yīng)用程序。 我大部分時(shí)間都使用調(diào)試命令運(yùn)行>調(diào)試> Web應(yīng)用程序運(yùn)行服務(wù)器。 在調(diào)試模式下,您可以更改源代碼,并且無需重新啟動(dòng)服務(wù)器即可進(jìn)行測試。

    Web服務(wù)器自動(dòng)啟動(dòng),您應(yīng)該在Eclipse控制臺(tái)中看到以下消息

    服務(wù)器正在http:// localhost:8080 /上運(yùn)行

    您可以訪問該應(yīng)用程序以及使用以下URL創(chuàng)建的樣本servlet:http:// localhost:8080 / employeeservice

    要停止服務(wù)器,請(qǐng)單擊終止按鈕 在Eclipse控制臺(tái)中。

    在應(yīng)用程序中配置REST支持

    為了能夠在您的應(yīng)用程序中創(chuàng)建和運(yùn)行REST服務(wù),您需要:

    • 在您的項(xiàng)目和應(yīng)用程序中添加JAX-RS,JAXB Jars
    • 配置Web應(yīng)用程序(web.xml)以處理REST請(qǐng)求

    將JAX-RS,JAXB添加到您的項(xiàng)目

  • 右鍵單擊項(xiàng)目,然后選擇菜單項(xiàng)Build Path> Configure Build Path…。
  • 單擊添加外部JAR按鈕
  • 選擇$ JERSEY_HOME / lib和$ JAXB_HOME / lib文件夾中的所有JAR。 您可以更好地了解和重用所有這些JAR創(chuàng)建用戶庫
  • 您還需要復(fù)制應(yīng)用程序的web-inf / lib目錄中的JAR,此步驟是強(qiáng)制性的,以確保將JAR部署到App Engine時(shí)包含在應(yīng)用程序中。
    注意:我不喜歡此步驟。 我希望通過配置構(gòu)建路徑來執(zhí)行此操作,以便在執(zhí)行/部署應(yīng)用程序時(shí)將JAR自動(dòng)添加到WEB-INF / lib目錄中。 不幸的是,我沒有找到方法,所以,如果您知道它,請(qǐng)隨時(shí)發(fā)表評(píng)論,我將更新本文。
  • 配置Web應(yīng)用程序

    在此步驟中,您將注冊(cè)一個(gè)新的URI以處理REST請(qǐng)求。 為此,您需要注冊(cè)一個(gè)使用Jersey API的新servlet,并將其配置為特定的URI(例如:/ ressources和/或/ rest),并配置包含REST實(shí)現(xiàn)類的Java軟件包。 因此,您需要使用以下條目修改應(yīng)用程序的web.xml:

    <servlet><servlet-name>Jersey Web Application</servlet-name><servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class><init-param><param-name>com.sun.jersey.config.property.packages</param-name><param-value>com.grallandco.employee.service.rest.impl</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>Jersey Web Application</servlet-name><url-pattern>/resources/*</url-pattern></servlet-mapping><servlet-mapping><servlet-name>Jersey Web Application</servlet-name><url-pattern>/rest/*</url-pattern></servlet-mapping> 該servlet將響應(yīng)/ resources /和/ rest / URL。 澤西使用配置參數(shù)com.sun.jersey.config.property.packages列出REST服務(wù)實(shí)現(xiàn)所在的軟件包。請(qǐng)注意,您可以根據(jù)需要放置任意數(shù)量的軟件包,只需分隔軟件包名稱即可。由一個(gè);

    創(chuàng)建一個(gè)簡單的REST服務(wù)以測試環(huán)境

    現(xiàn)在,該項(xiàng)目已準(zhǔn)備好包含REST服務(wù)。 現(xiàn)在是時(shí)候創(chuàng)建一個(gè)了。例如,創(chuàng)建類com.grallandco.employee.service.rest.impl.HelloWorldResource,請(qǐng)確保使用在web.xml中為Jersey servlet配置的包名稱。我們?cè)谏弦徊街羞M(jìn)行的配置是com.grallandco.employee.service.rest.impl

    這里是帶有JAX-RS批注的示例類:

    package com.grallandco.employee.service.rest.impl; import javax.ws.rs.Path; import javax.ws.rs.GET; import javax.ws.rs.Produces; @Path("/hr/") public class EmployeeResource {@GET@Produces("text/plain")@Path("/employee") public String getEmployee() {return "Hello World!";} }

    您應(yīng)該能夠?qū)ζ溥M(jìn)行測試,停止服務(wù)器并再次運(yùn)行它,然后在瀏覽器中輸入以下URL:
    http:// localhost:8080 / resources / hr / employee
    要么 http:// localhost:8080 / rest / hr / employee

    將應(yīng)用程序部署到Google App Engine

    在部署應(yīng)用程序之前,您需要使用Administartion控制臺(tái)在Google App Engine中注冊(cè)新應(yīng)用程序,請(qǐng)參閱此處的文檔。 在我的示例中,我使用“ tugdual”作為應(yīng)用程序ID。

    現(xiàn)在,您可以通過單擊Eclipse工具欄中的“部署App Engine項(xiàng)目”按鈕輕松地將應(yīng)用程序部署到Google App Engine。

    為了能夠?qū)⒛膽?yīng)用程序部署到Google App Engine,您需要檢查您的應(yīng)用程序是否可以注冊(cè),該應(yīng)用程序ID存儲(chǔ)在WEB-INF / lib / appengine-web.xml中。

    <?xml version="1.0" encoding="utf-8"?> <appengine-web-app xmlns="http://appengine.google.com/ns/1.0"><application>[your-application-id]</application> <version>1</version> <!-- Configure java.util.logging --><system-properties><property name="java.util.logging.config.file" value="WEB-INF/logging.properties"/></system-properties> </appengine-web-app>

    App Engine部署按鈕會(huì)提示您輸入多個(gè)信息:用戶名(您的Google帳戶)和密碼。

    部署完成后,您可以使用以下URL訪問您的應(yīng)用程序:
    http:// [your-application-id] .appspot.com / resources / hr / employee
    要么 http:// [your-application-id] .appspot.com / rest / hr / employee

    將XML和JSON支持到服務(wù)

    現(xiàn)在,讓我們添加新的方法來使用服務(wù)來操作“ Employee”對(duì)象,并且數(shù)據(jù)格式應(yīng)基于JSON和XML。 這是JAXB有用的地方,因?yàn)樗梢暂p松地以XML(顯然)和JSON轉(zhuǎn)換marshall / unmarshall Java對(duì)象,這很酷!

    創(chuàng)建員工類

    從創(chuàng)建一個(gè)用于處理Employee數(shù)據(jù)的新類開始,這是一個(gè)非常簡單的Java類,可能類似于以下代碼:

    package com.grallandco.employee.service.model; import java.util.Date;public class Employee {private String firstName;private String lastName;private Date hireDate;private String email; public Employee(String firstName, String lastName, Date hireDate, String email) {this.firstName = firstName;this.lastName = lastName;this.hireDate = hireDate;this.email = email;}public Employee() {}public String getFirstName() {return firstName;}public void setFirstName(String firstName) {this.firstName = firstName;}public String getLastName() {return lastName;}public void setLastName(String lastName) {this.lastName = lastName;}public Date getHireDate() {return hireDate;}public void setHireDate(Date hireDate) {this.hireDate = hireDate;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}public String toString() {StringBuffer sb = new StringBuffer();sb.append("First: ").append(getFirstName());sb.append(" - Last: ").append(getLastName());sb.append(" - Date: ").append(getHireDate());sb.append(" - Email: ").append(getEmail());return sb.toString();} }

    當(dāng)使用某個(gè)持久層實(shí)現(xiàn)“真實(shí)”應(yīng)用程序時(shí),此POJO是作為JDO / JPA實(shí)體的一個(gè)。

    為您的實(shí)體創(chuàng)建一個(gè)Converter類

    我通常將所有轉(zhuǎn)換封裝在某個(gè)轉(zhuǎn)換器類中,就像這樣,我沒有將業(yè)務(wù)類直接耦合到序列化機(jī)制。 (因此,我對(duì)類和類列表進(jìn)行了此操作)。 因此,我們不要將JAXB批注添加到Employee類本身,而是創(chuàng)建一個(gè)EmployeeConverter類,該類負(fù)責(zé)轉(zhuǎn)換并由REST服務(wù)使用。

    package com.grallandco.employee.service.converter;import java.util.Date; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; import com.grallandco.employee.service.model.Employee;@XmlRootElement(name = "employee") public class EmployeeConverter {private Employee entity = null;public EmployeeConverter() {entity = new Employee();}public EmployeeConverter(Employee entity) {this.entity = entity;}@XmlElementpublic String getFirstName() {return entity.getFirstName();}@XmlElementpublic String getLastName() {return entity.getLastName();}@XmlElementpublic Date getHireDate() {return entity.getHireDate();}@XmlElementpublic String getEmail() {return entity.getEmail();}public Employee getEmployee() {return entity;}public void setFirstName(String firstName) {entity.setFirstName(firstName);}public void setHireDate(Date hireDate) {entity.setHireDate(hireDate);}public void setLastName(String email) {entity.setEmail(email);}public void setEmail(String lastName) {entity.setLastName(lastName);} }

    現(xiàn)在,您可以更新服務(wù),以使用此實(shí)用程序/轉(zhuǎn)換器類根據(jù)請(qǐng)求的內(nèi)容類型返回XML或JSON對(duì)象。

    將JSON和XML支持添加到REST服務(wù)

    您需要更改EmployeeRessource類,更改簽名并添加getEmployee()方法的新注釋。
    您要添加的注釋:

    • @Produces({“ application / xml”,“ application / json”}):指示服務(wù)將產(chǎn)生哪種類型的內(nèi)容。 基于請(qǐng)求的類型。
    • @Path(“ / employee / {employeeEmail} /”):更改Path以指示Path參數(shù),例如,URL可以接受URI中的電子郵件-不是最佳示例,但是您明白了……
    • public EmployeeConverter getEmployee(@PathParam(“ employeeEmail”)字符串電子郵件):更改方法返回的類型,并采用與@Path批注中定義的Path參數(shù)相匹配的參數(shù)String。

    這里是完整的類代碼:

    package com.grallandco.employee.service.rest.impl;import javax.ws.rs.Path; import javax.ws.rs.GET; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import com.grallandco.employee.service.converter.EmployeeConverter; import com.grallandco.employee.service.model.Employee;@Path("/hr/") public class EmployeeRessource {@GET@Produces({"application/xml", "application/json"})@Path("/employee/{employeeEmail}/") public EmployeeConverter getEmployee( @PathParam ("employeeEmail") String email) {//dummy codeEmployee emp = new Employee();emp.setEmail(email);emp.setFirstName("John");emp.setLastName("Doe");EmployeeConverter converter = new EmployeeConverter(emp);return converter;} }

    測試服務(wù)

    您現(xiàn)在可以在本地運(yùn)行服務(wù)器并測試服務(wù)
    http:// localhost:8080/resources/hr/employee/tug@grallandco.com
    這將返回一個(gè)XML文檔。 如果要測試JSON調(diào)用,則有多種選擇:

    • 使用以下命令
    tgrall$ curl -H "Accept: application/json" http://localhost:8080/resources/hr/employee/tug@grallandco.com {"email":"tug@grallandco.com","firstName":"John","lastName":"Doe"}
    • 我使用的是HTTP客戶端,它允許您完全配置/設(shè)置HTTP請(qǐng)求,而我使用的是Poster Firefox插件
    • 在應(yīng)用程序中使用一些Javascript代碼

    您可以在Google App Engine上對(duì)已部署的應(yīng)用程序重復(fù)測試。

    結(jié)論

    在本文中,您學(xué)習(xí)了如何在Google App Engine上創(chuàng)建和部署新的REST服務(wù)。 該服務(wù)是通過“ JAX-RS參考實(shí)施澤西”項(xiàng)目創(chuàng)建的。 在下一篇文章中,您將學(xué)習(xí)如何在Google App Engine上添加持久性和創(chuàng)建CRUD Rest服務(wù)。

    參考: Tug博客博客上的JCG合作伙伴 Tugdual Grall在Google App Engine上創(chuàng)建和部署JAX-RS REST服務(wù) 。


    翻譯自: https://www.javacodegeeks.com/2012/05/google-app-engine-jax-rs-rest-service.html

    總結(jié)

    以上是生活随笔為你收集整理的Google App Engine JAX-RS REST服务的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。