java - 使用 JAX-WS 声明 Web 方法中未使用的类型

标签 java web-services

我有一个 Java WebService 方法,出于性能原因,需要以 zip 模式将大对象列表返回到 .NETCF 应用程序。 wsdl 是从 Tomcat 自动生成的。 我已经实现了这段代码:

@WebService
public class WS {
  @WebMethod
  public byte[] getData () {
    // Get Data object list
    List<Data> list = getDataFromDatabase();
    Data[] arr = new Data[list.size()];
    list.toArray(arr);

    // Compress data
    byte[] zipData = getZipData(arr);
    return zipData;
  }
}

问题是 Data 对象未在 wsdl 中声明,并且当在 .NETCF 程序中解压缩结果时,它无法解析类型。因此,我在 WebService 中实现了另一个方法:

@WebMethod
public Data[] getData () { ... }

现在,.NETCF 知道 Data 对象的存在,因为它出现在生成的 wsdl 中,但我不将此方法用于任何用途。 是否有任何方法或注释可以在 Java WebService 代码中声明数据对象而不使用方法?例如:

@WebService
public class WS {
  @WebType
  public Data;

  @WebMethod
  public byte[] getData () { ... }
}

谢谢

最佳答案

根据this ,您的字节数组应映射到 base64binaryhexbinary 类型。 为了在 wsdl 文件中包含复杂类型(实际上它将被放入 xsd 中,在 wsdl 中引用),我添加了类定义的 @XmlAccessorType 注释。例如:

@XmlAccessorType(XmlAccessType.FIELD)
public class Data {
...
}

xsd 应包含该类的声明,该类包含所有字段。

但是,如果您从方法中返回 byte[],我不知道声明 Data 类型有什么帮助。您必须寻找从返回类型到可以在客户端中使用的类型的映射。

关于java - 使用 JAX-WS 声明 Web 方法中未使用的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9225861/

相关文章:

java - 如何正确使用class类型的参数?

java - 是否可以将服务或端点代理作为静态成员实例?

javascript - 如何向浏览器检查器隐藏我的网络服务链接?

java - 学习 Java Web 服务细节的资源?

java - keystore 被篡改,或密码不正确 - Java Springboot应用程序

java - 从 Json 数据获取图像并将其显示为 RecyclerView android 中的封面图像

Java 枚举 - 无法在定义之前引用字段

java - 如何正确应用 yt :accessControl in YouTube-API Java

javascript - 从现有的 sqlite 数据库中获取数据到网页中

web-services - 如何在 WSDL 中将 SOAP header 标记为可选?