摘要:當不存在子類,也不存在子類時,規(guī)范中定義,在這種情況下,為服務動態(tài)生成一個名為的實例,并自動探測匹配資源。其中是中的基類,它繼承于情況二當不存在子類,但是存在子類時。以上就是規(guī)范中定義的四種服務的方式。
最近在學習 jersey 框架。他是 目前比較流行的 基于 JAX-RS 2.0 規(guī)范實現(xiàn)的 RESTful 框架。
我是跟著 《Java RESTful Web Service 實戰(zhàn)》 一書 在學習。書中有些知識點,不太常用,但是比較重要,特寫下次筆記已備忘。
概要如下圖:
情況一:當不存在 Application 子類,也不存在 Servlet 子類時
情況二:當不存在 Application 子類,但是存在 Servlet 子類時
情況三:當存在 Application 子類,而且 Application 子類被 ApplicationPath 注解所修飾。
情況四:當存在 Application 子類,但是沒有被ApplicationPath 注解所修飾。
此圖來自于《Java RESTful Web Service 實戰(zhàn)》
情況一
以下xml代碼是 servlet 容器的 web.xml 中的 去除 的子元素。
當不存在 Application 子類,也不存在 Servlet 子類時,規(guī)范中定義,在這種情況下,為REST服務動態(tài)生成一個名為 javax.ws.rs.core.Application 的 Servlet 實例,并自動探測匹配資源。與此同時,需要根據(jù)Servlet的不同版本,在web.xml定義REST請求處理的Servlet為這個動態(tài)生成的Servlet.
xmljavax.ws.rs.core.Application javax.ws.rs.core.Application /webapi/*
xmlJersey Web Application org.glassfish.jersey.servlet.ServletContainer jersey.config.server.provider.packages com.example 1 Jersey Web Application /webapi/*
通過 Servlet2.x 中 web.xml 的配置項,可以看出,jersey-container-servlet-core 不具備自動掃描資源類的功能。
其中 org.glassfish.jersey.servlet.ServletContainer 是 jersey 中 Servlet的基類,它繼承于 HttpServlet
情況二
當不存在 Application 子類,但是存在 Servlet 子類時。
java// Servlet3.x 中 一個 Servlet 定義 @WebServlet( initParam = @WenInitParam(name = "jersey.config.server.provider.packages", value="com.example"), urlPatterns="/webapi/*", loadOnStratup = 1 ) public class AirServlet extends ServletContainer { }
以上是 基于 Servlet3.x 的 REST 服務。在 Servlet3.x 的場景下,可以省略 web.xml 文件。但是 Servlet 項目中如果沒有 web.xml 的話,在使用 maven 發(fā)布war 的時候會報錯,所以需要設置 maven-war-plugins 。
xmlorg.apache.maven.plugins maven-war-plugin 2.3 false
情況三:
當存在 Application 子類,而且 Application 子類被ApplicationPath注解所修飾。
java@ApplicationPath("/webapi/*") public class AirApplication extends Application { @Override public Set> getClasses() { final Set > classes = new HashSet >(); classes.add(BookResource.class); return classes; } }
也可以使用,packages 方法 會掃描所有的資源類。
java@ApplicationPath("/webapi/*") public class AirResourceConfig extends ResourceConfig { public AirResourceConfig() { packages("com.example"); } }
情況四:
當存在 Application 子類,但是沒有被 ApplicationPath 注解所修飾
我們需要先 定義一個 Application 子類,已完成 Servlet 的配置。
javapublic class AirApplication extends Application { @Override public Set> getClasses() { final Set > classes = new HashSet >(); classes.add(BookResource.class); return classes; } }
xmlJersey Web Application org.glassfish.jersey.servlet.ServletContainer javax.ws.rs.Application com.example.AirApplication 1 Jersey Web Application /webapi/*
以上配置,可以生效與 Servlet2.x 版本中。我們可以 利用 Servlet3.x 的特性來簡化這些設置。
xmlcom.example.AirApplication com.example.AirApplication /webapi/*
以上就是 JAR-RS 規(guī)范中定義的四種 REST 服務的方式。
以上文字片段以及圖片,部分來自于 《Java RESTful Web Service 實戰(zhàn)》一書。如有版權侵犯,請聯(lián)系郵箱[ychangsheng@gmail.com]。本人及時修改。
文章版權歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/64236.html
摘要:作為日常開發(fā)中一種常用的傳輸格式。對應的,定義了三種標準類型的輸入接口和輸出接口,。實體類如果請求的傳輸數(shù)據(jù)量很大,并且無需和外系統(tǒng)對接的場景,建議使用屬性來組織,這樣可以極大的減小格式的數(shù)據(jù)包的規(guī)模。如有版權侵犯,請聯(lián)系郵箱。 XML作為日常開發(fā)中一種常用的傳輸格式。jersey 也做了很優(yōu)秀的支持。 我學習 《Java RESTful Web Service 實戰(zhàn)》 一書。書中有...
摘要:作為日常開發(fā)中一種常用的傳輸格式。對應的,定義了三種標準類型的輸入接口和輸出接口,。實體類如果請求的傳輸數(shù)據(jù)量很大,并且無需和外系統(tǒng)對接的場景,建議使用屬性來組織,這樣可以極大的減小格式的數(shù)據(jù)包的規(guī)模。如有版權侵犯,請聯(lián)系郵箱。 XML作為日常開發(fā)中一種常用的傳輸格式。jersey 也做了很優(yōu)秀的支持。 我學習 《Java RESTful Web Service 實戰(zhàn)》 一書。書中有...
摘要:可簡單地認為它是的擴展,負載均衡自然成為不可或缺的特性。類似的特性在項目也有體現(xiàn),它是另一種高性能代理的方案,提供服務發(fā)現(xiàn)健康和負載均衡。 Dubbo Cloud Native 實踐與思考 分享簡介 Cloud Native 應用架構隨著云技術的發(fā)展受到業(yè)界特別重視和關注,尤其是 CNCF(Cloud Native Computing Foundation)項目蓬勃發(fā)展之際。Dubbo...
摘要:現(xiàn)在可以通過點擊指標檢查的指標,該數(shù)據(jù)是可用的格式。健康檢查被添加?,F(xiàn)在啟動,可以看到第步創(chuàng)建現(xiàn)在寫類,它負責創(chuàng)建博客條目。為了測試,做一個請求第步更新現(xiàn)在,更新方法來從獲取所有的博客文件。 編者注:我們發(fā)現(xiàn)了比較有趣的系列文章《30天學習30種新技術》,準備翻譯,一天一篇更新,年終禮包。下面是第十三天的內(nèi)容。 我已經(jīng)是一個使用了8年Java的軟件開發(fā)人員了,我寫過的大多數(shù)應用程...
摘要:中引入了模塊的概念,默認情況下,中將不再包含的包,而在時關于這個都是捆綁在一起的。 因為是初學REST風格,所以并不打算馬上就用springMVC這些框架去實現(xiàn)restful,所以先用jersey搭建一個rest的demo上手玩玩,本文記錄了搭建所需要引入的jar包,以及搭建過程碰到的坑,希望能讓大家有所收獲,歡迎交流! 1、Maven jar包引入 ...
閱讀 1929·2021-09-23 11:21
閱讀 761·2019-08-30 15:55
閱讀 907·2019-08-29 15:40
閱讀 639·2019-08-29 12:56
閱讀 3238·2019-08-26 12:00
閱讀 3635·2019-08-23 18:24
閱讀 2320·2019-08-23 17:08
閱讀 1723·2019-08-23 17:03