我对网络服务的构建很陌生,所以请原谅我的无知。
我得到了一些 .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/