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 服务。
过程
- 创建 Java 类。此类用于表示某种类型的资源。
package com.ibm.jaxrs.sample; public class HelloWorldResource { }
- 使用
javax.ws.rs.Path
注释对 Java 类进行注释。注释的值是应用程序上下文之后的 URL 的相对部分。 应用程序上下文在部署期间进行全面定义。 在 JAX-RS 术语中,此类称为根资源。package com.ibm.jaxrs.sample; @javax.ws.rs.Path("/helloworld") public class HelloWorldResource { }
- 创建返回
Hello World!
响应的 Java 方法。它适用于要在接收 HTTP 请求时调用的方法。package com.ibm.jaxrs.sample; @javax.ws.rs.Path("/helloworld") public class HelloWorldResource { public String sayHelloWorld() { return "Hello World!"; } }
- 向 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!"; } }
- 必须创建 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; } }
- 创建 web.xml Web 模块配置文件。该文件告知 Web 容器 Web 模块包含 IBM JAX-RS REST servlet。 必须使用应用程序配置类初始化 IBM JAX-RS Rest servlet。
请参阅先前示例中指定的 Servlet 映射。 该模式用于帮助确定 RESTful 服务的最终 URL。<?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>
- 将 j2ee.jar 文件添加到类路径。
从 app_server_root/dev/JavaEE 目录获取 j2ee.jar 文件并将该 JAR 文件添加至类路径。 编译这些类。
- 组装 Web 应用程序。通过使用 JDK 随附的 jar 命令行工具,运行以下命令:
此命令会创建一个 WAR 文件。jar cvf helloworld-jaxrs.war *
- 将应用程序部署到应用程序服务器上。
部署应用程序时,系统可能会提示您为模块的上下文根提供一个值。 上下文根用于定义应用程序上下文。
使用 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 应用程序并将其部署到应用程序服务器。