EJB 故障诊断核对表
EJB 核对表列出了各种问题或任务,可以浏览它们以帮助您确定或排除一些阻止您成功地在此产品中完成所需操作的可能问题。
此核对表中的其中一些项只是在故障诊断过程期间您应该需要问自己的问题,还有一些项是提示或指向您可能觉得有用的信息的链接。
跳至下列各节,它们详细描述了您已尝试执行的操作:
有关帮助中开发 EJB 的逐步主题,请参阅:开发企业 bean - 概述 。
有关 EJB 策略和开发的红皮书,请参阅:EJB 2.0 Development with WebSphere Studio Application Developer 。
有关如何测试 EJB 应用程序逻辑的帮助主题,请阅读:为 Enterprise javabeans 创建测试 。
检查对应用程序进行结构化的方式
查看工作空间并统计其中的 EAR 。有多少个企业应用程序呢?
您是如何将“企业应用程序”模块(“J2EE 应用程序客户机”项目、EJB 项目或 Web 项目)映射至企业应用程序项目(EAR 项目)的?
检查下列各项以了解是否有类路径问题
正在使用任何 java 实用程序项目或静态 JAR 文件吗?如果正在使用静态 JAR 文件,则将它们放在何处了?
如果只在 Web 应用程序中使用静态 JAR 文件,则将它们放置在 WEB-INF/lib 中;或者,如果希望在多个“企业应用程序”模块(应用程序客户机、EJB 或 WEB 项目)之间共享这些文件或者只由 EJB 应用程序使用它们,则将它们放置在企业应用程序(EAR)中。
已将所有“项目实用程序 JAR”都映射至它们将被用到的“企业应用程序”模块了吗?
确保已经将 Java 项目添加至企业应用程序部署描述符的“模块”页面上的“项目实用程序 JAR”表单。
您正在获取 java.lang.NoClassDefFoundError 堆栈跟踪(用来在运行时处理 Java 实用程序项目或静态 JAR 文件中包含的类)吗?检查“企业应用程序”模块的 Java JAR 从属项并确保在此页面上查对了所有必需的 JAR 文件(右键单击“项目”>“属性”>“Java JAR 从属项”)。
在开发和测试企业应用程序时,需要考虑使用两个不同的类路径。Java 构建路径是编译器用来查找从属类(仅用于编译目的)的类路径。Java JAR 从属项(MANIFEST.MF 文件的前端)用来在运行时查找位于企业应用程序或它包含的其它“企业应用程序”模块中的从属类。因此,在工作空间中,应用程序可能编译正确,并且您可能会认为它正在运行,但是需要通过以下方式来确保相同的 JAR 在运行时可视:将这些 JAR 添加在“Java JAR 从属项”页面上以避免发生 java.lang.NoClassDefFoundError 错误。
总是首先选择 Java JAR 从属项中的 JAR 文件,这是因为会自动将此这些 JAR 文件添加至 Java 构建路径。
检查下列各项以便了解您的问题是否与规范的局限性有关。
您正在开发 EJB 1.1 或 EJB 2.0 吗?请参阅 EJB 规范 。
您正在开发的 EJB 2.0 是这些本地或远程接口 EJB 吗?
您正在开发 J2EE 1.2 或 1.3 项目吗?请参阅 J2EE 规范 1.2 和 1.3 。
有关会话 bean 的问题
这是无状态会话 bean 还是有状态会话 bean?
会话 bean 正在使用容器管理的事务还是 bean 管理的事务?
正确定义了所有必需的资源引用吗?
您正在尝试将 EJB 部署到服务器中吗?转至相关的帮助主题 。
应用程序使用 EJB 查询语言(QL)吗?
在 WebSphere Application Server 信息中心的此帮助主题 中,更多地了解 EJB QL。
EJBQL 没有出现错误吗?检查 EJB 规范 以了解是否可能完成正在执行的操作。
有关映射 CMP 的问题
您正尝试将 EJB 映射至哪个数据库?
一些 EJB 部署代码直接取决于选择的数据库供应商类型和操作系统。
例如,如果选择 Windows 上的 DB2 并生成 EJB 部署代码,则当想要的运行时目标是 z/OS 上的 DB2 时,可能会失败。确保为 EJB 定义的后端数据库是想要的运行时数据库和操作系统,以便在生成 EJB 部署代码时,该代码对于平台来说是正确的。理想的情况是将开发数据库和生产数据库放在同一个平台上;但是,这不太现实,因此可以在 EJB 部署描述符中创建多个后端并在它们之间进行切换。确保在 EJB 部署描述符中更改了后端之后,再次生成 EJB 部署代码。
验证数据库元数据文件是否没有受到损坏。
查看工作空间中的 EJB 模块后端文件夹。在数据库和模式定义文件中列示的所有表都可以使用它们相应的编辑器打开吗?
如果答案为“是”,则元数据文件正常。
如果答案为“否”,则尝试通过使用“EJB 至 RDB 映射”向导来再次导入数据库信息(右键单击“EJB 项目”>“EJB 至 RDB 映射”>“生成映射”)并使用新的后端信息。
验证是否已经将 EJB 正确地映射至数据库:(下列内容是需要通过思考来确定的“是”或“否”问题)。
所有的 ejb 属性和相应表都映射了吗?
对定义的 EJB 关系正确赋予了各个表之间的实际关系吗?
CMR 正确映射至“外键”约束了吗?
有关消息 驱动的 bean 的问题
正确配置了“查询/主题”和它们的连接工厂吗?
定义了侦听器端口吗?
正确指定了 JNDI 名称吗?
正确指定并使用了 JAAS 安全识别吗(如果连接工厂需要的话)?
因为没有客户机来拦截 EJB 应用程序异常,所以 MDB 没有抛出这些异常。
BMP EJB 是一个高级编程模型。用于调试代码或了解如何编写 BMP 的最佳资源就是有关该主题的书籍。有关指向这些书籍的链接,请参阅本主题顶部的有用的解决方法信息 。
有关部署 EJB 的问题
数据源 JNDI 名称与 EJB 项目或各个 cmp ejb 正确地相关联吗?
在 EJB 部署描述符的 WebSphere 绑定部分中,指定了正确的后端标识吗?
EJB 项目可能具有多个后端并且每个后端都需要生成它的 EJB 部署代码
在 EJB 部署描述符中指定了事务属性和存取意向且易于理解吗?
获取此信息的最佳资源位于“WebSphere Application Server 信息中心”中。请参阅信息中心和库站点 中列示的此方面内容。
生成的代码正确运行吗?
已经尝试过调试或单步执行生成的代码来识别使用的错误代码或查询吗?这不是很容易完成的任务,取决于您的技能水平。
当对 ejb 部署问题进行故障诊断时,首先应该查看工具,然后再调试生成的代码。
这是服务器 配置问题吗?
获取服务器相关信息的最佳资源位于“WebSphere Application Server 信息中心”中。请参阅信息中心和库站点 中列示的此方面内容。您可能需要问自己的问题有:
在控制台中指示了服务器的哪个版本?
这是数据源配置问题吗?
服务器启动顺利吗?
这是服务器运行时问题吗?
获取服务器相关信息的最佳资源位于“WebSphere Application Server 信息中心”中。请参阅信息中心和库站点 中列示的此方面内容。您可能需要问自己的问题有:
检查 Websphere 故障诊断提示
这是类装入问题吗?
这是数据源配置问题吗?
服务器启动顺利吗?
当您尝试将应用程序发布至远程 WebSphere Application Server 时是否产生了“将归档上载至服务器时失败”这一消息?如果运行
Rational Developer 的机器不能对远程服务器的 serverindex.xml 中包含的 IP 地址或主机名执行 ping 操作,则会产生此消息。
要解决此问题,在服务器上修改在 <WAS_HOME>\profiles\<PROFILENAME>\config\cells\<CELLNAME>\nodes\<NODENAME>\serverindex.xml 文件中定义的主机名,并将主机名更改为运行 Rational Developer 的机器可以解析的主机名。
在就有关 EJB 的问题与技术支持 机构联系之前
保存配置并重新启动服务器
创建可复制的测试用例
记下出现的任何错误消息
关于与支持机构的联系
父主题: 配置核对表
相关任务
故障诊断简介
与
IBM 软件支持机构联系