我有一个 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 ,您的字节数组应映射到 base64binary
或 hexbinary
类型。
为了在 wsdl
文件中包含复杂类型(实际上它将被放入 xsd
中,在 wsdl
中引用),我添加了类定义的 @XmlAccessorType
注释。例如:
@XmlAccessorType(XmlAccessType.FIELD)
public class Data {
...
}
xsd
应包含该类的声明,该类包含所有字段。
但是,如果您从方法中返回 byte[]
,我不知道声明 Data
类型有什么帮助。您必须寻找从返回类型到可以在客户端中使用的类型的映射。
关于java - 使用 JAX-WS 声明 Web 方法中未使用的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9225861/