`
michael_paul
  • 浏览: 170737 次
  • 性别: 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。
分享到:
评论

相关推荐

    Java WebService 简单实例-客户端TheClient.rar

    1、创建【Web Service Project】,命名为【TheClient】。 2、命令提示窗口执行生成命令。 格式:wsimport -s "src目录" -p “生成类所在包名” -keep “wsdl发布地址” 示例: wsimport -s G:\\...

    sh_webservice_client.zip

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

    webservice调用天气预报

    使用idea创建的webservice client调用各个城市省份的天气预报情况

    redis和webservice的发布接口

    redis实现增删改查,webservice创建于发布接口和调用resfule的风格

    C# WebService创建、发布、调用的实例讲解

    假设A是Client端,B是webservice服务端,用户通过http协议向服务器发送soap请求,webservice返回客户端XML格式的数据。 客户端由代理对象(proxy)负责与webservice的通信。所以在客户端使用webservi

    MagentoXtender API.NET Webservice Client-开源

    MagentoXtender .NET Web服务客户端是一个开源.NET库,可使用XML-RPC连接到Magento Webshop的Web服务。 该模块使您能够创建可以与magento网上商店进行通信的.NET应用程序。

    WebService-Reactio:API客户端的React

    名称 WebService :: Reactio-Reactio... 创建WebService :: Reactio的实例。 %params必须具有以下参数: api_key Reactio的API密钥。 您可以在项目设置页面上获取API密钥。 组织 Reactio的组织ID。 这与您的React

    java jenkins web service client

    java 语言的jenkins web service client。 可以使用代码创建、修改、删除Jenkins job

    跨项目调用webservice接口

    a) 第一个是你想要访问的webservice的接口,比如我想访问的接口是 ReleaseService 那就在当前项目创建一个ReleaseService接口(接口中的方法必须和你想要访问的webservice的接口中的方法相同) b) 第二个是你的调用类 3...

    简单的webservice例子(java,xfire)

    client为客户,EchoAction中有3种客户端接收方法 Main为简单的接收,直接点运行main既能启动。 (采用第一种获取方式,知道服务端的情况下使用,方法为输入一个用户user,匹配到user返回相应能看到的结果) (注释的...

    webservice.zip

    不管是用VS开发的基于.NET的WebService,还是用Java开发的WebService,还是用PB本身开发的.NET Web Service,PB调用WebService的原理是一样的,都是通过WSDL访问WebServices....3.创建PB Web Service Client

    Java WebService 简单实例 - 服务器端TheService.rar

    1、创建【Web Service Project】,命名为【TheClient】。 2、命令提示窗口执行生成命令。 格式:wsimport -s "src目录" -p “生成类所在包名” -keep “wsdl发布地址” 示例: wsimport -s G:\\...

    开心农场java源码-gradle-webservice-client:gradle-webservice-客户端

    开心农场java源码gradle-webservice-客户端 概述 这是为定期调用网络服务而创建的。 使用 BPEL 或 BPMN 的长时间运行的流程通常由调用系统启动。 有时他们可以根据计时器和持续时间实例化自己。 但是有一个更高级别...

    THINKPHP3.2使用soap连接webservice的解决方法

    2.在方法中创建的 SoapClient 类 的实例 $url=https://www.test.com/adwebservice.asmx?wsdl; $client = new \SoapClient($url); 3.然后调用webservice 接口方法 //获取webservice 接口方法 $client->__get...

    gsoap 2.8 (SOAP/XML 关于C/C++ 语言的自动化实现工具内附 CSharp webservice例子,及GSOAP client和server例子)

    1. 内附 CSharp webservice例子,及GSOAP client和server例子 2. 里面的例子. 注意根据自己情况修改批处理里面的wsdl地址. 3. 如果webservice是php的 请注意修改php版wsdl中类型为标准类型(默认好像php生成的wsdl文件...

    Webservice:将CakePHP ORM的功能带到您最喜欢的Web服务

    创建驱动程序 <?php namespace App \ Webservice \ Driver ; use Cake \ Network \ Http \ Client ; use Muffin \ Webservice \ AbstractDriver ; class Articles extends AbstractDriver { /** * Initialize ...

    浅谈PHP调用Webservice思路及源码分享

    方法一:直接调用 复制代码 代码如下:<? /******************************************************************************/ /* 文件名 : soapclient.... // 创建一个soapclient对象,参数是server的WSDL 

    Java源码 SpringMVC Mybatis Shiro Bootstrap Rest Webservice

    11. Service Socket 、Client Socket 通信技术(已经做过GPRS数据获取,并用到了项目中) 12. 提供大量工具类,可以直接使用 13. Maven项目构建,您可以直接做架构,可以提升自己的学习能力,使您成为真正的架构师。...

Global site tag (gtag.js) - Google Analytics