要学习本教程,您须要具有如下软件和资源。 php
软件或资源 | 要求的版本 |
---|---|
NetBeans IDE | Java EE 下载包 |
Java 开发工具包 (JDK) | 版本 6 或 7 |
符合 Java EE 规范的应用服务器 | Oracle WebLogic Server 11g-12c, |
jdbc/sample 数据库(位于 |
在 Java DB (Derby) 上,jdbc/sample 数据库是由 NetBeans IDE 生成的 经过 IDE 在 MySQL 服务器上建立样例数据库后,IDE 将在 MySQL 上填充该样例数据库。 web |
GlassFish Server 能够随 NetBeans IDE 的 Web 和 Java EE 分发一块儿安装。或者,还能够访问 GlassFish Server 下载页。 spring
重要说明:Java EE 6 和 Java EE 7 项目须要使用 GlassFish Server 或 Oracle WebLogic Server 12c。 sql
REST 风格的 Web 服务是使用 REST 风格的体系结构样式构建的服务。因为其轻量的特性而且支持直接经过 HTTP 传输数据,使用 REST 风格的方法构建 Web 服务做为一种新兴趋势已经开始替代传统的 Web 服务构建方式,即便用基于 SOAP 的技术在 Internet 上部署服务。 数据库
IDE 支持使用 JSR 311 - Java API for RESTful Web Services (JAX-RS) 和 Jersey(JAX-RS 的引用实现)快速开发 REST 风格的 Web 服务。 json
有关详细信息,请参见如下内容: 浏览器
除了支持构建 REST 风格的 Web 服务以外,IDE 还支持测试、构建可访问 REST 风格的 Web 服务的客户端应用程序,以及构建用于调用 Web 服务(REST 风格和基于 SOAP)的代码。
下面是 IDE 提供的 REST 风格的功能列表:
在本教程中,将介绍 IDE 如何支持生成、实现和测试 REST 风格的 Web 服务。
Java 中 REST 风格的 Web 服务依靠 Java 持久性 API 与数据库进行通讯。具体来讲,REST 风格的 Web 服务依赖于持久性 API 中定义的实体类和持久性单元。实体类是指映射到关系数据库中的对象的 Java 类。按照 Java EE5 教程中的说法,“实体是一种小型持久性域对象。一般状况下,实体表示关系数据库中的表,每一个实体实例与该表中的一行相对应”。持久性单元包含 persistence.xml 文件中定义的实体类、数据源、持久性提供器以及持久性单元自身的名称集合。
您可使用 NetBeans IDE 在同一过程当中建立实体类和 REST 风格的 Web 服务,也可使用 IDE 经过现有实体类建立 REST 风格的 Web 服务。在本教程中,将使用 "RESTful Services from Database"(经过数据库生成 REST 风格的服务)向导在相同过程当中生成实体类和 REST 风格的 Web 服务。该向导会自动生成持久性单元。
若是使用的是 MySQL 数据库服务器而不是 JavaDB (Derby),您须要在 IDE 中注册该数据库服务器,而后将 sample 数据库添加到该服务器上。
在本教程中使用 MySQL 数据库服务器:
此时将打开一个对话框,您能够在其中键入 MySQL 服务器的配置详细信息,包括管理员用户名和口令。请参见链接到 MySQL 数据库中的“配置 MySQL 服务器属性”。
本练习的目标是建立一个项目,并经过数据库生成实体类和 REST 风格的 Web 服务。
此部分使用 JavaDB (Derby) 数据库和 jdbc/sample 数据源。JavaDB 包含在 SDK 中。jdbc/sample 数据源是在同时安装 IDE 与 GlassFish 时由 NetBeans IDE 自动生成的。
要建立 REST 风格的 Web 服务,您须要建立 Java Web 应用程序项目。
要建立此项目,请执行如下操做:
选择 "File"(文件)> "New Project"(新建项目)(在 Linux 和 Windows 上为 Ctrl-Shift-N 组合键,在 MacOS 上为 ⌘-Shift-N 组合键)。在 "Categories"(类别)下,选择 "Java Web"。在 "Projects"(项目)下,选择 "Web Application"(Web 应用程序)。单击 "Next"(下一步)。此时将打开新建 Web 应用程序向导。
或者,也能够建立 Maven Web 应用程序。选择 "File"(文件)> "New Project"(新建项目)(在 Linux 和 Windows 上为 Ctrl-Shift-N 组合键,在 MacOS 上为 ⌘-Shift-N 组合键)。在 "Categories"(类别)下,选择 "Maven"。在 "Projects"(项目)下,选择 "Maven Web Application"(Maven Web 应用程序),而后单击 "Next"(下一步)。
Maven 项目重要说明:在 NetBeans IDE 7.2 中,在建立 Maven Web 应用程序时,您没法设置服务器。而需在建立持久性单元以前设置服务器。所以,在建立 Maven Web 应用程序后,请打开项目的 "Properties"(属性)对话框并在 "Run"(运行)属性中设置服务器。要打开项目的 "Properties"(属性)对话框,请右键单击 "Project"(项目)节点,而后从上下文菜单中选择 "Properties"(属性)。
在建立 Java Web 应用程序后,将实体类和 REST 风格的 Web 服务添加到项目中。
生成实体类和 REST 风格的 Web 服务:
若是使用的是 Tomcat,请选择 jdbc:derby://localhost:1527/sample。若是 Derby 数据库服务器未能自动启动,须要从 "Services"(服务)窗口的 "Databases"(数据库)标签中启动它。
MySQL 用户注意事项:您必须建立新的数据源。选择 "New Data Source"(新建数据源),指定任意描述性名称,而后选择jdbc:mysql://localhost:3306/sample 数据库链接。在 MySQL 上建立样例数据库时建立了该链接。
注:"RESTful Web Services from Database"(经过数据库建立 REST 风格的 Web 服务)向导会自动生成 JAXB 标注。若是使用 "Entity Classes from Database"(经过数据库生成实体类)向导为 Java EE 应用程序生成实体类,而且之后可能要经过这些实例类建立 REST 风格的 Web 服务,请确保选中 "Generate JAXB Annotations"(生成 JAXB 标注)框。此外,还能够在运行 "RESTful Web Services from Entity Classes"(经过实体类建立 REST 风格的 Web 服务)向导以前手动将 JAXB 标注添加到实体类中。有关详细信息,请参见用于生成更简单的 REST 风格 Web 服务的 NetBeans。
Spring 框架应用程序:在 web.xml 部署描述符中注册 REST 风格的资源。不要使用 javax.ws.rs.core.Application。
在本教程中,接受默认值,而后单击 "Finish"(完成)。单击 "Finish"(完成)后,IDE 将生成实体类和服务类。在 Java EE 项目中,IDE 还将生成应用程序配置类,这是应用程序的子类。
IDE 如今将生成 REST 风格的 Web 服务。在 IDE 完成后,查看 "Projects"(项目)窗口。生成的实体类位于 entities 包中,服务位于 service 包中。经过数据库建立的 Java EE REST 风格的 Web 服务将实例化每一个服务类中的 EntityManager。这就不须要使用 JPA 控制器类并可生成更简单的代码。
本练习的目标是试验您的应用程序。您将为测试建立一个新的 Web 应用程序,而后使用 IDE 中的向导在新项目中生成测试。
IDE 将在 WebServiceTest 项目中生成文件 test-resbeans.html。IDE 还将自动启动服务器并部署 CustomerDB 应用程序。
若是输出窗口显示错误消息,指出一个或多个类不存在,且项目未构建,则请将 Jersey 库添加到编译时库中。右键单击项目节点,而后选择 "Properties"(属性)。在 "Properties"(属性)树状菜单中选择 "Libraries"(库)。单击 "Add Library"(添加库)并定位到 Jersey 库。
左侧是根资源集。此处将其命名为 entities.customer、entities.discountCodes 和 entities.microMarket。
"Test Output"(测试输出)区域中有 5 个标签。
退出浏览器并返回到 IDE。
Jersey 集成到了 Spring Framework 中。在使用 Spring Framework 建立 Java Web 应用程序时,会自动建立识别 REST 的 Servlet。不过,Spring 3 不包含 aopalliance.jar,REST 风格的 Web 服务须要使用它来注入 EntityManager 对象。
按照经过数据库生成实体类中所述在新建项目向导中建立 Java Web 应用程序时,在选择服务器后,单击 "Next"(下一步)而不是单击 "Finish"(完成)将打开向导的 "Frameworks"(框架)面板。选择 "Spring Web MVC",而后单击 "Finish"(完成)。
注:若是您已建立项目,则能够经过在 "Projects"(项目)窗口中右键单击项目节点,而后在弹出菜单中选择 "Properties"(属性),来添加对 Spring Web MVC 框架的支持。在 "Project Properties"(项目属性)窗口中,选择 "Frameworks"(框架)类别,而后单击 "Add"(添加)并选择 "Spring Web MVC"。
Spring 3 不包含 aopalliance.jar。该应用程序须要使用此库才能注入 EntityManager。要解决问题,您须要下载此 JAR,并将其添加到类路径中。请参见问题 193626 和Spring 论坛。
添加 aopalliance.jar:
或者,也能够在 "Projects"(项目)窗口中右键单击项目的 "Libraries"(库)节点,而后选择 "Add JAR/Folder"(添加 JAR/文件夹)。
您须要使用绝对路径引用。
使用 Spring Framework 建立 Java Web 应用程序并将 aopalliance.jar 添加到项目的类路径后,请运行 "RESTful Web Service from Database"(经过数据库生成 REST 风格的 Web 服务)向导,如生成实体和服务中所述。可是,不会将 REST 风格的资源注册到 javax.ws.rs.core.Application 的子类中。而是使用 web.xml 部署描述符。在全部状况下,Spring Framework 都会生成 web.xml 部署描述符。
有关 NetBeans IDE 中 Spring Framework 项目功能的详细信息,请参见 Spring Framework 简介。
已生成的服务类中可能存在编译错误。若是在向类路径中添加 aopalliance.jar 前建立 REST 风格的服务,则能够查看这些错误。
解决服务类中的编译错误: