使用wsdl响应进行操作

时间:2014-07-25 15:51:15

标签: java gwt wsdl

假设在运行wsdl2java之后我们得到了响应

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "response", propOrder = {
    "responseDate",
    "institutionList"
})
@XmlRootElement(name="response")
public class Response implements Serializable {

    @XmlElement(required = true)
    @XmlSchemaType(name = "dateTime")
    protected XMLGregorianCalendar responseDate;
    @XmlElement(required = true)
    protected List<InstitutionList> institutionList;

    public XMLGregorianCalendar getResponseDate() {
        return responseDate;
    }

    public void setResponseDate(XMLGregorianCalendar value) {
        this.responseDate = value;
    }

    public List<InstitutionList> getInstitutionList() {
        if (institutionList == null) {
            institutionList = new ArrayList<InstitutionList>();
        }
        return this.institutionList;
    }

}

InstitutionList具有深层结构。由于某些导入,我无法序列化Response(GWT所需),因此我必须手动创建一些HashMap(可以序列化)并填充深层结构中的所有字段。有没有办法不这样做?此外,如果我想在数据库中保存来自Response的数据,我必须使用所有值制作类似hashmap的内容。谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

我可以想到两种不同的方式(没有一种方法非常舒服)。

GWT客户端代码 - (RPC) - &gt;服务器代码 - wsdl2java - &gt; SOAP Web服务 假设您没有使用应用引擎,那么没有任何限制。 此方法以某种方式复制实体对象。例如,如果您有一个UpdateUser SOAP Web服务,wsdl2java将生成一组类,并且您将需要另一组rpc代码类。

GWT客户端代码 - 请求构建器+框架 - &gt; SOAP Web服务 您可以在浏览器中创建必要的SOAP标头,然后使用Request Builder发送请求。您必须编写wsdl2java的修改版本才能创建GWT兼容类。