使用JAX-RS和Jetty创建Web服务和Rest Server
用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配置,您將需要:
這是計(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)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ps液化画笔快捷键更改(ps液化画笔速率
- 下一篇: 将ActiveMQ持久消息传递性能提高2