【问题标题】:wsdl2java and axis2 webservice setup and testingwsdl2java 和axis2 webservice 设置和测试
【发布时间】:2015-10-28 22:56:35
【问题描述】:

我对网络服务的构建非常陌生,所以请原谅我的无知。

我收到了一些 .wsdl 文件和一些它导入的 .xsd 文件。

有人告诉我,可以使用 apache axis2 项目中的 wsdl2java.wsdl 文件创建 Web 服务。

我正在尝试构建的 Web 服务期望将数据推送到它,我想测试它是否拥有将数据推送到我创建的 Web 服务的流程。

我的行动依据来自here,但不太确定其中有多少适用。

我在 MacOSX 上,但也可以访问 ubuntu 系统。

到目前为止我采取的步骤是:

cd /directory/of/wsdl/file
wsdl2java.sh -uri tmp.wsdl -d adb -s

这将创建一个build.xml 文件和src 目录

然后我尝试运行

ant 

ant jar.client

在此之后我不太确定该怎么做,以便让网络服务器运行以便我可以对其进行测试...任何建议将不胜感激。

提前致谢。

【问题讨论】:

  • 尝试-ss 选项为服务器生成骨架。
  • 是在wsdl2java.sh -uri tmp.wsdl -d adb -s 行吗?即将其转换为wsdl2java.sh -uri tmp.wsdl -d adb -s -ss?
  • 您将如何测试新服务?
  • 如果您添加该选项,您应该获得 Web 服务的骨架类。然后you deploy it.

标签: java web-services wsdl wsdl2java


【解决方案1】:

在 SOAP 网络服务中:- Web服务的基本概念是它有消费者和生产者。 消费者是消费网络服务的人,生产者是生产网络服务的人。生产者发布其服务,以便消费者可以使用它。它基本上发布了一个 wsdl 文件,以便您可以创建客户端代码或从中创建 jar,并可以直接从您的代码中调用它。您也可以使用soap UI 直接调用Web 服务。如果您也在寻找从 wsdl 生成生产者代码,那还不够好,因为它不会为您提供业务逻辑,您需要自己实现它。这不是推荐的方法。通常,首先编写 Java 实现,并在此基础上创建一个 wsdl,从中创建客户端 jar,供客户端在其代码中使用 Web 服务。直接测试生产者soapui被使用。 如果您想创建生产者,这是一个简单的过程。需要在eclipse中创建一个动态项目——>创建一个类——>在类上使用@WebService(serviceName="xyz"),同样在方法级别定义@WebMethod。将其部署为在服务器上运行,您的 Hello World Web 服务生产者就完成了。

用于创建客户端:-

让我们以网上发布的 wsdl 为例:-

http://www.webservicex.net/geoipservice.asmx?WSDL

首先,您需要创建客户端 jar 或 java 类:-

wsimport -keep -s C:\wsdl http://www.webservicex.net/geoipservice.asmx?WSDL

查看文档或查看 wsdl 中的服务名称。 它将是 GeoIPService。 现在在你的类中调用 webservice 方法:-

package com.soap.client;

import net.webservicex.GeoIP;
import net.webservicex.GeoIPService;
import net.webservicex.GeoIPServiceSoap;
public class SoapWebServiceClient {

    public static void main(String[] args) {
        GeoIPService ipService = new GeoIPService();
        GeoIPServiceSoap gp = ipService.getGeoIPServiceSoap();
        GeoIP ip = gp.getGeoIP("117.198.208.1"); //google.com
        System.out.println(ip.getCountryName());
    }

}

现在对于本地 wsdl 类似,您可以通过以下方式创建类和 jars 使用axis2或简单地使用wsimport

将您的 wsdl 和架构放在一个文件夹中,如下所示:-

C:\wsdl>wsimport -keep -s C:\wsdl C:\wsdl
C:\wsdl>wsimport -clientjar client.jar C:\wsdl

它将为您创建一个客户端。看服务名,同样可以通过java代码测试部署的服务如上图。

要使用soapui 进行测试,您需要下载它并创建一个新的soap 项目。提供任何名称并浏览到存在所有模式和 wsdl 的本地驱动器。它将为您创建所有请求。您需要填写请求参数(“?”)中的值并运行服务。如果一切顺利,它将显示结果。

注意:-

wsimport 是 JAX-WS 参考实现的命令行工具。 JAX-WS RI 使用 JAXB 进行数据绑定。

Axis2 仅在一定程度上实现了 JAX-WS API,因此生成的 Java 工件与 JAX-WS RI 生成的工件相比可能大不相同。此外,Axis2 不使用 JAXB,而是提供了 ADB(默认)、Apache XmlBeans 或 JiBX 的选择来进行数据绑定。最常用的是 xmlbeans 或 JAXB。

【讨论】:

【解决方案2】:

您从发布 URL 中查找 wsdl 文件并对 Web 服务进行逆向工程以生成类型,因此请使用 wsimport

wsimport -d . -p servicesource -keep tmp.wsdl 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-05
    • 2016-07-05
    • 2011-09-15
    • 2013-02-02
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 2011-05-23
    相关资源
    最近更新 更多