如果想要使用 WebSphere V5 运行时将 Web 服务部署到 WebSphere V5.0 服务器,并且启用了服务器目标首选项,但是在自底向上 Java bean 或 EJB Web 服务方案中将服务 Web 或 EJB 项目设置为未指定服务器目标,则 Web 服务向导可能会显示以下错误:
从 Java 生成 WSDL 文件时出错。
详细信息:java.lang.ClassNotFoundException: com.ibm.ws.webservices.engine.encoding.SimpleType
当发生此情况时,您将注意到 Web 或 EJB 项目具有空 Java 构建路径并且“任务”视图显示以下错误:
此编译单元间接引用缺少的类型 java.lang.Object。
未构建项目,因为它的类路径不完整。找不到 java.lang.Object 的类文件
要解决此问题,首先:
- 禁用 J2EE 服务器目标首选项(缺省情况下,已禁用此首选项),或
- 如果必须启用 J2EEserver 目标首选项,则需要创建服务 Web 或 EJB 项目以及客户机 Web 项目并使用它们指向 WebSphere Application Server V5.0
然后,重新运行 Web 服务向导。
如果启用了服务器目标首选项并且将客户机 Web 项目设置为未指定服务器目标,或者如果服务 Web 或 EJB 项目将服务器目标设置为 WebSphere Application Server V5.0 并且让 Web 服务向导自动为您创建客户机 Web 项目,则在其它 Web 服务方案中可能会出现相似的空 Java 构建路径问题。
可以通过遵循上面提到的变通方法来避免此问题,或者如果已经处于 Java 构建路径在 Web 或 EJB 项目上为空的这种情况,则可以右键单击项目,选择目标服务器,然后选择修改并选择与当前服务器目标不同的服务器目标。然后,可以返回并将服务器目标修改回 WebSphere Application Server V5.0。使用此变通方法,将再次正确设置 Web 项目的 Java 构建路径。
当工作空间中不存在 EJB 项目时,在单击“EJB 框架”向导的第一页上的完成时,将弹出一条错误消息。要解决此问题,继续到下一页并输入有效 EJB 项目名称和路由器项目名称。或者,在再次尝试该方案之前,退出向导并创建 EJB 项目。
如果右键单击 Web 服务向导生成的代理并选择“Web 服务”->“生成样本应用程序”,然后选择“Web 工具 Java bean JSP”作为测试工具并单击“完成”,则当尝试在生成的样本中运行方法时,可能获得异常。会出现这种情况是因为尚未排除 getEndPoint 和 setEndPoint 方法。可以解决该问题,方法是在从弹出菜单调用“Web 工具 Java bean JSP”时取消选择这两种方法,或者选择 Web 服务样本 JSP 或“通用测试客户机”作为测试工具。或者,如果正使用 SOAP 运行时,则可以从 Web 服务向导调用 Web 工具 Java bean JSP。
在“供应链管理”示例中,如果需要将缺省端口 9080 更改为其它端口,则需要修改 SCM-Sample 项目中的 config.jsp文件,这将需要重新编译。由于构建路径中缺少 webservices.jar,您将在任务列表中找到 2 个编译错误。1. 此编译单元间接引用缺少的类型 javax.xml.rpc.ServiceException 2. 不能解析导入 javax.xml.rpc。要将 webservices.jar 添加到 SCM-Sample 的构建路径中,选择 SCM-sample->属性,选择 java 构建路径,单击“库”选项卡,单击“添加变量”,选择 WAS_50_PLUGINDIR,单击“扩展”以转至 lib 并选择 webservices.jar,单击“确定”,再单击“确定”。
(C) Copyright IBM Corporation 2000, 2003. All Rights Reserved.