WSDL 创建对象,处理对象,返回对象,测试对象

本文详细介绍使用Eclipse WTP工具创建WSDL服务的过程,包括设计、生成Java Bean骨架、业务逻辑处理及发布等步骤,并提供了完整的WSDL文件示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 
WSDL 创建对象 , 然后传递过程
/**
  *Mar 13, 2007
  * Zhou JianGuo
  * 小白
  * 中国电信上海技术研究院
  * MSN:zhuojianguo_leo@hotmail.com
  */
1.用Eclipse WTP工具 新建一个wsdl文件,比如Register.wsdl
 
2.开始在这个文件上做Design设计
3.新建一个Add Service,然后再依次添加Add Binding,Add PortType
 
4.对新建立的Binding,选择Generate Binging content ,选择soap document literal
 
5.对新建立的PortType 添加Operation ,注意下面的
    <wsdl:portType name="MyRegister">
           <wsdl:operation name="UserRegister">
                  <wsdl:input message="tns:UserInfoRequest"></wsdl:input>
                  <wsdl:output message="tns:UserInfoResponse"></wsdl:output>
           </wsdl:operation>
</wsdl:portType>
 
operation name="UserRegister" 必须和message="tns:UserInfoRequest" 不一样,不能是
 
operation name="UserRegister"    message="tns:UserRegisterRequest" 这样的,这个是自动生成的好像
 
 
6.进入UserInfo信息,可以看到
7.进入UserInfoResponse信息,可以看到
 
8.他们的属性是
 
9再新建一个名字跟Service一样的名字的叫MyRegister
引用上面2个对象,ref=….
属性是
 
10.然后右击这个 wsdl文件,选择web service里的Generate java bean skeleton 就可以看到新产生的对象,然后调用* _BindingImpl.java这个文件执行业务逻辑处理
 
业务逻辑处理
 
11.最后一步就是发布了,往server-config.wsdd添加一段类是下面的,对象传递必须序列化
  < service name = "MyRegister" provider = "java:RPC" style = "document" use = "literal" >
      < parameter name = "wsdlTargetNamespace" value = "http://www.MyRegister.org/soapas" />
      < parameter name = "wsdlServiceElement" value = "MyRegister" />
      < parameter name = "schemaQualified" value = "http://www.MyRegister.org/soapas" />
      < parameter name = "wsdlServicePort" value = "MyRegister" />
      < parameter name = "className" value = "org.Register.www.MyRegister.MyRegister_BindingSkeleton" />
      < parameter name = "wsdlPortType" value = "MyRegister" />
      < parameter name = "typeMappingVersion" value = "1.2" />
      < parameter name = "allowedMethods" value = "*" />
 
      < typeMapping
        xmlns:ns = "http://www.MyRegister.org/soapas"
        qname = "ns:UserInfoResponse"
        type = "java:org.Register.www.MyRegister.UserInfoResponse"
        serializer = "org.apache.axis.encoding.ser.BeanSerializerFactory"
        deserializer = "org.apache.axis.encoding.ser.BeanDeserializerFactory"
        encodingStyle = ""
      />
      < typeMapping
        xmlns:ns = "http://www.MyRegister.org/soapas"
        qname = "ns:UserInfo"
        type = "java:org.Register.www.MyRegister.UserInfo"
        serializer = "org.apache.axis.encoding.ser.BeanSerializerFactory"
        deserializer = "org.apache.axis.encoding.ser.BeanDeserializerFactory"
        encodingStyle = ""
      />
  </ service >
 -------------------------------------------------------------------
   < service name = "VimicroAS" provider = "java:RPC" style = "document" use = "literal" >
      < parameter name = "wsdlTargetNamespace" value = "http://www.vipcam.cn/soapas" />
      < parameter name = "wsdlServiceElement" value = "VimicroAS" />
      < parameter name = "schemaQualified" value = "http://www.vipcam.cn/soapas" />
      < parameter name = "wsdlServicePort" value = "VimicroAS" />
      < parameter name = "className" value = "cn.vipcam.www.soapas.VimicroAS_BindingSkeleton" />
      < parameter name = "wsdlPortType" value = "VimicroAS" />
      < parameter name = "typeMappingVersion" value = "1.2" />
      < parameter name = "allowedMethods" value = "*" />
 
      < typeMapping
        xmlns:ns = "http://www.vipcam.cn/soapas"
        qname = "ns:>ASRegisterResponse"
        type = "java:cn.vipcam.www.soapas.ASRegisterResponse"
        serializer = "org.apache.axis.encoding.ser.BeanSerializerFactory"
        deserializer = "org.apache.axis.encoding.ser.BeanDeserializerFactory"
        encodingStyle = ""
      />
      < typeMapping
        xmlns:ns = "http://www.vipcam.cn/soapas"
        qname = "ns:ASRegister1"
        type = "java:cn.vipcam.www.soapas.ASRegister"
        serializer = "org.apache.axis.encoding.ser.BeanSerializerFactory"
        deserializer = "org.apache.axis.encoding.ser.BeanDeserializerFactory"
        encodingStyle = ""
      />
  </ service >
 
 
12. 下面是一个整个 wsdl 文件 , 大家可以拷贝下来修改
<? xml version = "1.0" encoding = "UTF-8" ?>
    < wsdl:definitions name = "MyRegister"
    targetNamespace = "http://www.Register.org/MyRegister/"
    xmlns:wsdl = "http://schemas.xmlsoap.org/wsdl/"
    xmlns:tns = "http://www.Register.org/MyRegister/"
    xmlns:xsd = "http://www.w3.org/2001/XMLSchema"
    xmlns:soap = "http://schemas.xmlsoap.org/wsdl/soap/" >
    < wsdl:types >
    < xsd:schema xmlns:xsd = "http://www.w3.org/2001/XMLSchema"
    targetNamespace = "http://www.Register.org/MyRegister/" >
      < xsd:element name = "MyRegister" >
              < xsd:annotation >
                 < xsd:documentation >
                     this is a root element
                 </ xsd:documentation >
              </ xsd:annotation >
              < xsd:complexType >
                 < xsd:sequence >
                     < xsd:element ref = "tns:UserInfoResponse" ></ xsd:element >
                     < xsd:element ref = "tns:UserInfo" ></ xsd:element >
                 </ xsd:sequence >
              </ xsd:complexType >
              </ xsd:element >
 
      < xsd:element name = "UserInfo" >
        < xsd:complexType >
           < xsd:sequence >
               < xsd:element name = "in" type = "xsd:string" ></ xsd:element >
           </ xsd:sequence >
        </ xsd:complexType >
      </ xsd:element >
      < xsd:element name = "UserInfoResponse" >
        < xsd:complexType >
           < xsd:sequence >
               < xsd:element name = "out" type = "xsd:string" ></ xsd:element >
           </ xsd:sequence >
        </ xsd:complexType >
      </ xsd:element >
    </ xsd:schema >
        </ wsdl:types >
    < wsdl:message name = "UserInfoRequest" >
    < wsdl:part name = "parameters" element = "tns:UserInfo" ></ wsdl:part >
    </ wsdl:message >
    < wsdl:message name = "UserInfoResponse" >
    < wsdl:part name = "parameters" element = "tns:UserInfoResponse" ></ wsdl:part >
    </ wsdl:message >
    < wsdl:portType name = "MyRegister" >
    < wsdl:operation name = "UserRegister" >
        < wsdl:input message = "tns:UserInfoRequest" ></ wsdl:input >
        < wsdl:output message = "tns:UserInfoResponse" ></ wsdl:output >
    </ wsdl:operation >
    </ wsdl:portType >
    < wsdl:binding name = "MyRegister" type = "tns:MyRegister" >
    < soap:binding style = "document"
        transport = "http://schemas.xmlsoap.org/soap/http" />
    < wsdl:operation name = "UserRegister" >
        < soap:operation
            soapAction = "http://www.Register.org/MyRegister/NewOperation" />
        < wsdl:input >
            < soap:body use = "literal" />
        </ wsdl:input >
        < wsdl:output >
            < soap:body use = "literal" />
        </ wsdl:output >
    </ wsdl:operation >
    </ wsdl:binding >
    < wsdl:service name = "MyRegister" >
       < wsdl:port name = "MyRegister" binding = "tns:MyRegister" >
           < soap:address location = "http://www.Register.org/MyRegister" ></ soap:address >
       </ wsdl:port >
    </ wsdl:service >
</ wsdl:definitions >
 
12. 开始设计业务逻辑代码
 
package org.Register.www.MyRegister;
 
public class MyRegister_BindingImpl implements org.Register.www.MyRegister.MyRegister_PortType{
    public org.Register.www.MyRegister.UserInfoResponse userRegister(org.Register.www.MyRegister.UserInfo parameters) throws java.rmi.RemoteException {
        // 业务逻辑处理
    System. out .println(parameters.getIn());
    UserInfoResponse UserInfoResponse= new UserInfoResponse();
    UserInfoResponse.setOut( "ok" );
    return UserInfoResponse;
    }
 
}
 
13. 开始启动 web 服务器 , 得到我的 wsdl 地址是 http://localhost:8000/Video/services/MyRegister?wsdl
 
14. 打开测试工具 xmlspy. 输入上面的 soap 地址 , 就会产生一个方法
 
输入页面
< SOAP-ENV:Envelope xmlns:SOAP-ENV =" http://schemas.xmlsoap.org/soap/envelope/ " xmlns:SOAP-ENC =" http://schemas.xmlsoap.org/soap/encoding/ " xmlns:xsi =" http://www.w3.org/2001/XMLSchema-instance " xmlns:xsd =" http://www.w3.org/2001/XMLSchema ">
       < SOAP-ENV:Body >
              < m:UserInfo xmlns:m =" http://www.Register.org/MyRegister/ ">
                     < m:in > 11 </ m:in >
              </ m:UserInfo >
       </ SOAP-ENV:Body >
</ SOAP-ENV:Envelope >
 
结果页面
<?xml version="1.0" encoding="UTF-8"?>
< soapenv:Envelope xmlns:soapenv =" http://schemas.xmlsoap.org/soap/envelope/ " xmlns:xsd =" http://www.w3.org/2001/XMLSchema " xmlns:xsi =" http://www.w3.org/2001/XMLSchema-instance ">
       < soapenv:Body >
              < UserInfoResponse xsi:type =" ns1:UserInfoResponse " xmlns =" http://www.Register.org/MyRegister/ " xmlns:ns1 =" http://www.MyRegister.org/soapas ">
                     < out xmlns =""> ok </ out >
              </ UserInfoResponse >
       </ soapenv:Body >
</ soapenv:Envelope >
 
15 整个 wsdl 创建发布测试完成 !
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值