我们有一个定义对象ID(UID)的类:
public final class UUID实现Serializable,Comparable { .... }
和另一个班级:
@XmlType(name = "ChangeFieldValueInstruction")
public static class ChangeFieldValueInstruction<T> extends Instruction
{
private T newVal;
public ChangeFieldValueInstruction()
{
super();
}
public ChangeFieldValueInstruction(String fieldPath, T newVal)
{
super(fieldPath);
setNewVal(newVal);
}
public T getNewVal()
{
return newVal;
}
public void setNewVal(T newVal)
{
this.newVal = newVal;
}
................
}
此类(UpdateObjectRequest)通过Web服务(我们使用spring)传递。
我有一个package-info文件,它为UUID.class定义了一个适配器,但是当我们将一个UID对象传递给newVal时,我们看到该适配器未被调用,实际上调用了默认的UID构造函数。 我尝试使用@XmlAnyElement注释getNewVal()方法,并将@XmlJavaTypeAdapter添加到UID类中(如此处建议的那样),但它仍然不起作用。还尝试使用@XmlSeeAlso(UUID.class)注释UpdateObjectRequest 在xsd中我看到newVal被定义为xs:anyType
所以有人知道我怎么能让这个工作? 10倍。
答案 0 :(得分:0)
不可能,imho。
这应该如何运作?您将拥有SOAP WebService有效内容的动态XML架构。 接收服务如何反应,他无法猜测元素的类型。
使用SOAP,Web服务及其操作,XML类型在WSDL - WebService Definition中预定义。 这就是客户端和服务器可以互操作的方式,因为它们是在有效载荷格式上协商的,这种格式不是动态的。
您需要准确定义哪些消息,类型可以在ws客户端和服务器之间传递