代码之家  ›  专栏  ›  技术社区  ›  bunn_online

消费ASP.net使用JAX-WS的web服务,获取“指定的类型是抽象的”

  •  1
  • bunn_online  · 技术社区  · 15 年前

    我正在尝试为我们构建的soapweb服务创建一个快速示例Java客户机ASP.net.

    我使用wsimport创建客户端代理,以使用java代码中的web服务:

    wsimport -extension -s c:\theservice -d c:\theservice -p theservice http://server/theservice?wsdl
    

    然后,我将信息汇编如下:

    GetDeviceReq request = new GetProductReq();
    DeviceIdentifier id = new SerialNumber();
    ((SerialNumber)id).setUnitIdentifier(id);
    GetDeviceResp response = service.GetDevice(request);
    

    代码可以完美地编译并执行。但是,我从ASP.netweb服务:

    The specified type is abstract: name='DeviceIdentifier', namespace='http://bogus', at <unitIdentifier xmlns='http://bogus'>.
    

    1 回复  |  直到 15 年前
        1
  •  1
  •   bunn_online    15 年前

    我解决了我自己的问题!

    wsimport生成的代码如下所示:

    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlType(name = "DeviceIdentifier")
    public abstract class DeviceIdentifier {
    }
    

    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlType(name = "DeviceIdentifier")
    @XmlSeeAlso({SerialNumber.class, ProductNumber.class})
    public abstract class DeviceIdentifier {
    }
    

    这类似于中C#/.Net中的xmlclude属性命名空间

    在JAX-WS的最新版本中,这个问题似乎已经按照 this article .