广告
返回顶部
首页 > 资讯 > 精选 >EJB中数据验证出现的地方是什么
  • 569
分享到

EJB中数据验证出现的地方是什么

2023-06-03 05:06:46 569人浏览 安东尼
摘要

这篇文章主要介绍“EJB中数据验证出现的地方是什么”,在日常操作中,相信很多人在EJB中数据验证出现的地方是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”EJB中数据验证出现的地方是什么”的疑惑有所帮助!

这篇文章主要介绍“EJB中数据验证出现的地方是什么”,在日常操作中,相信很多人在EJB中数据验证出现的地方是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”EJB中数据验证出现的地方是什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

 我们将讨论数据验证逻辑应该出现在 EJB 应用程序代码的什么位置,而不是专注于验证过程(Java 技术专区的其它地方对此进行了很好的讨论)。在本系列先前的技巧文章中,我们了解了很多组成基于 EJB 技术的应用程序的组件:底层会话 bean 及其业务接口;在实体 bean 及其客户机之间传送数据的值对象以及担任 WEB 层和业务层之间的保护层的各种委派类。验证逻辑十分适合这些组件中的任何一个。实际上,您可以在多个组件中放置验证逻辑,在整个应用程序中分层次地放置它(尽管这样做是不可取的)。因此,我们在此处提出的问题是:在 EJB 应用程序的什么位置放置验证代码最有利?

数据验证的类型
 要确定将验证代码放置在什么位置,第一步是了解您正在处理什么类型的验证。数据格式验证确保所有数据类型(整数、浮点数、字符串等)都是正确的。它还要确认变量都在允许值的范围之内以及实际的模式按预期的匹配。本质上,数据格式验证处理验证的任何方面,这些验证不需要应用特定业务规则

特定于业务的验证基于一组业务规则(例如,确保所提供的 ISBN 号与您数据库中的实际书籍相匹配)。它几乎总是需要对 EJB 层以及应用程序中的其它业务逻辑组件具有访问权。

数据格式验证
 确定了正在处理的验证类型之后,下一步是确定放置代码的位置。在您的 EJB 应用程序中,数据格式验证逻辑可以如下进行放置:

将赋值(setter)方法放置在业务委派上。 
将赋值(setter)方法放置在 bean 的远程接口上。 
将赋值(setter)方法放置在 bean 的消息对象或值对象上。 
对于本示例,我们将假定您正在处理一个包括业务委派的 EJB 应用程序。如果是这样,那么您应该采取某些步骤,确保所有的应用程序客户机(处于 Web 层)都在使用委派进行 bean 访问,而不是直接访问 bean。如果确实是这样,那么您可以将所有数据验证代码都安全地放置在业务委派方法中,如清单 1 所示。

清单 1. 业务委派中的数据格式验证 package com.ibm.library;

import java.Rmi.RemoteException;
import java.util.Iterator;
import java.util.List;
import javax.ejb.CreateException;
import javax.naming.NamingException;

public class LibraryDelegate implements ILibrary {

 private ILibrary library;

 public LibraryDelegate() {
 init();
 }

 public void init() {
 // Look up and obtain our session bean
 try {
 LibraryHome libraryHome =
 (LibraryHome)EJBHomeFactory.getInstance().lookup(
 "java:comp/env/ejb/LibraryHome", LibraryHome.class);
 library = libraryHome.create();
 } catch (NamingException e) {
 throw new RuntimeException(e);
 } catch (CreateException e) {
 throw new RuntimeException(e);
 } catch (RemoteException e) {
 throw new RuntimeException(e);
 }
 }

 // No validation required for accessor (getter) methods

 public boolean checkout(Book book) throws ApplicationException {
 // No validation required here; the object type
 // takes care of it

 try {
 return library.checkout(book);
 } catch (RemoteException e) {
 throw new ApplicationException(e);
 }
 }

 public boolean checkout(List books) throws ApplicationException {
 // Validate list
 for (Iterator i = books.iterator(); i.hasNext(); ) {
 Object obj = i.next();
 if !(obj instanceof Book) {
 throw new ApplicationException(
 ApplicationException.VALIDATION_ERROR,
 "Only Books are allowed in the input list");
 }
 }

 try {
 return library.checkout(books);
 } catch (RemoteException e) {
 throw new ApplicationException(e);
 }
 }

 // And so on...

 public void destroy() {
 // In this case, do nothing
 }
}


 

 对于数据格式验证,您希望使验证逻辑尽可能靠近客户机。数据格式验证经常触发错误页面或要求客户机重新输入格式错误的数据。在这些情况下,您希望花费最少的处理开销迅速向客户机提供反馈。通过将验证逻辑放置在业务委派中,您已经创建了最自然的错误处理方案。当客户机尝试向委派查询带有格式错误的数据时,就会触发错误,请求被直接送回客户机,并就该问题警告用户。

 将验证逻辑放置在 bean 实现中会导致低效率的验证过程。错误消息将从 bean 实现传送到委派,而不是直接从委派传送到客户机,这很象 RemoteException,而不象应用程序异常。除了远程异常的代价之外,委派还将付出 JNDI 查找、RMI 流量以及(可能有)额外的业务逻辑的代价 — 花费在单个验证错误上的力气太多了!

特定于业务的验证
 特定于业务的验证完全是一种不同的情形。业务验证错误通常比数据验证错误更复杂,并很少通过客户机交互获得解决。解决特定于业务的错误要求使用额外的实体和会话 bean 以及数据库访问,这些都必须通过 JNDI 和 RMI 事务进行处理。把这种验证放在业务委派上花费的开销会很大。更好的主意是将这种验证移回 EJB 层,尤其是放置到 bean 的实现类中。

 在将该验证放置在应用程序的这一层时,所有 RMI 流量都应该是本地的;大多数应用程序服务器都将使用 VM 内的优化,以使 bean-到-bean 交互速度极快。您也可以避免 JNDI 访问,因为许多 bean 已经查找了相关 bean 的主(home)接口。此外,您的业务委派已经处理了所有必要的数据格式验证。

到此,关于“EJB中数据验证出现的地方是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: EJB中数据验证出现的地方是什么

本文链接: https://www.lsjlt.com/news/232821.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • EJB中数据验证出现的地方是什么
    这篇文章主要介绍“EJB中数据验证出现的地方是什么”,在日常操作中,相信很多人在EJB中数据验证出现的地方是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”EJB中数据验证出现的地方是什么”的疑惑有所帮助!...
    99+
    2023-06-03
  • html5中表单验证的方式是什么
    今天小编给大家分享一下html5中表单验证的方式是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了...
    99+
    2022-10-19
  • mongodb表中数据导出的方法是什么
    MongoDB提供了多种导出数据的方法,以下是其中一些常用的方法:1. 使用mongoexport工具:mongoexport是Mo...
    99+
    2023-09-11
    mongodb
  • Mysql数据导出的方法是什么
    MySQL数据导出的方法主要有以下几种: 使用命令行工具导出:可以使用mysqldump命令,在命令行中执行类似于以下的命令: ...
    99+
    2023-10-26
    Mysql
  • Hive数据导出的方法是什么
    这篇文章主要介绍“Hive数据导出的方法是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Hive数据导出的方法是什么”文章能帮助大家解决问题。一、数据导出是什么hive是一个依赖Hadoop集群...
    99+
    2023-07-06
  • 数据库中exp导出方法是什么
    本篇内容介绍了“数据库中exp导出方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.功能简介Ex...
    99+
    2022-10-18
  • Vue中插槽发出数据的方法是什么
    今天小编给大家分享一下Vue中插槽发出数据的方法是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。在工作中BUG的出现是在...
    99+
    2023-06-27
  • PHP实现发送短信验证码的方法是什么
    本篇内容主要讲解“PHP实现发送短信验证码的方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PHP实现发送短信验证码的方法是什么”吧!创建好HTML和js文件。创建“Msm.php”文件...
    99+
    2023-06-25
  • C++中数据16进制输出的方法是什么
    这篇文章主要讲解了“C++中数据16进制输出的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++中数据16进制输出的方法是什么”吧!比如我们得到一个数据:double ...
    99+
    2023-07-05
  • 数据库中expdp远程network_link导出的方法是什么
    这篇文章主要讲解了“数据库中expdp远程network_link导出的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“数据库中expdp远程net...
    99+
    2022-10-18
  • Linux系统中sshd服务的两种验证方式是什么
    这期内容当中小编将会给大家带来有关Linux系统中sshd服务的两种验证方式是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。sshd=secure shell,SSH 是 Linux 系统的登录工具,...
    99+
    2023-06-28
  • kafka保证数据不丢失的方法是什么
    Kafka通过以下方法来保证数据不丢失:1. 持久化:Kafka使用持久化日志来存储所有的消息。消息在被写入到磁盘之前会被持久化,确...
    99+
    2023-09-14
    kafka
  • oracle按用户导出数据的方法是什么
    Oracle提供了多种方法来按用户导出数据,以下是其中几种常用的方法:1. 使用SQL Developer:Oracle SQL D...
    99+
    2023-09-08
    oracle
  • mongodb数据表导入导出的方法是什么
    MongoDB提供了命令行工具mongodump和mongorestore来进行数据表的导入和导出。具体方法如下:1. 导出数据表:...
    99+
    2023-09-12
    mongodb
  • 数据库中出现no database selected是什么意思?
    今天小编给大家分享的是数据库中出现no database selected是什么意思,很多人都不太了解,今天小编为了让大家更加了解,所以给大家总结了以下内容,一起往下看吧。一定会有所收获的哦。no...
    99+
    2022-10-18
  • oracle循环取出表中每条数据的方法是什么
    要循环取出表中每条数据,可以使用游标(cursor)的方式来实现。以下是一个示例的方法:1. 首先,声明一个游标变量,并将查询结果赋...
    99+
    2023-08-15
    oracle
  • sql数据库表导入导出的方法是什么
    SQL数据库表导入导出的方法有多种,常用的方法有以下几种:1. 使用SQL命令行工具导入导出:可以使用命令行工具如MySQL的`my...
    99+
    2023-10-08
    sql数据库
  • Java中常用数据类型的输入输出方法是什么
    这篇文章主要介绍Java中常用数据类型的输入输出方法是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、Char型这里说的char型指的是只输入一个字符的情况。1.1  输入格式:import ...
    99+
    2023-06-22
  • SAP客户主数据的地图集成方法是什么
    这篇文章主要介绍“SAP客户主数据的地图集成方法是什么”,在日常操作中,相信很多人在SAP客户主数据的地图集成方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”SAP客户主数据的地图集成方法是什么”的疑...
    99+
    2023-06-05
  • mssqlserver数据库导出到另外一个数据库的方法是什么
    本篇文章为大家展示了mssqlserver数据库导出到另外一个数据库的方法是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。下文给大家介绍mssqlserver数...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作