在 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。