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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

使用JAX-RS和Jetty创建Web服务和Rest Server

發(fā)布時(shí)間:2023/12/3 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用JAX-RS和Jetty创建Web服务和Rest Server 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

用Java創(chuàng)建WebService非常容易。 將其添加到ServletContainer并將其部署到嵌入式WebServer僅需要幾行代碼。

讓我們創(chuàng)建一個(gè)具有兩個(gè)函數(shù)的簡(jiǎn)單計(jì)算器,作為WebService的示例。 計(jì)算器將計(jì)算任何數(shù)量的squareRoot和平方。 它將返回一個(gè)簡(jiǎn)單的JSON響應(yīng),其中包含動(dòng)作名稱,輸入和輸出。

在我們開始之前,這是Gradle配置,您將需要:

apply plugin: 'java'version = '1.0'repositories {mavenCentral() }dependencies {compile group: 'org.glassfish.jersey.core', name: 'jersey-server', version: '2.7'compile group: 'org.glassfish.jersey.containers', name: 'jersey-container-servlet-core', version: '2.7'compile group: 'org.glassfish.jersey.containers', name: 'jersey-container-jetty-http', version: '2.7'compile group: 'org.glassfish.jersey.media', name: 'jersey-media-moxy', version: '2.7'compile group: 'org.eclipse.jetty.aggregate', name: 'jetty-all', version: '9.3.0.M1'testCompile group: 'junit', name: 'junit', version: '4.11' }

這是計(jì)算器的代碼:

package example;import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; import javax.ws.rs.core.MediaType;@Path("calculator") public class Calculator {@GET@Path("squareRoot")@Produces(MediaType.APPLICATION_JSON)public Result squareRoot(@QueryParam("input") double input){Result result = new Result("Square Root");result.setInput(input);result.setOutput(Math.sqrt(result.getInput()));return result;}@GET@Path("square")@Produces(MediaType.APPLICATION_JSON)public Result square(@QueryParam("input") double input){Result result = new Result("Square");result.setInput(input);result.setOutput(result.getInput()*result.getInput());return result;}static class Result{double input;double output;String action;public Result(){}public Result(String action) {this.action = action;}public String getAction() {return action;}public void setAction(String action) {this.action = action;}public double getInput() {return input;}public void setInput(double input) {this.input = input;}public double getOutput() {return output;}public void setOutput(double output) {this.output = output;}} }

注釋確定REST動(dòng)作的類型將被施加到該方法@GET , @PUT等@Path注釋確定該請(qǐng)求的URI和@Produces注釋確定如何響應(yīng)將被返回。 在我們的例子中,我們選擇JSON,所有這些轉(zhuǎn)換都可以無縫處理。

為了部署我們的WebService,我們需要一個(gè)要使用Jersey的ServletContainer和一個(gè)我們可以將要使用Jetty的容器放入其中的WebServer。

這是RestServer的代碼:

package example;import org.eclipse.jetty.server.Server; import org.eclipse.jetty.servlet.ServletContextHandler; import org.eclipse.jetty.servlet.ServletHolder;public class RestServer {public static void main(String[] args) throws Exception {ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);context.setContextPath("/");Server jettyServer = new Server(8080);jettyServer.setHandler(context);ServletHolder jerseyServlet = context.addServlet(org.glassfish.jersey.servlet.ServletContainer.class, "/*");jerseyServlet.setInitOrder(0);jerseyServlet.setInitParameter("jersey.config.server.provider.classnames",Calculator.class.getCanonicalName());try {jettyServer.start();jettyServer.join();} finally {jettyServer.destroy();}} }

運(yùn)行RestServer之后,您將可以使用此URL對(duì)其進(jìn)行測(cè)試。

  • http:// localhost:8080 / calculator / squareRoot?input = 16

從IntelliJ運(yùn)行查詢的一種非常不錯(cuò)的方法是使用內(nèi)置的REST Client,可以在工具菜單下找到它。

當(dāng)您運(yùn)行REST客戶端時(shí),您將收到以下響應(yīng):

這是測(cè)試RESTful服務(wù)器的一種非常簡(jiǎn)單的方法。

翻譯自: https://www.javacodegeeks.com/2015/03/creating-web-services-and-a-rest-server-with-jax-rs-and-jetty.html

總結(jié)

以上是生活随笔為你收集整理的使用JAX-RS和Jetty创建Web服务和Rest Server的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

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