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

标签 web-services wsdl axis2 publish wsdl2java

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

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

最佳答案

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

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

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

用Axis2编写Web服务的这种方法涉及四个步骤:


生成框架代码。
添加业务逻辑。
为Web服务创建一个* .aar存档(Axis存档)。
部署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


这将在“ 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服务”中的小节)

使用类文件夹的内容创建档案。将目录更改为class文件夹,然后运行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

关于web-services - 从WSDL文件创建Web服务(不是Web服务客户端),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15502065/

相关文章:

java - 字符是否在字符集中? Java 中 Web 服务的验证

c# - .NET Web 服务无法生成临时类

java - 这个 WSDL 有效吗?

java.lang.NoClassDefFoundError : org/apache/axis2/AxisFault When axis2-kernel-1. 5.4.jar在类路径中

web-services - 继续运行 Go Server 作为后台进程

c++ - 是否可以使用 HTTPS 证书进行许可?

java - 创建一个基本的网络应用程序

.net - 了解 httpGetEnabled 和 Mex 绑定(bind)

java - Axis2 与 WSDL 2.0 教程

java - 可以在 Eclipse 中为每个项目指定 Java 警告设置吗?