IBM JAX-RS 入门

JAX-RS 是接口和 Java™ 注释的集合,用于简化服务器端 REST 应用程序的开发。 通过使用 JAX-RS 技术,具象状态传输 (REST) 应用程序比其他类型的分布式系统更易于开发和使用。

有关此任务

JAX-RS 是用于快速开发 REST 应用程序的 Java API。 虽然 JAX-RS 提供了比 Servlet 更快速的 Web 应用程序开发方法,但 JAX-RS 的主要目标是构建 RESTful 服务。 JAX-RS 1.0 定义了用于构建 REST 应用程序的服务器端组件 API。 JAX-RS 的 IBM® 实现提供 JAX-RS (JSR 311) 规范的实现。

使用此入门指南可帮助您快速开发和部署简单 JAX-RS Web 应用程序。

此过程说明了如何开发包装在 Web 应用程序归档 (WAR) 模块内的简单 Hello World 服务。

过程

  1. 创建 Java 类。
    此类用于表示某种类型的资源。
    package com.ibm.jaxrs.sample;
    
    public class HelloWorldResource {
    
    }
  2. 使用 javax.ws.rs.Path 注释对 Java 类进行注释。
    注释的值是应用程序上下文之后的 URL 的相对部分。 应用程序上下文在部署期间进行全面定义。 在 JAX-RS 术语中,此类称为根资源。
    package com.ibm.jaxrs.sample;
    
    @javax.ws.rs.Path("/helloworld")
    public class HelloWorldResource {
    
    }
  3. 创建返回 Hello World! 响应的 Java 方法。
    它适用于要在接收 HTTP 请求时调用的方法。
    package com.ibm.jaxrs.sample;
    
    @javax.ws.rs.Path("/helloworld")
    public class HelloWorldResource {
    
        public String sayHelloWorld() {
            return "Hello World!";
        }
    }
  4. 向 Java 方法添加 javax.ws.rs.GET 注释。
    现在,每当应用程序接收到针对 /helloworld 路径的 HTTP GET 请求时,都会调用 sayHelloWorld Java 方法。 响应消息正文将包含 Hello World! 作为它的内容。
    package com.ibm.jaxrs.sample;
    
    @javax.ws.rs.Path("/helloworld")
    public class HelloWorldResource {
    
        @javax.ws.rs.GET
        public String sayHelloWorld() {
            return "Hello World!";
        }
    }
    资源实现现在已完成。
  5. 必须创建 JAX-RS javax.ws.rs.core.Application 配置子类。
    此子类需要返回与 JAX-RS 运行时环境相关的 Java 类集。
    package com.ibm.jaxrs.sample;
    
    public class HelloWorldAppConfig extends javax.ws.rs.core.Application {
        public Set<Class<?>> getClasses() {
            Set<Class<?>> classes = new HashSet<Class<?>>();
            classes.add(com.ibm.jaxrs.sample.HelloWorldResource.class);
            return classes;
        }
    }
  6. 创建 web.xml Web 模块配置文件。
    该文件告知 Web 容器 Web 模块包含 IBM JAX-RS REST servlet。 必须使用应用程序配置类初始化 IBM JAX-RS Rest servlet。
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app id="WebApp_9" version="2.4" xmlns=http://java.sun.com/xml/ns/j2ee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> 
        <servlet>
            <servlet-name>HelloWorldApp</servlet-name>
            <servlet-class>com.ibm.websphere.jaxrs.server.IBMRestServlet</servlet-class>
            <init-param>
                <param-name>javax.ws.rs.Application</param-name>
                <param-value>com.ibm.jaxrs.sample.HelloWorldAppConfig</param-value>
            </init-param>
            <load-on-startup>1</load-on-startup>
        </servlet>
        <servlet-mapping>
            <servlet-name>HelloWorldApp</servlet-name>
            <url-pattern>/rest/*</url-pattern>
        </servlet-mapping>
    </web-app>
    请参阅先前示例中指定的 Servlet 映射。 该模式用于帮助确定 RESTful 服务的最终 URL。
  7. j2ee.jar 文件添加到类路径。

    app_server_root/dev/JavaEE 目录获取 j2ee.jar 文件并将该 JAR 文件添加至类路径。 编译这些类。

  8. 组装 Web 应用程序。
    通过使用 JDK 随附的 jar 命令行工具,运行以下命令:
    jar cvf helloworld-jaxrs.war *
    此命令会创建一个 WAR 文件。
  9. 将应用程序部署到应用程序服务器上。

    部署应用程序时,系统可能会提示您为模块的上下文根提供一个值。 上下文根用于定义应用程序上下文。

    使用 IBM JAX-RS servlet 时,以下 URL 定义应用程序上下文:
    http://<your_hostname>:<your Web_container_port>/<context_root_of_Web_application>/servlet_mapping_pattern
    @javax.ws.rs.Path 值指定的根资源 URL 是相对于应用程序上下文根而言。 因此,如果在部署期间将上下文根定义为 myapplication ,那么 URL 模式在 web.xml 文件中定义为 /rest/*,并且 Java 根资源类的 @javax.ws.rs.Path 值为 /helloworld。 最终 URL 的示例如下所示:
    http://localhost:9080/myapplication/rest/helloworld

    现在,您可以使用 Web 浏览器或任何其他 HTTP 客户机向最终 URL 发送客户机请求。

结果

您已开发 JAX-RS Web 应用程序并将其部署到应用程序服务器。