博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《Java RESTful Web Service实战》第一章的实现补漏
阅读量:6838 次
发布时间:2019-06-26

本文共 4031 字,大约阅读时间需要 13 分钟。

韩陆,你好

你的书,麻烦写的清楚一点,多写一些,也许还能多点稿费。
image
小韩,写书认真一点。
image
第13页上来就用maven命令行创建项目,这就有问题啊,没有pom.xml文件mvn这个命令怎么跑的起来呢?
所以正确的过程是这样的:
eclipse上创建项目
创建的结果是这样的:
image
创建过程,先创建一个maven项目
image
_

然后archetypes选择书中指出的jersey-quickstart-grizzly2

创建项目之后,实际上会报错
默认情况下eclipse创建出来的pom.xml文件中提供的jersey-version的版本是1.20
image
但实际上mavenrepository上提供的最新版也就是1.19.4,所以修改一下
image
正常情况下,创建项目完毕,我们测试一下:
首先当然是参考书中的命令行方式,用curl这个命令去执行,这需要首先下载配置curl
image
image
配置环境变量
image
现在都准备好了我们先看看这个项目的内容,它都自动帮我们生成了什么:
MyResource.java

package my.restfulwork.jerseyone;import javax.ws.rs.GET;import javax.ws.rs.Path;import javax.ws.rs.Produces;// The Java class will be hosted at the URI path "/myresource"@Path("/myresource")public class MyResource {    // TODO: update the class to suit your needs        // The Java method will process HTTP GET requests    @GET     // The Java method will produce content identified by the MIME Media    // type "text/plain"    @Produces("text/plain")    public String getIt() {        return "Got it!";    }}

Main.java

package my.restfulwork.jerseyone;import com.sun.jersey.api.container.grizzly2.GrizzlyServerFactory;import com.sun.jersey.api.core.PackagesResourceConfig;import com.sun.jersey.api.core.ResourceConfig;import org.glassfish.grizzly.http.server.HttpServer;import javax.ws.rs.core.UriBuilder;import java.io.IOException;import java.net.URI;public class Main {    private static int getPort(int defaultPort) {        //grab port from environment, otherwise fall back to default port 9998        String httpPort = System.getProperty("jersey.test.port");        if (null != httpPort) {            try {                return Integer.parseInt(httpPort);            } catch (NumberFormatException e) {            }        }        return defaultPort;    }    private static URI getBaseURI() {        return UriBuilder.fromUri("http://localhost/").port(getPort(9998)).build();    }    public static final URI BASE_URI = getBaseURI();        protected static HttpServer startServer() throws IOException {        ResourceConfig resourceConfig = new PackagesResourceConfig("my.restfulwork.jerseyone");        System.out.println("Starting grizzly2...");        return GrizzlyServerFactory.createHttpServer(BASE_URI, resourceConfig);    }        public static void main(String[] args) throws IOException {        // Grizzly 2 initialization        HttpServer httpServer = startServer();        System.out.println(String.format("Jersey app started with WADL available at "                + "%sapplication.wadl\nHit enter to stop it...",                BASE_URI));        System.in.read();        httpServer.stop();    }    }

MainTest.java

package my.restfulwork.jerseyone;import org.glassfish.grizzly.http.server.HttpServer;import com.sun.jersey.core.header.MediaTypes;import com.sun.jersey.api.client.Client;import com.sun.jersey.api.client.WebResource;import junit.framework.TestCase;public class MainTest extends TestCase {    private HttpServer httpServer;        private WebResource r;    public MainTest(String testName) {        super(testName);    }    @Override    protected void setUp() throws Exception {        super.setUp();                //start the Grizzly2 web container         httpServer = Main.startServer();        // create the client        Client c = Client.create();        r = c.resource(Main.BASE_URI);    }    @Override    protected void tearDown() throws Exception {        super.tearDown();        httpServer.stop();    }    /**     * Test to see that the message "Got it!" is sent in the response.     */    public void testMyResource() {        String responseMsg = r.path("myresource").get(String.class);        assertEquals("Got it!", responseMsg);    }    /**     * Test if a WADL document is available at the relative path     * "application.wadl".     */    public void testApplicationWadl() {        String serviceWadl = r.path("application.wadl").                accept(MediaTypes.WADL).get(String.class);                        assertTrue(serviceWadl.length() > 0);    }}

上述三个文件是项目自己生成的java代码

我们运行Main.java
image
console中的信息如下所示:
image

我们使用cmd客户端,执行命令行语句:

image
执行结果,和书中写的一样。

转载地址:http://fjhkl.baihongyu.com/

你可能感兴趣的文章
IEEE期刊
查看>>
pssh使用
查看>>
索引优化系列十四--啥时分区索引性能反而低
查看>>
hive的变量传递设置
查看>>
apache-shiro杂记(三) 用了apache-shiro后,HttpSession.getServletContext() API无法正常工作了...
查看>>
eclipse 中的 maven run configurations
查看>>
spring 项目中的一个异常
查看>>
CentOS PPTP ×××
查看>>
电子工程师必须知道的10个网站 !!!
查看>>
我的友情链接
查看>>
防Xss攻击,包含富文本编辑器的处理
查看>>
MyBatis延迟加载
查看>>
利用MAVEN打包可运行jar包,包括依赖的第三方包
查看>>
Java调用 shell脚本阻塞
查看>>
rabbitmy实战
查看>>
mysql-Mac终端下遇到的问题总结
查看>>
表空间迁移(二)
查看>>
准备mysql函数库和PHP文件
查看>>
初学者应该了解的编程陷阱:javascript篇
查看>>
【安全牛学习笔记】手动漏洞挖掘(三)
查看>>