在jax rs中将java.util.Date编组/解组为Json

在jax rs中将java.util.Date编组/解组为Json,json,jaxb,wso2,jax-rs,wso2as,Json,Jaxb,Wso2,Jax Rs,Wso2as,我正在使用jaxb和日期适配器。但是回复中没有日期 @XmlRootElement(name = "project") public class Project implements Serializable { private static final long serialVersionUID = -6462790408417409266L; private long projectId; private long userId; private Strin

我正在使用jaxb和日期适配器。但是回复中没有日期

@XmlRootElement(name = "project")
public class Project implements Serializable {

    private static final long serialVersionUID = -6462790408417409266L;
    private long projectId;
    private long userId;
    private String projectName;
    private Date createdDate;
    private Date lastUpdatedDate;

    public final long getProjectId() {
        return projectId;
    }
    public final void setProjectId(final long projectId) {
        this.projectId = projectId;
    }
    public final long getUserId() {
        return userId;
    }
    public final void setUserId(long userId) {
        this.userId = userId;
    }
    public final String getProjectName() {
        return projectName;
    }
    public final void setProjectName(final String projectName) {
        this.projectName = projectName;
    }

    /**
     * @return the createdDate
     */
    @XmlElement(name = "createdDate")
    @XmlJavaTypeAdapter(value = DateAdapter.class, type = Date.class)
    public final Date getCreatedDate() {
        return createdDate;
    }

    /**
     * @param createdDate
     *            the createdDate to set
     */
    public final void setCreatedDate(final Date createdDate) {
        this.createdDate = createdDate;
    }

    /**
     * @return the lastUpdatedDate
     */
    @XmlElement(name = "lastUpdatedDate")
    @XmlJavaTypeAdapter(value = DateAdapter.class, type = Date.class)
    public final Date getLastUpdatedDate() {
        return lastUpdatedDate;
    }

    /**
     * @param lastUpdatedDate
     *            the lastUpdatedDate to set
     */
    public final void setLastUpdatedDate(final Date lastUpdatedDate) {
        this.lastUpdatedDate = lastUpdatedDate;
    }

}
下面是我的适配器类

public class DateAdapter extends XmlAdapter<String, Date> {

    private final SimpleDateFormat dateFormat = new SimpleDateFormat(
            "yyyy-MM-dd'T'HH:mm:ss");

    @Override
    public String marshal(Date v) throws Exception {
        return dateFormat.format(v);
    }

    @Override
    public Date unmarshal(String v) throws Exception {
        return dateFormat.parse(v);
    }

}
它不包含日期。我错过了什么

更新:

我已经在CXF环境中部署了它。 下面是服务公开的方法定义

@GET
@Path("{userId}/{projectName}")
@Produces("application/json")
public Project getProjectByUser(@PathParam("userId") long userId,
        @PathParam("projectName") String projectName) throws IOException;

是否已尝试注释属性而不是方法:

@XmlElement(name = "createdDate")
@XmlJavaTypeAdapter(value = DateAdapter.class, type = Date.class)
private Date createdDate;

我试过Wildfly 8,效果很好

您能否提供更多信息,如您的依赖关系、您使用的服务器以及要测试的资源类?看起来可能是丢弃问题或覆盖默认ObjectMapper。有了Jacskon(并启用了JAXB注释支持),这对我来说很好。我不使用WSO2或CXF,但研究如何使用您自己的提供程序配置JSON支持(可能会禁用当前/默认的JSON提供程序),看看您是否可以配置(特别是JacksonJaxbJsonProvider)。这是我用球衣测试的,效果很好。
@XmlElement(name = "createdDate")
@XmlJavaTypeAdapter(value = DateAdapter.class, type = Date.class)
private Date createdDate;