从WSDL文件创建Web服务(而不是Web服务客户端)

时间:2013-03-19 14:21:42

标签: web-services wsdl axis2 publish wsdl2java

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

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

1 个答案:

答案 0 :(得分:5)

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

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

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

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

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

    要生成框架和必需的类,可以使用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之后,服务目录才可用。但是,最简单的方法是在将axis2.war复制到webapps目录后启动Tomcat(如果尚未启动它)。检查Axis2 Web应用程序主页上的“服务”链接(

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

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

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

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