Java 使用JAX-WS声明web方法中未使用的类型
我有一个JavaWebService方法,出于性能原因,需要以zip模式将一个大对象列表返回给.NETCF应用程序。wsdl是从Tomcat自动生成的。 我已经实现了以下代码:Java 使用JAX-WS声明web方法中未使用的类型,java,web-services,Java,Web Services,我有一个JavaWebService方法,出于性能原因,需要以zip模式将一个大对象列表返回给.NETCF应用程序。wsdl是从Tomcat自动生成的。 我已经实现了以下代码: @WebService public class WS { @WebMethod public byte[] getData () { // Get Data object list List<Data> list = getDataFromDatabase(); Data[]
@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;
}
}
现在,.NETCF知道数据对象的存在,因为它出现在生成的wsdl中,但我什么都不使用这个方法。
在JavaWebService代码中声明数据对象是否有任何方法或注释而不使用方法。?例如:
@WebService
public class WS {
@WebType
public Data;
@WebMethod
public byte[] getData () { ... }
}
@XmlAccessorType(XmlAccessType.FIELD)
public class Data {
...
}
谢谢根据,您的字节数组应该映射到base64binary
或hexbinary
类型。
为了在wsdl
文件中包含一个复杂类型(实际上它将放在xsd
中,该xsd在wsdl
中引用),我在类定义中添加了@xmlacessortype
注释。例如:
@WebService
public class WS {
@WebType
public Data;
@WebMethod
public byte[] getData () { ... }
}
@XmlAccessorType(XmlAccessType.FIELD)
public class Data {
...
}
xsd
应该包含该类的声明,该声明包含所有字段
但是如果您从方法返回
字节[]
,我看不出声明数据类型有什么帮助。您必须寻找从返回类型到可以在客户端中使用的类型的映射。我遵循以下步骤:当我在Java WebService中拥有数据对象时,我将其序列化为XML,然后将XML字符串转换为byte[],最后压缩此字节并发送。当.NETCF收到字节[]时,解压缩以获取原始XML并反序列化到数据对象。如果数据对象未在wsdl中发布,.NETCF无法对其进行反序列化。