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

Abh*_*oor 3 publish wsdl axis2 web-services wsdl2java

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

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

Abh*_*oor 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服务.

第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
Run Code Online (Sandbox Code Playgroud)

这将在"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;
Run Code Online (Sandbox Code Playgroud)

第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
Run Code Online (Sandbox Code Playgroud))并查看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