在产品中使用 Bean 验证
Java™ Enterprise Edition (Java EE) 7 规范包括 Bean 验证 1.1 API,该 API 是用于在应用程序的所有层中验证 JavaBeans 的标准机制。
关于此任务
在 Bean 验证规范之前,系统在每个层中验证 JavaBeans。开发者将验证直接捆绑至他们的类,或者复制验证代码(通常有点混乱),以防止在每个层重新实现验证。具有一个为应用程序的所有层所共用的实现,会简化开发者的工作并节省时间。
Bean 验证对于应用程序的所有层是公共的。具体地说,Web 应用程序具有以下层:- 表示
此层表示用户如何与应用程序交互以及如何在瘦客户机或富客户机上构建用户。
- 业务
此层协调应用程序、处理命令、制定逻辑决策和求值并执行计算。它还会在两个其他层之间移动和处理数据。EJB 包含 WebSphere® Application Server 中的业务逻辑。
- 数据访问
数据存储在此层中的数据库或文件系统中,并且可从数据库或文件系统中检索数据。业务层处理数据并以可用形式将其发送至用户界面。WebSphere Application Server 支持使用一些数据库和方法来检索数据。此层还会定义持久性。
对于 WebSphere Application Server,这些层是使用产品中开发和部署应用程序时所必需的组件构建并管理的。
通过在多个 Java EE 技术(包括 Java Servlet、Enterprise JavaBeans、Java 持久性 API (JPA) 2.1、Java EE 连接器 API (JCA) 1.7 和 Java ServerFaces (JSF) 2.2)中提供 Bean 验证服务,该产品提供对 Java Platform Enterprise Edition (Java EE) 环境中 Bean 验证 API 的支持。Bean 验证允许这些技术在集成环境和标准环境中维护数据完整性。
企业应用程序开发涉及多个团队,这些团队开发许多在应用程序服务器环境中组装并部署的应用程序和模块。该产品确保独立验证每个应用程序和模块数据。验证完全通过使用针对应用程序和模块定义的约束执行。
下一步做什么
- 数据访问资源:
该产品验证资源适配器归档 (RAR) Enterprise JavaBeans (EJB) 约束是否符合 JCA V1.7 规范。资源适配器可使用内置 Bean 验证约束注释或提供 Bean 验证 XML 配置以指定应用程序服务器的资源适配器配置属性的验证要求。
- 在 JPA 中使用 Bean 验证
JPA 2.1 规范定义的新功能允许您与 Bean 验证 API 无缝集成。JPA 2.1 只需要完成极少工作就可与验证提供程序耦合以验证运行时数据。通过组合这两个技术,您获得了标准化的持久性解决方案并能够执行标准化的数据验证。
- 将 Bean 验证与 JSF 配合使用
JSF 先前能够执行 Bean 验证,但现在它提供对 Bean 验证规范的内置支持。
- 在 Web 容器中使用 Bean 验证
Web 容器提供 ValidatorFactory 实例并通过将其存储在 servlet 上下文属性 javax.faces.validator.beanValidator.ValidatorFactory 中来向 JSF 实现提供该实例。
- 将 Bean 验证与可嵌入容器配合使用。要将 Bean 验证与可嵌入 EJB 容器配合使用,类路径中必须有 javax.validation 类。可使用下面两种方法的其中一种来完成此操作:
- 在类路径中添加位于目录 ${WAS_INSTALL_ROOT}\runtimes\ 的 JPA 瘦客户机。对于 JPA 2.1,使用 com.ibm.ws.jpa-2.1.thinclient_9.0.jar,对于 JPA 2.0,使用 com.ibm.ws.jpa-2.0.thinclient_9.0.jar。有关更多信息,请参阅运行可嵌入容器主题及有关 JPA 的信息。
- 在可嵌入 EJB 容器运行时的类路径中添加第三方 Bean 验证提供程序 Java 归档 (JAR) 文件。
- 当 Bean 验证 1.1 中添加的新 API 方法位于 JPA 对象中时,这些方法将无法正常工作。
- 自动构造/方法验证不可用。
- 无法使用 @Inject 来插入 Validator/ValidatorFactory。
- 创建定制 validation.xml 组件(例如 MessageInterpolator 或 ParameterNameProvider)时,您不能使用 CDI。