首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

使用 Apache Wink、Eclipse 和 Maven 开发 RESTful Web 服务(3)

使用 Apache Wink、Eclipse 和 Maven 开发 RESTful Web 服务(3)

Apache Wink HelloWorld 服务我们来检查一下 apps 模块中的 HelloWorld Java 类。在 Project Explorer 视图中,单击 apps > HelloWorld > src > main,然后打开文件 HelloWorld.java,该文件的结构如  所示。               
清单 1. HelloWorld.java 文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package org.apache.wink.example.helloworld;
...

@Path("/world")
public class HelloWorld {

   public static final String ID = "helloworld:1";
   
   @GET
   @Produces(MediaType.APPLICATION_ATOM_XML)
   public SyndEntry getGreeting() {
      SyndEntry synd = new SyndEntry(new SyndText("Hello World!"), ID, new Date());
      return synd;
   }
}




HelloWorld 是一个 JAX-RS 资源(或服务),正如其类定义前面的 @Path("/world") 注释所示。字符串 "/world" 是该资源的相对根 URI。JAX-RS 将匹配相对 URI                         "/world" 的 HTTP 请求路由到                        HelloWorld 类的方法。               
HelloWorld 类的惟一方法 — getGreeting — 拥有一个 @GET 注释,表示它将服务于 HTTP GET 请求。               
@Produces(MediaType.APPLICATION_ATOM_XML) 注释表明 HTTP 响应的媒体类型 — 即,HTTP 响应头部中的                        Content-Type 字段的值。               
与相对 URI "/world" 关联的绝对 URI 由部署描述符 web.xml 中的设置决定,这个部署描述符驻留在 HelloWorld/src/main/webapp/WEB-INF 中,如  所示。               
图 4. HelloWorld 应用程序的部署描述符                                注意,URI 模式 /rest/* 被绑定到                        restSdkService servlet,这个 servlet 的 context path 是 HelloWorld,由 HelloWorld/pom.xml 文件中的 <finalName> 元素定义。这样,HelloWorld 资源的绝对 URI 是:               
1
http://host:port/HelloWorld/rest/world




中的 servlet 名称 restSdkService 引用 org.apache.wink.server.internal.servlet.RestServlet                        Apache Wink 类,如图中的 <servlet>                         元素所示。RestServlet 类使用初始参数 applicationConfigLocation 传递 HelloWorld 类的名称,这个初始参数反过来指向位于 HelloWorld/src/main/webapp/WEB-INF 文件夹中的 web.xml 旁边的 application 文件。这个 application 文件只有一行,即                        HelloWorld 资源的限定名:               
1
org.apache.wink.example.helloworld.HelloWorld




RestServlet servlet 可以在 “无 JAX-RS 感知” 的                         servlet 容器中运行,从而支持将 JAX-RS 服务轻松部署到 “无 JAX-RS 感知” 的容器中。               
我们现在开始构建 HelloWorld 服务,然后将其部署到 Tomcat 6.0                        servlet 容器中并运行。               
构建 HelloWorld在 Eclipse 中,可以使用 m2eclipse 插件来构建、部署和运行 HelloWorld。首先,编译源代码并为 HelloWorld 服务构建 Web 归档 (WAR) 文件。要构建这个服务,指示 m2eclipse 执行安装生命周期阶段。(执行一个 Maven 生命周期阶段将触发项目生命周期中的此前阶段的执行。)要执行安装阶段,在 Project Explorer 视图中右键单击 HelloWorld,然后单击                                Run As > Maven install,如  所示。                       
图 5. 执行                                                 Maven 安装阶段                                        Maven install” 路径的屏幕快照。" width="572" height="490">Maven (从中央资源库                                http://repo1.maven.org/maven2 或从镜像资源库)下载所有依赖项,并在 Windows® 中的 %HOMEPATH%\.m2\repository 或 Linux® 中的 $HOME/.m2/repository 下构建本地资源库。Maven 执行的动作记录在 Eclipse 窗口的 Console 视图中。                       
如果安装阶段成功结束,那么 WAR 文件 HelloWorld.war 就构建在目标目录下并部署到本地资源库中,Console 视图将显示消息 “Build successful”。                       
将 HelloWorld 部署到 Tomcat您将使用 Maven 的 Tomcat 插件。(与 Eclipse 一样,Maven 通过插件提供大量功能。)您必须将 Tomcat 插件的位置告知 Maven,方法是指定插件的 groupId 和 artifactId,如  所示(pom.xml 中的 45-46 行)。                       
图 6. Tomcat Maven 插件您还需要告知 Maven 用于访问 Tomcat manager 应用程序的用户名和密码。Maven 使用 manager 应用程序来指导 Tomcat 部署或取消部署一个 Web 应用程序。按照以下步骤告知 Maven 身份验证信息:                       
  • 声明 tomcat-maven-plugin 工件的一个 Tomcat 服务器配置 — 称为 tomcat-localhost,如  所示(pom.xml 中的 47-49 行)
  • 在 Maven 设置文件 settings.xml(位于 Windows 的 %HOMEPATH%\.m2\ 或 Linux 的 $HOME/.m2 下)中定义这个配置,如  所示。

    清单 2. Maven settings.xml 文件
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <?xml version="1.0" encoding="UTF-8"?>

    <settings
        xmlns="http://maven.apache.org/SETTINGS/1.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
                            http://maven.apache.org/xsd/settings-1.0.0.xsd">
      <servers>
        <server>
          <id>tomcat-localhost</id>
          <username>admin</username>
          <password>admin</password>
        </server>
      </servers>

    </settings>




返回列表