此规则根据以下条件检测 JAX-RPC Web Service 是否存在:
- 文件 web-services.xml 的存在
- 同一文件夹中文件 weblogic-webservices.xml
和文件 webservices.xml 的存在
手册解决方案
要根据 WebLogic J2EE 网络服务部署描述符生成 JAX-RPC 网络服务,必须使用特定任务手动创建 Ant 脚本。 IBM® Ant 任务手动创建脚本。 如果 IBM Ant 生成的文件不存在,则应将脚本添加到项目的根文件夹中。 这些任务将 处理根据部署描述符生成 JAX-RPC 网络服务的工作。
规则属性
您必须为规则属性提供正确的值,以确保分析结果准确无误。 这些属性应 并根据应用程序的上下文进行适当配置。 此规则的属性如下:
- 所生成 Ant 脚本的名称:
指定新生成的 Ant 脚本的名称。脚本名称必须是有效的文件名。 名称必须是有效的文件名。 该值不得包含任何正反斜线。 脚本将放在项目的根文件夹中。
缺省值:build-ibm-ws.xml
- 生成文件夹名称:
指定生成工件所在文件夹的名称; 该值不得包含任何正斜杠或反斜杠。 生成文件夹将位于项目的根文件夹中。
缺省值:ibm-ws-gen
Ant 类路径
ant 类路径是从 Eclipse 项目计算的。
验证对于编译必需的所有元素是否都在
Eclipse 类路径上很重要。
web-services.xml 文件中定义的 JAX-RPC 服务
根据 web-services.xml 中定义的信息以及服务类型,会生成
Ant 脚本及用来表示 Web Service 端点接口的可能附加 Java 代码,以重新生成 JAX-RPC 服务。
- 受支持的组件
只有无状态会话企业豆 (<stateless-ejb>) 和 Java (R) (<java-class>) 组件 才能被识别和转换。
- 无状态 EJB 组件:
Enterprise JavaBeans (TM) (EJB) JAR 文件,如 <ejb-link> 元素的路径属性中定义的 JAR 文件必须存在于项目中。 自动修复将 扫描 EJB JAR 文件,并根据 EJB 远程类生成一个新的服务端点接口 (SEI) 类。 (SEI) 类。
SEI 接口与 EJB 远程接口的不同之处在于 类必须扩展
java.rmi.Remote
, 每个方法都必须抛出异常、
java.rmi.RemoteException
.
Java 自动修复将在 EJB 远程接口上的反射来生成新的 SEI 。
因此,请确保 Eclipse 项目的类路径包括 所需的所有必要类、JAR 文件和目录。 以成功加载 EJB 远程类。
SEI 必须在生成文件夹内的 sei 文件夹中生成。 用户在规则中提供的生成文件夹中生成。 properties. SEI包与EJB远程接口包相匹配,SEI名称将与EJB远程接口名称相同。 包相匹配,SEI 名称将与 EJB 远程接口相同 此外,新的 SEI 文件夹将被添加到项目类路径中。 会被添加到项目类路径中。
- Java 类组件:
与 EJB 组件类似,自动修复将从属性 <class-name> 中定义的 类生成一个服务端点接口。 从属性 <class-name> 中定义的 Java 类生成服务端点接口。
- 所生成 Ant 目标:
生成的 Ant 脚本包含以下目标 生成 WSDL 文件和 JAX-RPC 服务。 生成 WSDL 文件和 JAX-RPC 服务的目标。
WSDL 生成目标的名称是 genWSDL_ssss, 其中,ssss 是 JAX-RPC 服务的名称,该名称在 <web-service> 的 name 属性字段中提供。 是在 <web-service> 元素的 name 属性字段中提供的 JAX-RPC 服务名称。 元素的 name 属性字段中提供的 JAX-RPC 服务名称。
服务生成目标的名称为 genService_pppp, 其中,pppp 是来自 name 元素的 name 属性的组件名称。 属性中的组件名称。 <java-class>属性中的组件名称。
自动修复不会使用其他元素(如 中提供的信息,如 <处理程序链>、<类型>、<操作>、<安全> 等、 <操作>、<安全性> 等。
webservices.xml 文件中定义的 JAXRPC 服务
根据 webservices.xml 文件中定义的信息以及服务类型,会生成 Ant 脚本以重新生成 JAX-RPC 服务。
- 所生成 Ant 目标:
所生成 Ant 脚本包含用于生成 WSDL 文件和 JAX-RPC 服务的目标。
只有在以下情况下才会生成 WSDL 生成目标 元素中定义的 WSDL 文件时,才会生成 WSDL 生成目标、 <wsdl-file> 中定义的 WSDL 文件时,才会生成 WSDL 生成目标。
如果已创建,WSDL 生成目标的名称为 名称为 genWSDL_ssss, ,其中 ssss 是在 <webservice-description-name> 元素中定义的服务名称。 元素 <webservice-description-name> 中定义的服务名称。
服务生成目标的名称为 genService_pppp, 其中 pppp 是端口名称,由 元素 <port-component-name> 所定义的端口名称。
IBM WebSphere Application Server Ant 任务
WebSphere® Application Server 包含用于为 JAX-RPC 服务生成必要工件的 Ant 任务(例如 java2wsdl 和 wsdl2java)。 所生成
Ant 脚本使用这些任务来构建服务。
有关这些任务的其他信息可从
WebSphere Application Server 文档获取。
运行 Ant 脚本
制作完成 Ant 脚本后,请查看该脚本,并在必要时添加其他自定义功能。
请参阅 Application Server 文档,以了解 IBM Ant 任务的其他定制。
必须使用 WebSphere Application Server 随附
的 Ant 工具来运行该脚本。 可以从以下位置运行 IBM Ant 脚本
:
- Windows® 操作系统上的 WAS_HOME\bin\ws_ant.bat
- UNIX® 操作系统上的 WAS_HOME\bin\ws_ant.sh
例如:c:\IBM\AppServer\bin\ws_ant.bat -f
c:\eclipse\MyProject\ibm-ws-gen.xml genService_TestService
运行 Ant 目标后,生成的工件将存放在生成文件夹中。 生成文件夹中。 代码和部署描述符,然后将这些工件添加到他们的 模块。
建议:考虑迁移到 JAX-WS
如果您已经在迁移或现代化的过程中对 JAX-RPC 网络服务进行了更改,我们强烈建议您考虑迁移到 JAX-WS ( Java API for XML Web Services)。
JAX-WS 是 JAX-RPC 的后续版本,具有多项优势:
- 现代化的应用程序接口设计,可更好地支持注释并与 Java EE
- 提高与其他网络服务框架和标准的互操作性
- 在现代应用服务器和集成开发环境中提供更好的工具和支持
- 长期可行性,因为 JAX-RPC 被认为是一种传统技术
现在迁移到 JAX-WS 可以减少未来的技术债务,并使您的应用程序符合当前的 Java 网络服务标准。
有关从 JAX-RPC 迁移到 JAX-WS 的指导,请参阅 Web 服务迁移方案:JAX-RPC 到 JAX-WS 和 JAXB 文档。