成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

JAX-RS 2.0 中 REST 的四種服務(wù)類型

bbbbbb / 2458人閱讀

摘要:當(dāng)不存在子類,也不存在子類時(shí),規(guī)范中定義,在這種情況下,為服務(wù)動(dòng)態(tài)生成一個(gè)名為的實(shí)例,并自動(dòng)探測(cè)匹配資源。其中是中的基類,它繼承于情況二當(dāng)不存在子類,但是存在子類時(shí)。以上就是規(guī)范中定義的四種服務(wù)的方式。

最近在學(xué)習(xí) jersey 框架。他是 目前比較流行的 基于 JAX-RS 2.0 規(guī)范實(shí)現(xiàn)的 RESTful 框架。

我是跟著 《Java RESTful Web Service 實(shí)戰(zhàn)》 一書(shū) 在學(xué)習(xí)。書(shū)中有些知識(shí)點(diǎn),不太常用,但是比較重要,特寫(xiě)下次筆記已備忘。

概要

如下圖:

情況一:當(dāng)不存在 Application 子類,也不存在 Servlet 子類時(shí)

情況二:當(dāng)不存在 Application 子類,但是存在 Servlet 子類時(shí)

情況三:當(dāng)存在 Application 子類,而且 Application 子類被 ApplicationPath 注解所修飾。

情況四:當(dāng)存在 Application 子類,但是沒(méi)有被ApplicationPath 注解所修飾。


此圖來(lái)自于《Java RESTful Web Service 實(shí)戰(zhàn)》

描述

情況一

以下xml代碼是 servlet 容器的 web.xml 中的 去除 的子元素。

當(dāng)不存在 Application 子類,也不存在 Servlet 子類時(shí),規(guī)范中定義,在這種情況下,為REST服務(wù)動(dòng)態(tài)生成一個(gè)名為 javax.ws.rs.core.Application 的 Servlet 實(shí)例,并自動(dòng)探測(cè)匹配資源。與此同時(shí),需要根據(jù)Servlet的不同版本,在web.xml定義REST請(qǐng)求處理的Servlet為這個(gè)動(dòng)態(tài)生成的Servlet.

xml    
    
        javax.ws.rs.core.Application
    
    
        javax.ws.rs.core.Application
        /webapi/*
    
xml

    Jersey Web Application
    org.glassfish.jersey.servlet.ServletContainer
     
         jersey.config.server.provider.packages
         com.example
     
     1


    Jersey Web Application
    /webapi/*

通過(guò) Servlet2.x 中 web.xml 的配置項(xiàng),可以看出,jersey-container-servlet-core 不具備自動(dòng)掃描資源類的功能。

其中 org.glassfish.jersey.servlet.ServletContainer 是 jersey 中 Servlet的基類,它繼承于 HttpServlet

情況二

當(dāng)不存在 Application 子類,但是存在 Servlet 子類時(shí)。

java// Servlet3.x 中 一個(gè) 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 服務(wù)。在 Servlet3.x 的場(chǎng)景下,可以省略 web.xml 文件。但是 Servlet 項(xiàng)目中如果沒(méi)有 web.xml 的話,在使用 maven 發(fā)布war 的時(shí)候會(huì)報(bào)錯(cuò),所以需要設(shè)置 maven-war-plugins

xml    
        org.apache.maven.plugins
        maven-war-plugin
        2.3
        
            false
        
    

情況三:
當(dāng)存在 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 方法 會(huì)掃描所有的資源類。

java@ApplicationPath("/webapi/*")
public class AirResourceConfig extends ResourceConfig {
    public AirResourceConfig() {
        packages("com.example");
    }
}

情況四:
當(dāng)存在 Application 子類,但是沒(méi)有被 ApplicationPath 注解所修飾

我們需要先 定義一個(gè) Application 子類,已完成 Servlet 的配置。

javapublic class AirApplication extends Application {
    @Override
    public Set> getClasses() {
        final Set> classes = new HashSet>();
        classes.add(BookResource.class);
        return classes;
    }
}
xml
    Jersey Web Application
    org.glassfish.jersey.servlet.ServletContainer
    
        javax.ws.rs.Application
        com.example.AirApplication
    
    1


    Jersey Web Application
    /webapi/*

以上配置,可以生效與 Servlet2.x 版本中。我們可以 利用 Servlet3.x 的特性來(lái)簡(jiǎn)化這些設(shè)置。

xml
    com.example.AirApplication


    com.example.AirApplication
    /webapi/*

以上就是 JAR-RS 規(guī)范中定義的四種 REST 服務(wù)的方式。

以上文字片段以及圖片,部分來(lái)自于 《Java RESTful Web Service 實(shí)戰(zhàn)》一書(shū)。如有版權(quán)侵犯,請(qǐng)聯(lián)系郵箱[[email protected]]。本人及時(shí)修改。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/64236.html

相關(guān)文章

  • jersey 框架傳輸格式 (2) xml

    摘要:作為日常開(kāi)發(fā)中一種常用的傳輸格式。對(duì)應(yīng)的,定義了三種標(biāo)準(zhǔn)類型的輸入接口和輸出接口,。實(shí)體類如果請(qǐng)求的傳輸數(shù)據(jù)量很大,并且無(wú)需和外系統(tǒng)對(duì)接的場(chǎng)景,建議使用屬性來(lái)組織,這樣可以極大的減小格式的數(shù)據(jù)包的規(guī)模。如有版權(quán)侵犯,請(qǐng)聯(lián)系郵箱。 XML作為日常開(kāi)發(fā)中一種常用的傳輸格式。jersey 也做了很優(yōu)秀的支持。 我學(xué)習(xí) 《Java RESTful Web Service 實(shí)戰(zhàn)》 一書(shū)。書(shū)中有...

    betacat 評(píng)論0 收藏0
  • jersey 框架傳輸格式 (2) xml

    摘要:作為日常開(kāi)發(fā)中一種常用的傳輸格式。對(duì)應(yīng)的,定義了三種標(biāo)準(zhǔn)類型的輸入接口和輸出接口,。實(shí)體類如果請(qǐng)求的傳輸數(shù)據(jù)量很大,并且無(wú)需和外系統(tǒng)對(duì)接的場(chǎng)景,建議使用屬性來(lái)組織,這樣可以極大的減小格式的數(shù)據(jù)包的規(guī)模。如有版權(quán)侵犯,請(qǐng)聯(lián)系郵箱。 XML作為日常開(kāi)發(fā)中一種常用的傳輸格式。jersey 也做了很優(yōu)秀的支持。 我學(xué)習(xí) 《Java RESTful Web Service 實(shí)戰(zhàn)》 一書(shū)。書(shū)中有...

    The question 評(píng)論0 收藏0
  • Dubbo Cloud Native 實(shí)踐與思考

    摘要:可簡(jiǎn)單地認(rèn)為它是的擴(kuò)展,負(fù)載均衡自然成為不可或缺的特性。類似的特性在項(xiàng)目也有體現(xiàn),它是另一種高性能代理的方案,提供服務(wù)發(fā)現(xiàn)健康和負(fù)載均衡。 Dubbo Cloud Native 實(shí)踐與思考 分享簡(jiǎn)介 Cloud Native 應(yīng)用架構(gòu)隨著云技術(shù)的發(fā)展受到業(yè)界特別重視和關(guān)注,尤其是 CNCF(Cloud Native Computing Foundation)項(xiàng)目蓬勃發(fā)展之際。Dubbo...

    邱勇 評(píng)論0 收藏0
  • Day 13: Dropwizard —— 非常棒的Java REST服務(wù)器棧

    摘要:現(xiàn)在可以通過(guò)點(diǎn)擊指標(biāo)檢查的指標(biāo),該數(shù)據(jù)是可用的格式。健康檢查被添加?,F(xiàn)在啟動(dòng),可以看到第步創(chuàng)建現(xiàn)在寫(xiě)類,它負(fù)責(zé)創(chuàng)建博客條目。為了測(cè)試,做一個(gè)請(qǐng)求第步更新現(xiàn)在,更新方法來(lái)從獲取所有的博客文件。 編者注:我們發(fā)現(xiàn)了比較有趣的系列文章《30天學(xué)習(xí)30種新技術(shù)》,準(zhǔn)備翻譯,一天一篇更新,年終禮包。下面是第十三天的內(nèi)容。 我已經(jīng)是一個(gè)使用了8年Java的軟件開(kāi)發(fā)人員了,我寫(xiě)過(guò)的大多數(shù)應(yīng)用程...

    Awbeci 評(píng)論0 收藏0
  • 記錄第一次搭建基于JAX-RSREST風(fēng)格DEMO

    摘要:中引入了模塊的概念,默認(rèn)情況下,中將不再包含的包,而在時(shí)關(guān)于這個(gè)都是捆綁在一起的。 因?yàn)槭浅鯇W(xué)REST風(fēng)格,所以并不打算馬上就用springMVC這些框架去實(shí)現(xiàn)restful,所以先用jersey搭建一個(gè)rest的demo上手玩玩,本文記錄了搭建所需要引入的jar包,以及搭建過(guò)程碰到的坑,希望能讓大家有所收獲,歡迎交流! 1、Maven jar包引入 ...

    ybak 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<