`
michael_paul
  • 浏览: 173443 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

创建 Webservice client

阅读更多
从 WSDL 创建 Web 服务客户机

在本部分,我们将了解如何从 WSDL 创建 Web 服务客户机。JAX-WS 提供了名为 wsimport 的工具,用于从 WSDL 生成 JAX-WS 可移植构件。生成的可移植构件通常包括以下内容:

    * SEI
    * 服务(需要实现的服务实现类)
    * 从模式类型生成的 JAXB 生成类
    * 从 wsdl:fault 映射的异常类(如果有)

客户机使用生成的构件调用 Web 服务。Web 服务客户机并不需要处理任何 SOAP 格式(如创建或解析 SOAP 消息)。这将由 JAX-WS 运行时予以处理,此运行时将使用生成的构件代码(JAXB 生成类)。Web 服务将处理 Java 代码(JAXB 生成类),从而减少了开发 Web 服务客户机和对 Web 服务调用操作的工作。

先使用 wsimport 工具从 OrderProcess WSDL 生成 JAX-WS 构件。然后要创建 Web 服务客户机,后者使用生成的构件代码调用订单处理 Web 服务。要生成 JAX-WS 构件,贤进入到 JAXWS-Tutorial 目录,并运行清单 12 中所示的 wsimport 命令。不过,进行操作前,请确保已经按照生成 JAX-WS 构件部分中的步骤 5 所述的方法,通过运行 OrderWebServicePublisher 发布了 Web 服务。

清单 12. 用于生成供 Web 服务客户机使用的 JAX-WS 构件的 wsimport 命令

                   
wsimport -keep -p com.ibm.jaxws.tutorial.service.client
http://localhost:8080/OrderProcessWeb/orderprocess?wsdl
       


-keep 选项指示保留生成的文件,-p 选项指定需要在其中生成构件的包名称。http://localhost:8080/OrderProcessWeb/orderprocess?wsdl 指定 WSDL 文件的位置。以下构件是从 OrderProcessService WSDL 生成的:

    * JAXB 类(Address、Customer, OrderBean 和 OrderItem):通过读取 OrderProcessService WSDL 中定义的模式定义生成
    * RequestWrapper 和 ResponseWrapper 类(ProcessOrder 和 ProcessOrderResponse):包装 document literal-wrapped 样式类型的输入和输出
    * 服务类 (OrderProcess):客户机用于请求 Web 服务的类
    * 服务接口 (OrderProcessService):包含着用于服务实现接口的类

接下来了解一下如何使用上面生成的构件创建 Web 服务客户机。com\ibm\jaxws\tutorial\service\client 文件夹中提供了一个示例参考代码。Web 服务客户机的代码如清单 13 中所示。

清单 13. 订单处理 Web 服务客户机的代码清单

                   
package com.ibm.jaxws.tutorial.service.client;

import java.net.MalformedURLException;
import java.net.URL;

import javax.xml.namespace.QName;

public class OrderClient {

final QName qName = new QName(
"http://jawxs.ibm.tutorial/jaxws/orderprocess", "OrderProcess");

public static void main(String[] args) {
if (args.length != 1) {
System.out
.println("Specify the URL of the OrderProcess Web Service");
|-------10--------20--------30--------40--------50--------60--------70--------80--------9|
|-------- XML error:  The previous line is longer than the max of 90 characters ---------|
System.exit(-1);
}
URL url = getWSDLURL(args[0]);
OrderClient client = new OrderClient();
client.processOrder(url);
}

private static URL getWSDLURL(String urlStr) {
URL url = null;
try {
url = new URL(urlStr);
} catch (MalformedURLException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
return url;
}

public void processOrder(URL url) {

OrderProcess orderProcessingService = new OrderProcess(url, qName);

System.out.println("Service is" + orderProcessingService);

OrderBean order = populateOrder();

OrderProcessService port = orderProcessingService.getOrderProcessPort();
OrderBean orderResponse = port.processOrder(order);

System.out.println("Order id is " + orderResponse.getOrderId());

}

private OrderBean populateOrder() {

OrderBean order = new OrderBean();
Customer customer = new Customer();
customer.setCustomerId("A123");
customer.setFirstName("John");
customer.setLastName("Smith");
order.setCustomer(customer);

// Populate Order Item.
OrderItem item = new OrderItem();
item.setItemId("11");
item.setQty(11);

order.getOrderItems().add(item);
return order;
}
}
       


上面列出的 Web 服务客户机代码执行以下任务:

    * 通过传入 OrderProcess Web 服务的 WSDL URL 和服务的 QName 创建 OrderProcess 类的实例。
    * 创建 OrderBean 的实例,并使用 populateOrder() 方法填充订单信息。
    * 对服务调用 getOrderProcessPort(),以检索到服务的代理(也称为端口)。端口实现服务所定义的接口。
    * 调用端口的 processOrder 方法,并同时传入在上面的第二个列表项目中创建的 OrderBean 实例。
    * 从服务获得 OrderBean 响应并输出订单 ID。
分享到:
评论

相关推荐

    spring+webserviceClient

    【标题】"spring+webserviceClient"涉及到的关键技术是Spring框架与Web服务客户端的整合,主要探讨如何在Spring环境中创建和使用Web Service客户端。Web Service是一种基于SOAP协议的跨平台、跨语言的通信方式,而...

    MyEclipse基于JAX-WS开发Webservice+WebserviceClient客户端调用.zip

    在这个压缩包中,"MyEclipse6.5上基于JAX-WS开发Webservice+WebserviceClient客户端调用.doc"很可能是一份详细的步骤指南,涵盖了如何在MyEclipse 6.5版本中使用JAX-WS创建Web服务,以及如何生成和使用客户端代码来...

    Eclipse根据wsdl文件自动生成webservice client图解

    1. **导入WSDL文件**:首先,打开Eclipse,选择“File” -> “New” -> “Other”,然后在搜索框中输入“WSDL”,选择“Web Service Client”。点击“Next”,在“Location of WSDL File”中导入你的WSDL文件。这...

    WebServiceClient.rar

    `WebServiceClient`可能是此类客户端的实现,它可以创建请求,封装参数,发送到指定的WebService端点,并处理返回的响应。 4. **使用Java实现**:Java中的WebService客户端通常需要以下步骤: - **导入库**:添加...

    WebServiceClient

    在`WebServiceClient`中,可能包含了使用wxPython创建的用户界面,使得用户能够直观地输入参数、查看结果和管理客户端的行为。通过GUI,非程序员也能方便地使用这个工具,提高了其易用性。 5. **Web服务客户端的...

    webservice client (springmvc +mybatis+mysql +cxf )

    【标题】"webservice client (springmvc +mybatis+mysql +cxf )" 是一个基于SpringMVC、MyBatis、MySQL数据库以及Apache CXF框架构建的Web服务客户端项目。这个项目整合了多种技术,用于创建能够消费Web服务的客户端...

    WebServiceServer和Client(可运行)

    **WebServiceClient部分:** 客户端是Web服务的消费者,它调用服务提供的操作。创建客户端通常包括以下步骤: 1. **获取WSDL**:客户端首先需要知道服务的WSDL地址,从这个WSDL中解析出服务的接口和方法信息。 2....

    JAVA WebServie Client.docx

    2. **创建WebServiceClient实例**:在Java项目中,可以通过创建`WebServiceClient`对象来实现与WebService服务器之间的通信。 - 示例代码: ```java WebServiceClient client = new WebServiceClient(); ``` 3....

    qt webService Client源码

    在提供的压缩包"qsoapTest"中,我们可以推测这是包含一个Qt项目,用于测试和演示如何使用qsoap库创建一个WebService客户端。这个项目可能包含了以下关键文件: 1. 主要源代码文件(如main.cpp):这是项目的入口点...

    Webservice Client and Server demo in PHP

    这些文件提供了一个实践性的教程,展示了如何创建和调用不同类型的Web服务。 【描述】:这个项目包含了一系列PHP文件,它们演示了如何在PHP中创建和使用Web服务。文件包括客户端类和服务器端实现,以及一些具体的...

    webservice&client;

    为了更好地理解这个实例,我们可以查看`webservice&client`这个压缩包中的文件。它很可能包含以下部分: - **服务端代码**:实现了Web服务接口的Java类,可能还有相关的配置文件。 - **客户端代码**:包含了调用Web...

    HelloWorld WebService Client

    【HelloWorld WebService Client】是入门级的示例项目,主要展示了如何创建并使用一个简单的Web服务客户端。在Web服务的世界里,客户端是能够与服务器交互、调用服务功能的应用程序。这个项目的核心目标就是教导...

    使用C#创建webservice及三种调用方式

    var client = new ServiceReference1.WebService1Client(); client.Open(); string reply = client.HelloWorld(); client.Close(); ``` 三、注意事项 - Web服务的版本控制:当更新Web服务时,需要考虑对现有...

    webservice client tools 客户端工具

    首先,让我们关注“webservice client tools”。这些工具的主要任务是生成能够调用Web服务的客户端代码。通过使用这些工具,开发者可以避免手动编写复杂的SOAP(Simple Object Access Protocol)消息和HTTP请求,极...

    Axis2 webservice Client plugin

    标题中的“Axis2 WebService Client plugin”指的是一个用于MyEclipse集成开发环境的插件,其主要功能是帮助开发者创建和使用Axis2 Web服务客户端。Axis2是Apache软件基金会的一个开放源码项目,是一个高性能、灵活...

    php调用webservice及myeclipse创建webservice实例

    在提供的压缩包文件中,"php+webservice"很可能包含了PHP代码文件,用于演示如何调用由MyEclipse创建的Web服务。这些文件可能包括一个PHP脚本,该脚本使用SoapClient类与Web服务交互,以及MyEclipse项目中的源代码和...

    sh_webservice_client.zip

    sap 提供wsdl文件 我们分解wsdl文件创建客户端 webservice client。 webservice client 通过SAP 提供的用户名密码的方式 调用 SAP 的 webservice 代码,亲测可用有注解说明。要想使用此代码,必须配置maven eclipse...

    Wcfstorm Webservice Client

    **WcfStorm Webservice Client** 是一款专为开发者设计的强大工具,主要用于SOAP和WebService客户端的开发与测试。这款工具在IT行业中备受推崇,因为它极大地简化了与SOAP服务交互的过程,提高了开发效率。以下是对...

    MyEclise10创建Webservice

    【MyEclipse10创建Webservice】 在IT行业中,Web服务是实现不同系统间数据交换和功能调用的重要手段,而Webservice就是一种基于互联网的、开放的、平台无关的接口标准。MyEclipse作为一款强大的Java集成开发环境,...

Global site tag (gtag.js) - Google Analytics