本主题解释如何配置和应用 EJB 客户端工具,该工具调用部署在 J2EE 应用程序服务器上的 EJB 远程对象的方法。本章包含:
了解 EJB 客户端工具
EJB 客户端通过 JNDI 查询或从对象数据库获取 EJB 远程对象。然后可以使用它来调用该对象上的方法。然后可以将这些方法的返回值传递给链式工具,如 Diff 或对象数据库。
为了在 EJB 远程对象的特定方法上调用 EJB 客户端工具,您必须告诉工具远程对象的源。EJB 远程对象可以通过 JNDI 查询从远程目录获得,也可以从 SOAtest 的本地对象数据库获得。在后一种情况下,EJB 远程对象应该作为以前 EJB 客户端工具调用的返回值放入对象数据库中。
EJB 客户端工具必须至少通过 JNDI 查询一次获得 EJB 远程对象。随后,您可以通过对象数据库获得相同的 EJB 远程对象。这避免了对同一个 EJB 远程对象的多个 JNDI 查询。
对于 EJB 2.0 中的有状态 EJB,使用链式对象数据库工具来存储返回的 EJB 对象。这使得它们的方法可以在随后的测试中调用。
配置 EJB 客户端工具
EJB 客户端工具的选项将根据 EJB 远程对象从何处(从 JNDI Query 或从 Object Data bank)获得而有所不同。
从 JBDI 查询获得 EJB 远程对象
为了从 JNDI 查询中获取 EJB 远程对象,请选择来自 EJB Remote Object Source 区域的 JNDI Query 单选按钮,并配置以下参数:
- JNDI Properties: 允许从 JNDI 查询配置远程目录的属性。可使用以下选项:
- Initial Context Factory: 指定上下文工厂,如
org.jnp.interfaces.NamingContextFactory
。 - Provider URL: 指定 JNDI 查询的位置,如
cheetah.parasoft.com
。还指定 User 和 Password。 Object Name: 指定 JNDI 目录中对象的名称,例如
ejb/CartHomeRemote
。这个对象应该是您在 EJB 远程对象面板的类字段中输入的类的实例。您可以在 J2EE 服务器配置中找到绑定到 JNDI 目录的 EJB 对象的 JNDI 名称。初始上下文工厂类应该包含在 SOAtest 的类路径中
- EJB Remote Object: 允许您为调用 EJB 远程对象的远程方法配置属性。可使用以下选项:
Class: 指定预期从 JNDI 查询或对象数据库返回的对象的类。例如:
.com.parasoft.soatest
bookstore.cart.CartRemote.
如果类在 SOAtest's 类路径中,则 Method 选项框将自动填充该类的公共方法。Method: 指定要调用的方法。如果在 Calss 字段中指定的类在 SOAtest's 类路径上找到,则 Method 复选项将自动填充可用方法。
- Method Arguments: 如果所选方法接受参数,则方法参数子面板将提示您为远程方法的每个参数指定 Input Type 和 Parameter Input 。
- 对于 Java 基本类型(java.lang.String and java.util.Date),可使用以下输入类型:
- Literal: 将输入值指定为字符串。例如,如果 Parameter Type 为 Java 基本类型
int
,则以下将是一个有效的输入10
、12345
。对于 Java 浮点类型:7.62
,105.3
等。 - Parameterized: 如果该工具至少有一个数据源“可见”,则可以使用此输入。选择所需的数据源列作为输入。
- Scripted: 将参数指定为自定义方法的返回值。
- Literal: 将输入值指定为字符串。例如,如果 Parameter Type 为 Java 基本类型
- 对于其他 Java 类型,可以使用以下输入类型:
- Interpreted: 允许使用表格输入(CSV、Excel 等)实例化将用作远程方法参数的 Java 对象。有关更多详情,请查阅 使用解释型数据源。
- Scripted: 将参数指定为自定义方法的返回值。
- 对于 Java 基本类型(java.lang.String and java.util.Date),可使用以下输入类型:
从对象数据库获取 EJB 远程对象
在从对象数据库获取 EJB 远程对象(以便在后续测试中使用)之前,必须首先在对象数据库中存储一个返回值。为此:
- 右键单击 EJB 客户端工具节点,然后选择 Add Output> Object Output> New Output> Object Data Bank。
- 在对象数据库控件面板汇总,指定唯一的 Column Name ,稍后可以通过该列名查询该值。
一旦将值存储在对象数据库中,请从 EJB 客户端工具的 EJB Remote Object Source 子面板中选择 Object Data Bank 单选按钮。
- Object Data Bank Properties: 允许从对象数据库为远程目录配置属性。可使用以下选项:
- Column Name: 为对象数据库中存储的值选择适当的列名。
- EJB Remote Object: 允许您为调用 EJB 远程对象的远程方法配置属性。可使用以下选项:
Class: 指定预期从 JNDI 查询或对象数据库返回的对象的类。例如:
如果类在 SOAtest's 类路径中,则 Method 选项框将自动填充该类的公共方法。com.parasoft.soatest.bookstore.cart.CartRemote.
Method: 指定要调用的方法。如果在 Class 字段中指定的类在 SOAtest's 类路径上找到,则 Method 复选项将自动填充可用方法。
- Method Arguments: 如果所选方法接受参数,则方法参数子面板将提示您为远程方法的每个参数指定 Input Type 和 Parameter Input 。
- 对于 Java 基本类型(java.lang.String and java.util.Date),可使用以下输入类型:
- Literal: 将输入值指定为字符串。例如,如果 Parameter Type 为 Java 基本类型
int
,则以下将是一个有效的输入10
、12345
。对于 Java 浮点类型:7.62
,105.3
等。 - Parameterized: 如果该工具至少有一个数据源“可见”,则可以使用此输入。选择所需的数据源列作为输入。
- Scripted: 将参数指定为自定义方法的返回值。
- Literal: 将输入值指定为字符串。例如,如果 Parameter Type 为 Java 基本类型
- 对于其他 Java 类型,可以使用以下输入类型:
- Interpreted: 允许使用表格输入(CSV、Excel 等)实例化将用作远程方法参数的 Java 对象。
- Scripted: 将参数指定为自定义方法的返回值。
- 对于 Java 基本类型(java.lang.String and java.util.Date),可使用以下输入类型:
查看测试执行期间使用的数据库变量
可以配置控制台视图(Window> Show View> Console),显示测试执行期间使用的数据库变量。有关更多详情,请参见 控制台视图。
使用回归控制:
若要为一组 EJB 客户端工具测试创建或更新回归控件,请右键单击包含测试的测试套件,并从快捷菜单中选择 Update 或 Create Regression Controls 。如果正在使用数据源,则选择 Multiple Controls 。
调用部署在 IBM WebSphere Application Server (WAS) 上的 EJBs
若要使用 SOAtest附带的 Sun JRE 调用部署在 WebSphere Application Server (WAS) 上的 EJB,需要进行一些特殊配置。本文档中解释的所有其他配置设置都适用。若要配置 SOAtest,请完成以下步骤:
使用 Sun 初始上下文工厂(
com.sun.jndi.cosnaming.CNCtxFactory
): 此设置应该在 EJB 客户端的 JNDI 属性中配置。该设置要求Sun's j2ee.jar
位于 SOAtest 类路径上。这个.jar
文件可以从 Oracle Java 站点获得。有关将类文件添加到 SOAtest的更多信息,请查阅 系统属性设置。- 在 EJB 客户端的 JNDI 属性中,使用提供程序 URL,该 URL 格式为
corbaloc:iiop:WAS:2809
,其中WAS
是您的 WebSphere 应用程序服务器的位置。(例如,corbaloc:iiop:bison:2809
) - 在 EJB 客户端的 JNDI 属性中,使用以下格式指定对象名称:
cell/nodes/[node]/servers/[server]/YOUR_EJB_OBJECT_NAME
(例如,cell/nodes/bisonNode01/servers/server1/ejb/BasicCalculator
)
使用 XML 编码器/解码器 和 EJB 客户端
XML 编码器和 XML 解码器是互补的工具,允许您将 Java Bean 对象图传输到 XML 表示(XML 编码器)或将兼容的 XML 输出传输到 Java Bean(XML 解码器)。
在创建 EJB 测试时,XML 编码器和 XML 解码器工具特别有用。XML 编码器可用于将 EJB 工具的 Java Bean 对象输出转换为 XML 格式。这个输出可以由其他 SOAtest 工具(如 XML 转换器)进一步操作,以提取或修改您感兴趣的 XML 文档的某些部分。然后,在 XML 解码器的帮助下,可以将修改后的 XML 输出转换回 Java Bean 格式。可以将结果链接到对象数据库,从而使后续测试能够使用修改后的 Java Bean 对象作为工具输入。
请记住,EJB 工具允许您方便地将链接工具添加到其 XML 或对象输出中。EJB 工具的 XML 输出是由 XML 编码器转换的对象输出。