快速业务通道

将存储过程封装为EJB组件的方法 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23

调用存储过程

建立了连接之后,可以集中讲述如何调用存储过程了。如封装器方法编码示例中的代码块 2 所示,首先创建一个 DAB StatementMetaData 对象,该对象中有存储过程的规范。下一步,定义要执行的 SQL 语句。在这里将要调用 CLIENTREPORT 过程,该过程需要一个输入参数(用于客户标识)和两个输出参数(用于客户名称和电子邮件地址)。下一步,将参数添加到规范中。对于每个过程参数,都指定了参数名,其数据类型及其参数模式。

代码块 3 创建即将执行的 DAB CallableStatement 对象。CallableStatement 代表可用来执行存储过程的 SQL。创建完对象之后,将其元数据设置成在代码块 2 中指定的形式。然后将 DatabaseConnection(在代码块 1 中创建)与该 CallableStatement 关联。

下一个任务很简单:需要执行 CallableStatement 对象,这将使 DBMS 运行存储过程。但是,在这样做之前,必须通过 EJB 客户机应用程序,将过程的输入参数设置成传入方法的值。代码块 4 中显示了这种逻辑。

检索存储过程的输出并返回到调用程序

在封装器方法编码示例的代码块 5 中,将检索存储过程返回的输出参数。想起来了吗?这些参数代表 Web 站点客户的名称和电子邮件地址。但是,不需要显式地检索存储过程返回的结果集。(这些结果集包含有关客户投资总额和公告板发表信息的数据)。您可能要问:为什么会这样呢?

某些 DBMS 要求,在获得任何输出参数值之前,要从存储过程返回的结果集检索所有需要的值。由于这种要求,在通过 getParameter() 方法进行特别请求之前,CallableStatement bean 不从数据库获得任何输出参数,因为何时从结果集检索数据是由用户控制的。缺省情况下,在执行存储过程之后,将自动检索结果集,并将其存储在高速缓存中。但是,必须显式检索输出参数,并将其存储在高速缓存。

检索完输出参数之后,将 DAB CallableStatement 返回给 EJB 组件的调用程序。该对象现在包含过程返回的所有输出(包括结果集),和帮助调用程序正确分析对象语法的适当的元数据。当我们查看调用会话 bean 封装器方法的样本客户机应用程序时,将看到如何去做。

如果您熟悉 JDBC,可能会问:为什么不在此代码块中显式发出 commit 语句。确实,如果使用的是 JDBC 1.0 样式的连接,可能需要(否则,当在 "finally" 块中关闭数据库连接时,将逆序恢复所做的工作)。但是,使用 DataSource 并接受 WebSphere 缺省的 EJB 组件属性 (TX_REQUIRED),WebSphere 将自动为我们的工作提供事务管理。因此,不再需要显式的 commit 语句。

处理异常与关闭打开的资源

当然,在执行会话 bean 时可能会出错。因此,需要提供异常处理。代码块 6 包括适合于与 EJB 1.0 兼容的 bean 的简单异常处理程序。它只是捕获遇到的任何异常,包括一个适当的错误消息,并将异常作为新的 RemoteException 抛回给调用程序。

另外,该代码块还包含一个 "finally" 块,以确保关闭所有打开的资源。在这里,释放任何与 CallableStatement 对象关联的资源。下一步,除去在工作中所用的任何对连接的 DAB 引用。最后,确保关闭 WebSphere 连接。

构建客户机应用程序

构建了 EJB 封装器方法之后,该集中讲述客户机应用程序了。与 EJB 组件一样,首先展示客户机应用程序的完整代码样本。然后,将详细讲述个别代码块。

这里显示的客户机应用程序 -- ClientAnalysis -- 使用 RMI/IIOP 与 EJB 组件通信。其工作很简单:创建会话 bean,调用它的 lookupClient(...) 方法,处理该方法返回的 DAB CallableStatement 对象,然后除去 bean。将该应用程序编写成处理 CallableStatement 的通用客户机,即,假设事先不知道有关 CallableStatement 内部结构的任何信息。相反,

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号