微服务框架Jersey:快速入门

本文介绍如何利用Jersey和嵌入式的Jetty容器构建微服务应用,包括基本框架搭建、服务启动和服务访问等。

环境及版本

开发环境:Windows 7 、IntelJ IDEA、maven、jdk
Jersey:2.19
JDK: 1.8

基本框架搭建

搭建Jersey微服务应用,基本框架构建主要步骤:

  • 创建maven工程,组织依赖库和编译插件
  • 编写服务器启动类
  • 注册REST资源
  • 日志配置

整体框架结构如图所示:
在这里插入图片描述

maven配置

新建mavan工程,引入Jersey、Jetty、log4j等依赖库,并为工程指定编译器为jdk 1.8。

<?xml version="1.0" encoding="UTF-8"?>
<project>
    <modelVersion>4.0.0</modelVersion>
    <groupId>rest</groupId>
    <artifactId>rest</artifactId>
    <version>1.0.0</version>
    <properties>
        <jetty.version>9.3.8.v20160314</jetty.version>
        <jersey2.version>2.19</jersey2.version>
    </properties>
    <dependencies>
        <!--jersey-->
        <dependency>
            <groupId>org.glassfish.jersey.containers</groupId>
            <artifactId>jersey-container-servlet</artifactId>
            <version>${jersey2.version}</version>
        </dependency>
        <!--jetty容器-->
        <dependency>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-servlet</artifactId>
            <version>${jetty.version}</version>
        </dependency>
        <!--日志-->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.25</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3.2</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

服务器入口

编写服务启动类

package org.bigdata;

import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.handler.HandlerList;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;
import org.glassfish.jersey.servlet.ServletContainer;

public class JettyServer {
    public static void main(String[] args) throws Exception {
        int port = 8081;
        Server server = new Server(port);
        ServletHolder sh = new ServletHolder(ServletContainer.class);
        //监听的资源
        sh.setInitParameter("jersey.config.server.provider.packages",
                "org.bigdata.res");
        ServletContextHandler apiContext = new ServletContextHandler(
                ServletContextHandler.SESSIONS);
        apiContext.addServlet(sh, "/*");
        apiContext.setContextPath("/");

        HandlerList handlerList = new HandlerList();
        handlerList.addHandler(apiContext);
        server.setHandler(handlerList);
        server.start();
    }

}

编写资源类

编写一个简单的资源类,用于响应用户的/hello请求。编写完成后,一定要在服务器启动类中注册资源。sh.setInitParameter("jersey.config.server.provider.packages","org.bigdata.res");

package org.bigdata.res;

import javax.jws.WebService;
import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.core.Context;

@Path("")
@WebService
public class WelcomeRes {
    @Path("hello")
    @GET
    public String sayHello(@Context HttpServletRequest request) {
        return "hello, jetty!";
    }
}

日志配置

Jersey框架的日志要在框架中显示引入,如果没有显示引入log4j框架,服务器启动时会提示如下异常。

log4j:WARN No appenders could be found for logger (dao.hsqlmanager).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

引入log4j框架,并指定日志输出文件log4j.properties。

log4j.rootLogger=INFO,A1

log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %p %c{2} %m%n
log4j.appender.A1.Threshold=INFO

服务启动

运行JettyServer类,启动服务器。如图所示:
在这里插入图片描述
通过浏览器输入http://localhost:8081/hello请求服务,查看返回结果。
在这里插入图片描述

发布了82 篇原创文章 · 获赞 53 · 访问量 3万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 技术工厂 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览