FeaturesPluginsDocs & SupportCommunityPartners

使用 REST 风格的 Web 服务公开 MySQL 数据库

本教程介绍如何使用 NetBeans IDE 将 MySQL 数据库公开为 REST 风格的 Web 服务端点。您将使用“REST 风格的 Web 服务”插件在 GlassFish v2 上部署 "sakila" 示例数据库。在本教程中,您将学习创建:

  • MySQL 数据库连接
  • 使用该连接的新数据源
  • 基于 MySQL 数据库的实体类
  • 基于这些实体类的 REST 风格的 Web 服务

目录

本页上的内容适用于 NetBeans IDE 6.1 和 NetBeans IDE 6.0

要学习本教程,您需要具备以下软件和资源。

软件或资源 要求的版本
NetBeans IDE Web & Java EE 版本 6.1 或 6.0
Java Development Kit (JDK) 版本 6
版本 5
最新的稳定 MySQL(下载)。
"sakila" 示例 MySQL 数据库(下载)。
符合 Java EE 规范的 Web 服务器或应用服务器 Tomcat Web Server 6.0 和/或
GlassFish v2 应用服务器

Tomcat 和 GlassFish 都可以随同 NetBeans IDE 的 Web 和 Java EE 分发一起安装。此外,也可以访问 GlassFish 下载页Apache Tomcat 下载页

本教程还需要 REST 风格的 Web 服务插件。在 IDE 中,转至“工具”菜单下的插件管理器,在“已安装”标签下检查是否已安装“REST 风格的 Web 服务”插件。如果未安装,请从“可用插件”标签中安装它,如下图所示:

插件管理器中的 REST 风格插件

简介

MySQL 是世界上最流行的开放源代码数据库软件,在其历史中,下载或分发该软件副本的次数已超过 1 亿次。由于 MySQL 消除了与停机时间、维护、管理和支持相关的主要问题,因此具有出色的速度、可靠性和易用性,它已成为企业 IT 管理员的首选。

IDE 通过创建和公开实体类,支持通过数据库快速开发 REST 风格的 Web 服务。REST 风格的 Web 服务是基于 HTTP 头操作的服务。由于其轻量的特性并且支持直接通过 HTTP 传输数据,使用 REST 风格的方法构建 Web 服务作为一种新兴趋势已经开始替代传统的 Web 服务构建方式,即使用基于 SOAP 的技术在 Internet 上部署服务。

为庆祝 Sun Microsystems 宣布即将收购 MySQL,Arun Gupta 最初创作了此演示,介绍如何使用 IDE 将 MySQL 数据库公开为 REST 风格的 Web 服务。

在使用本教程之前,应参见以下内容:

创建数据库连接

IDE 包含 MySQL Connector/J JDBC 驱动程序,您可以通过它连接到 MySQL 数据库。本练习的目标是创建该连接。

  1. 启动您的 MySQL 数据库。
    • 在 Windows 上,键入命令 mysqld-nt --user root --password=your_root_user_password。您必须位于 MySQL bin 目录中,或者 bin 目录必须在您的路径中。如果收到 mysql 无法连接到 localhost 的错误,请启动 MySQL 服务(“控制面板”>“管理工具”>“服务”)。
    • 在 UNIX 系统上,从 MySQL 目录键入命令 ./bin/mysqld_safe
  2. 启动 IDE。打开“服务”标签。展开“数据库”>“驱动程序”。查找 MySQL 驱动程序。如果找不到,请右键单击“驱动程序”节点,选择“新建驱动程序”并使用 MySQL Connector/J 驱动程序的路径填充该对话框。

    显示驱动程序的“服务器”标签
  3. 右键单击 MySQL (Connector/J) 驱动程序节点,然后选择“连接设置...”,将打开“新建数据库连接”对话框。
  4. 将“名称”和“驱动程序”字段保留为缺省值。对于“数据库 URL”,键入 jdbc:mysql://localhost:sakila。对于“用户名”,键入 root,对于“口令”,键入您的 "root" 用户口令。对话框应如下图所示。在完成之后,单击“确定”。
    为 MySQL 创建新的数据库连接

设置 Web 应用程序项目

本练习的目标是创建新的 Web 应用程序项目。本项目将包含实体类和 REST 风格的 Web 服务。

  1. 从主菜单中选择“文件”>“新建项目”(Ctrl-Shift-N)。在“类别”下选择 "Web"。在“项目”下选择“Web 应用程序”,然后单击“下一步”。
  2. 在“项目名称”字段中键入 sakila。请注意,“上下文路径”将变为 /sakila
  3. 将“项目位置”指定为计算机上的任意目录。您可以接受缺省位置。
  4. 在“服务器”下,选择 GlassFish。GlassFish 是获得 Java EE5 认证的应用服务器,并与 NetBeans IDE 的 Web 和 Java EE 安装捆绑在一起。如果使用的是 GlassFish 之外的服务器,如捆绑的 Tomcat Web Server,则可能需要配置该服务器,这已超出本教程的范围。
  5. 将“设置为主项目”选项保留为选中状态,然后单击“完成”。IDE 将创建 Sakila 项目文件夹。此项目文件夹包含所有源代码和项目 meta 数据,例如项目的 Ant 生成脚本。在 IDE 中,将打开 HelloWeb 项目。欢迎页 index.jsp 在主窗口的源代码编辑器中打开。您可以在“文件”窗口 (Ctrl-2) 中查看项目的文件结构,在“项目”窗口 (Ctrl-1) 中查看其逻辑结构。
    空项目逻辑结构

通过数据库生成实体类

本练习的目标是通过 sakila 数据库生成实体类。

  1. 右键单击 "sakila" 节点,然后选择“新建”>“通过数据库生成实体类”,如下图所示:


    从数据库向导启动实体类

  2. 在“数据库表”面板中,从“数据源”下拉字段中选择“新建数据源”。这将打开“创建数据源”对话框。
  3. 在“JNDI 名称”字段中,键入 jndi/sakila。从“数据库连接”下拉字段中,选择 jdbc:mysql://localhost/sakila [root on Default schema],如下图所示。单击“确定”。对话框关闭并返回到“数据库表”面板。

    “创建数据源”对话框
  4. 在“可用表”下,单击 "film",然后单击“添加 >”。“数据库表”页现在应如下图所示。单击“下一步”。

    选择数据库表
  5. 将打开“实体类”页。单击“创建持久性单元...”,接受如下所示的所有缺省值,然后单击“创建”。将返回到“实体类”页。
    “创建持久性单元”对话框
  6. 在“包”下键入 sakila。“实体类”页现在应如下图所示:
    完成的新实体类页
  7. 单击“完成”。IDE 将创建实体类。

  8. 查看“项目”窗口。您现在应该看到下面的屏幕:
    显示 sakila 包的“项目”视图

配置持久性文件

通过数据库生成实体类中,您创建了一个持久性单元。该持久性单元的配置存储在 persistence.xml 文件中。在“项目”视图中,可以在您项目的“配置文件”节点中找到 persistence.xml

需要更改此持久性文件,才能传递用户名和口令。打开 "XML" 标签。编辑该文件使之包括 toplink.jdbc.user 和 toplink.jdbc.password 属性。它匹配以下代码片段(您添加或更改的部分以粗体表示):

<persistence-unit name="sakilaPU" transaction-type="JTA">
<jta-data-source>jndi/sakila</jta-data-source>
<properties>
<property name="toplink.jdbc.user" value="root"/> <property name="toplink.jdbc.password" value="your_root_user_password"/>
</properties>

</persistence-unit>

生成基于实体类的 REST 风格的 Web 服务

本练习的目标是基于在前一节生成的实体类构建 REST 风格的 Web 服务。

  1. 右键单击包含实体类的包,然后选择“新建”>“基于实体类的 REST 风格的 Web 服务”,如下图所示:
    选择该向导
  2. 在“新建基于实体类的 REST 风格的 Web 服务”向导中,单击“全部添加”。您现在应该看到下面的屏幕:
    选择实体类
  3. 单击“下一步”。将打开“生成的类”面板。接受所有缺省值,然后单击“完成”。IDE 现在将创建 REST 风格的 Web 服务。

    在“项目”窗口中,“REST 风格的 Web 服务”节点显示项目中所有的 REST 风格的 Web 服务。方括号中的值(如 [/films/])是 URI 模板的值。您还可以通过双击此节点定位到源文件。该视图还显示了所有 HTTP 方法和子资源定位器方法。同样,您也可以通过双击节点定位到方法。

至此,实体类和 REST 风格的 Web 服务已生成,接下来该测试应用程序了。IDE 提供了一个用于测试 REST 风格的 Web 服务的有用实用程序。我们将会在下一节中用到它。

测试 REST 风格的 Web 服务

本练习的目标是试验我们的应用程序。

  1. 右键单击项目节点,然后选择“测试 REST 风格的 Web 服务”,如下图所示:
    “项目”标签中的“测试 REST 风格的服务”上下文菜单项

    服务器启动,应用程序部署。最后,浏览器应显示我们的应用程序以及每个 Web 服务的链接:
    REST 风格的服务测试器

  2. 左侧是根资源集。这里它们被命名为 languagesfilms

  3. 单击 "Films",然后单击“测试”或 URL "http://localhost:8080/sakila/resources/films/"。结果为 Film 表的 REST 风格的表示。缺省表示是显示表中的 10 个记录,其中每个条目都返回 film 的 id 以及对条目详情的引用。

    film 表

通过向 URL 附加 /?max=n 可以查看更多条目。例如,"http://localhost:8080/sakila/resources/films/?max=40" 可以显示前 40 个条目。通过向 "converter.FilmRefConverter" 类添加 getter 方法可以显示表中的其他字段,如:

@XmlElement


public String getTitle() {


    return entity.getTitle();


    }
除了已经返回的字段外,getTitle 方法还返回 film 标题。通过转到“服务”标签并展开之前创建的 sakila 数据库连接,可以查看表中的不同列:



修改的输出(包括 film 标题)类似于下图:

更多练习

下面是供您探讨的更多思路:

  • 使用上述步骤创建其他表的 REST 风格的表示。
  • TOTD #10 中所述,在 jMaki 包装的 Yahoo 数据表或 Dojo 数据表中显示不同表中的数据。
  • Hello JPA World 中所述,在 JSP 页中显示从数据库中检索的数据。
  • TOTD #15 Screencast #Web10 中所述,使用 jMaki 数据表创建 CRUD 应用程序。

此处说明了使用 MySQL 的 JRuby-on-Rails 应用程序。TOTD #9 说明了如何使用 MySQL 将 GlassFish 中的 JDBC 连接池用于 JRuby-on-Rails 应用程序。

此处的重要消息是通过 NetBeans IDE 可以很方便地将 MySQL 与 GlassFish 一起使用。


另请参见

有关使用 NetBeans IDE 6.0 开发 Java EE 应用程序的更多信息,请参见以下资源:

要发送意见和建议、获得支持以及随时了解 NetBeans IDE Java EE 开发功能的最新开发情况,请加入 邮件列表

Bookmark this page

del.icio.us furl simpy slashdot technorati digg
Companion
Projects:
MySQL Database Server   Open JDK: an Open SourceJDK   GlassFish Community: an Open Source Application Server    Mobile & Embedded Community    Open Solaris   java.net - The Source for Java Technology Collaboration   Virtual Box - full virtualizer  Open ESB - The Open Enterprise Service Bus Powered by