Java Soap服务:根据持久性结果字段添加非持久性结果字段

时间:2014-08-06 17:13:01

标签: java web-services soap

所以我需要在SOAP服务响应中添加一个新字段。问题是该字段必须从持久字段中获取值。我无法直接添加该持久字段。持久字段返回一个“Calendar”实例,实际上是MySQL的DATETIME。当前对象使用XmlAdapter。

我做了类似的事情:

class SomeClassImpl extends SomeClass
{
    @Transient
    @XmlSchemaType(name="someDate")
    private String someDate;

    ...

    public void defSomeDate()
    {
        this.someDate = this.getPersistentDate().toString();
    }

    public String retSomeDate()
    {
        return this.someDate();
    }
}

新字段出现在soap结果中,但该值是一个例外,我现在不记得,我现在无法重现它。

你会怎么做?是否可以注释方法而不是成员,以便它出现在SOAP结果中?如果是的话,宣布会是什么样子?

提前谢谢!

1 个答案:

答案 0 :(得分:0)

问题是以下代码:

@XmlSchemaType(name="someDate")

“name”参数应该是xml的标准数据类型之一。在这种情况下,因为它包含日期和时间,所以它应为“dateTime”。它也可以是string,但将其声明为dateTime会使该字段更具限制性。因此,正确的注释是:

@XmlSchemaType(name="dateTime")

考虑到日期和时间,第二个观察结果是private String someDate;应该是private CalendarsomeDate;,以保持一致,并且实际代码也可以使用。

不需要注释方法。只要在运行时将某个成员/属性设置在某处,只需注释成员/属性就足够了。

我希望这对其他人也有帮助。我花了几个小时才得到这个,但现在我知道将来如何进行。