利用Tomcat发布基于Maven所构建的Jersey RESTful Web Service

一、关于RESTful架构

REST这词是Roy Thomas Fielding在他2000年的博士论文中提出的。他利用REST定义了互联网软件的架构原则,即Representational State Transfer缩写,直译过来就是“表现层状态转化”,如果一个架构符合REST原则,就称它为RESTful架构。REST所指向的是在互联网中资源属性,其指明的是“Resources”的表现层,即概括成就是可以利用REST原则构建API能够找到独一无二的“资源实体”,如图片、音频、特定的数据等。简单概述RESTful架构有以下几个重点:

1.每一个URI代表一种资源;
2.客户端和服务器之间,传递这种资源的某种表现层;
3.客户端通过四个HTTP动词(GET、POST、PUT、DELETE)对服务器端资源进行操作,实现“表现层状态转化”。
具体的可以看构建实现的例子。

二、关于Jersey、Maven

Jersey是JAX-RS(The Java API for RESTful Web Service)标准的参考实现,是Java领域中最纯正的REST服务开发框架。
Apache Maven是一款软件项目管理和理解工具。基于项目对象模型(POM)的概念,Maven可以从中央信息管理项目的构建,报告和文档。

三、具体实践

1.依赖环境JDK、Maven、Tomcat

安装JDK和Maven时候需要注意的配置环境变量的问题,这其中需要注意的是下载的Maven和Tomcat都是需要时Binary 包,这样就可以直接解压后就可以直接运行无需编译:

1.1.mac环境下:

可以利用vim ~/.bash_profile来配置JDK和Maven的环境变量PATH,配置完成后执行source ~./bash_profile来让配置文件生效

#JDK
JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_162.jdk/Contents/Home
PATH=$JAVA_HOME/bin:$PATH:.
CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:.
export JAVA_HOME
export PATH
export CLASSPATH
#Maven
export M2_HOME=/Users/bing/apache-maven-3.5.22
export PATH=$PATH:$M2_HOME/bin

验证是否配置好,可以在terminal上面输入mvn -v命令看,系统是否识别如下图:

利用Tomcat发布基于Maven所构建的Jersey RESTful Web Service

1.2.Windows环境下:可以通过高级系统设置来配置环境变量

2.利用mvn命令来创建webapp的例子(以mac环境下为例)

sudo mvn archetype:generate -DarchetypeArtifactId=jersey-quickstart-webapp \
                -DarchetypeGroupId=org.glassfish.jersey.archetypes -DinteractiveMode=false \
                -DgroupId=com.example -DartifactId=simple-service-webapp -Dpackage=com.example \
                -DarchetypeVersion=2.26

利用Tomcat发布基于Maven所构建的Jersey RESTful Web Service

cd simple-service-webapp
sudo mvn clean package

利用Tomcat发布基于Maven所构建的Jersey RESTful Web Service
这样就已经把刚才构建基于maven所构建的Jersey RESTful Web Service的war就已经同mvn构建好了
如下图
利用Tomcat发布基于Maven所构建的Jersey RESTful Web Service

3.启动Tomcat来发布此Web Service项目

在Apache Tomcat下载Binary的包后,通过Terminal终端进入Tomcat的bin目录下

bash startup.sh

利用Tomcat发布基于Maven所构建的Jersey RESTful Web Service
如此便是已经将web service部署到了Tomcat中了,并且已经发布了
这样就可以通过URI来访问我们的项目资源,如在原来的项目中所需要留意的两个地方是,第一个是webapp文件夹下web.xml,如下图
利用Tomcat发布基于Maven所构建的Jersey RESTful Web Service

<?xml version="1.0" encoding="UTF-8"?>
<!-- This web.xml file is not required when using Servlet 3.0 container,
     see implementation details http://jersey.java.net/nonav/documentation/latest/jax-rs.html -->
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <servlet>
        <servlet-name>Jersey Web Application</servlet-name>
        <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
        <init-param>
            <param-name>jersey.config.server.provider.packages</param-name>
            <param-value>com.example</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Jersey Web Application</servlet-name>
        <url-pattern>/webapi/*</url-pattern>
    </servlet-mapping>
</web-app>

其中的<url-pattern>/webapi/*</url-pattern>中webapi就是访问路径一个名字,
第二个是项目中具体的java类所定义接口的中path路径,在此项目中就是MyResource.java

@Path("myresource")
public class MyResource {

    /**
     * Method handling HTTP GET requests. The returned object will be sent
     * to the client as "text/plain" media type.
     *
     * @return String that will be returned as a text/plain response.
     */
    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String getIt() {
        return "Got it!";
    }
}

所以上手的样例所要访问的URI是:
http://localhost:8080/simple-service-webapp/webapi/myresource/

利用Tomcat发布基于Maven所构建的Jersey RESTful Web Service

这样就可以开始项目具体业务的开发了。


后续会继续完善Windows和Linux版本的环境的搭建,以及基于Docker容器项目部署。

相关推荐