3

我有一个要求,根据该要求,我必须创建一个基于 wsdl 文件的 Axis2 Web 服务。我已经得到了 wsdl 文件。我之前一直在使用 wsdl2java 创建 Web 服务客户端,但我不知道如何使用给定的 wsdl 文件创建 Web 服务。有人可以帮助我给出正确的命令或要使用的选项。

另外,我需要在 WAS 6.1 和 JBoss 5.1.0 GA 上发布它,为此应该做些什么。

4

1 回答 1

5

我能够得到答案。在此更新以供其他人参考。

从 WSDL 开始,创建和部署服务

我们从 WSDL 开始,但是如果您没有 WSDL 并且需要从 java 类创建 WSDL,请使用 Java2WSDL 工具来创建 WSDL。您可能已经知道,服务的 WSDL 描述提供了该 Web 服务的精确定义。Axis2 可以处理 WSDL 并生成为您完成大部分工作的 java 代码。在服务器端,我们称它们为 Skeletons,在客户端,我们称它们为 Stubs。

这种使用 Axis2 编写 Web 服务的方法包括四个步骤:

  1. 生成骨架代码。
  2. 添加业务逻辑。
  3. 为 Web 服务创建一个 *.aar 存档(Axis Archive)。
  4. 部署 Web 服务。

Step1:生成骨架代码

要生成骨架和所需的类,您可以使用 Axis2 中提供的 WSDL2Java 工具。该工具位于发行版的 bin 目录中,可以使用提供的脚本(.bat 或 .sh)执行。该工具的参数列表可以在 Axis2 参考文档中找到。

我们示例中 wsdl2java 工具的参数如下。请注意,对于本示例,我们使用 xmlbeans 作为数据绑定框架,生成的代码将放置在“samples”目录中。

wsdl2java.sh -uri ../samples/wsdl/Axis2SampleDocLit.wsdl -ss -sd -d xmlbeans 
-o ../samples -p org.apache.axis2.userguide

这将在“sample/src”目录中生成所需的类,并在“samples/resources/schemaorg_apache_xmlbeans”目录中生成模式类。请注意,这些不是源文件,并且应该在类路径中可用,以便编译生成的类。

第 2 步:实施业务逻辑

现在您应该在骨架类中填充业务逻辑。您可以在“samples/src/org/apache/axis2/userguide”目录中生成的类中找到骨架类-Axis2SampleDocLitServiceSkeleton.java-。让我们将echoString(..)方法填充到骨架中,如下所示。我们的示例WSDL - "samples/wsdl" 目录下的Axis2SampleDocLit.wsdl 包含三个操作:echoString、echoStringArray、echoStruct。要查看其他操作填满后的外观,请参阅Axis2SampleDocLitService 服务的代码清单

public org.apache.axis2.userguide.xsd.EchoStringReturnDocument 
    echoString(org.apache.axis2.userguide.xsd.EchoStringParamDocument param4) throws Exception {
    //Use the factory to create the output document.
    org.apache.axis2.userguide.xsd.EchoStringReturnDocument retDoc = 
           org.apache.axis2.userguide.xsd.EchoStringReturnDocument.Factory.newInstance();
    //send the string back.
    retDoc.setEchoStringReturn(param4.getEchoStringParam());
   return retDoc;

第 3 步:创建存档文件

必须将 Axis2 服务捆绑为服务存档。下一步是将类打包到 .aar(axis2 存档)中并将其部署在 Axis2 中。代码生成了一个ant文件;它将为您生成 Axis2 服务存档。但是,如果您不想使用 ant,可以通过以下步骤创建存档:

编译生成的代码。
将“resources/schemaorg_apache_xmlbeans”xmlbeans 类复制到您的类文件夹。
在生成的文件中,会有一个 services.xml 文件,它是 Axis2 服务的部署描述符。[详细了解它]。将 resources/service.xml 复制到 META-INF/services.xml
(要编写您自己的 service.xml 文件,请参阅使用 Axis2 的主要 API 编写 Web 服务中的小节)

使用类文件夹的内容创建存档。将目录更改为类文件夹并运行 jar -cf service-name.aar 以创建存档。

第 4 步:部署 Web 服务

只需将“.aar”文件放入 servlet 容器的“/webapps/axis2/WEB-INF”中的“services”目录即可部署该服务。我们建议使用 Apache Tomcat 作为 servlet 容器。请注意,只有在 Tomcat 分解了axis2.war 之后,services 目录才可用。但是,最简单的方法是在将axis2.war 复制到webapps 目录后启动Tomcat(如果您尚未启动它)。检查 Axis2 Web 应用程序主页上的“服务”链接(

http://localhost:8080/axis2
) 并查看 Axis2SampleDocLitService 是否显示在已部署的服务下。

我们建议使用展开配置在 WebLogic 和 WebSphere 应用服务器中部署 Axis2 WAR,以支持 Axis2 的热更新/热部署功能。有关详细信息,请参阅应用程序服务器特定配置指南。

注意:Axis2 提供了一种使用 Axis2 Web 应用程序管理模块中的“上传服务”工具部署 Web 服务的简单方法。(有关详细信息,请参阅 Web 管理指南)

完整文章请参见以下链接:http: //axis.apache.org/axis2/java/core/docs/adv-userguide.html

于 2013-04-10T08:27:21.770 回答