gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 15:33:42 28 4
gpt4 key购买 nike

我有一个 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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com