java - wsdl2java 和 axis2 网络服务设置和测试

标签 java web-services wsdl wsdl2java

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

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

我听说可以使用 apache axis2 项目中的 wsdl2java.wsdl 文件创建网络服务。

我正在尝试构建的 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

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

提前致谢。

最佳答案

在 SOAP 网络服务中:- Web服务中的基本概念是它有消费者和生产者。 消费者是消费 Web 服务的消费者,生产者是生产 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 类似,您可以通过以下方式创建类和 jar 使用 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 进行数据绑定(bind)。

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

关于java - wsdl2java 和 axis2 网络服务设置和测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31844821/

相关文章:

java - Spring mongo 线程安全

用于格式化 Jun 28, 2015T12 :00:00 AM to date format yyyy-MM-dd'T'HH:mm:ss 的 java 代码

java - 使用自签名证书在 Web 服务上使用 WSIT 安全性 (Glassfish)

java - 启动 JadeGateway 代理时指定代理名称

java - 使用 CXF 和 Tomcat 的 WSDL 导入位置

Java串口配置gnu.io.rxtx.properties窗口

java - 子类化数组

java - Apache CXF : A SOAP 1. 2 消息在发送到仅 SOAP 1.1 端点时无效

Objective-C Sudzc WSDL 生成器替代方案

java - 使用 CXF 生成的客户端时意外的包装器元素