Johnzon通过Rest反序列化日期

5

我有一个tomee服务器,从android端可以调用GET方法并运行良好。现在我尝试使用volley库进行POST请求发送一个实体,该实体具有java.util.Date字段,但是在服务器上收到以下报错:

WARNING - Interceptor for     {http://services.scol.csd.gr/}MeasureinfoFacadeREST has thrown exception,     unwinding now
org.apache.johnzon.mapper.MapperException: java.text.ParseException: Unparseable date: "Sep 23, 2016 13:14:29"

WARNING - Exception in handleFault on interceptor org.apache.cxf.jaxrs.interceptor.JAXRSDefaultFaultOutInterceptor@60d6a046
org.apache.cxf.interceptor.Fault: java.text.ParseException: Unparseable date: "Sep 23, 2016 13:46:36"

Caused by: java.text.ParseException: Unparseable date: "Sep 23, 2016 13:14:29"
    at java.text.DateFormat.parse(DateFormat.java:366)
    at org.apache.johnzon.mapper.converter.DateConverter.fromString(DateConverter.java:49)
    ... 48 more

我尝试覆盖johnzon转换器,如下所示:

在resources.xml中:

<?xml version="1.0"?>
<resources>
  <Service id="johnzon" class-name="org.apache.johnzon.jaxrs.ConfigurableJohnzonProvider">
    accessModeName = field
  </Service>
</resources>

在openejb-jar.xml文件中。
<?xml version="1.0" encoding="UTF-8"?>
<openejb-jar>
  <pojo-deployment class-name="test">
    <properties>
      cxf.jaxrs.skip-provider-scanning = true
      cxf.jaxrs.providers = johnzon,org.apache.openejb.server.cxf.rs.EJBAccessExceptionMapper
    </properties>
  </pojo-deployment>
</openejb-jar>

在pojo-deployment中,我给了一个随机名称,例如“test”。

public class LocalDateConverter implements Converter<Date> {
    @Override
    public String toString(final Date instance) {
        final Calendar cal = GregorianCalendar.getInstance();
        cal.setTime(instance);
        return DatatypeConverter.printDateTime(cal);
    }

    @Override
    public Date fromString(final String text) {
        return DatatypeConverter.parseDateTime(text).getTime();
    }
}

然后在我的实体中:

@JohnzonConverter(LocalDateConverter.class)
public Date getDay() {
    return day;
}

@JohnzonConverter(LocalDateConverter.class)
public void setDay(Date day) {
    this.day = day;
}

我从这里找到了这个配置。

但问题仍然存在。

有任何建议吗?

1个回答

1
accessModeName = field

所以。
@JohnzonConverter(LocalDateConverter.class)

在领域中进行 ;)

https://github.com/apache/johnzon/blob/982af7173b1596134c6ed9ce43d871863f58e285/johnzon-mapper/src/test/java/org/apache/johnzon/mapper/converter/TimestampAdapterTest.java 几乎完全符合您的需求,只是格式不同。不知道您是否可以在旧版本上使用它? - Romain Manni-Bucau

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接