将Java Map <string,object>传递给WebService

时间:2017-10-24 11:20:30

标签: java xml web-services soap

我有一个包含对象列表的SOAP请求。对象有一个java Object字段。

当我在Java WebService实现的方法中收到请求时,对象字段的所有值都是&#34; com.sun.org.apache.xerces.internal.dom.ElementNSImpl&#34;的实例。而不是原始的对象类。

如何在不丢失所有值的原始java类的情况下将Java对象传递给Web服务?

课程:

import java.io.Serializable;
import java.util.HashMap;
import java.util.List;

import javax.xml.bind.annotation.XmlTransient;

public class Request implements Serializable {
    /**
     * 
     */
    private static final long serialVersionUID = 1358291145144128010L;

    private List<externalField> externalFields;

    public Request(){}

    public void setExternalFields(List<externalField> camposFFCCExternal) {
        this.camposFFCCExternal = camposFFCCExternal;
    }

    public List<externalField> getExternalFields() {
        return camposFFCCExternal;
    }
}

externalField类:

import java.io.Serializable;

public class externalField implements Serializable {

    /**
     * 
     */
    private static final long serialVersionUID = 8248866248138301848L;
    private String key;
    private Object value;

    public void setClave(String key) {
        this.key = key;
    }
    public String getClave() {
        return key;
    }
    public void setValor(Object value) {
        this.value = value;
    }
    public Object getValor() {
        return value;
    }

}

1 个答案:

答案 0 :(得分:0)

我认为如果不告诉jaxb可能的类型,你就不能这样做。如果您对xml序列化有影响,可以使用anyType执行此操作: How to create java object from 'anyType' returned from service using JAXB?

或者,如果已知可能的对象集,您可以尝试定义类型选择:

http://blog.bdoughan.com/2010/10/jaxb-and-xsd-choice-xmlelements.html

希望这能让你有所收获。