JAX-RS 2.0 と Glassfish 4 を使用して単純な REST-WebService を実装しています。私の問題は、日付またはカレンダーを WS に送信すると、pojo が日付情報を失い、値が NULL になることです。WebService で日付tmp.setDate(1)
を設定し、JUnit-Test-Case で情報を取得します[Thu Jan 01 02:00:00 CET 1970]
リクエストによって日付情報を失った理由はありますか?
私のクライアント (JUNIT)
@Test
public void testPOST() {
client = ClientBuilder.newClient();
this.root = this.client.target(SERVER + "/restExample/example");
OriginalSimpleDTO dto = new OriginalSimpleDTO();
dto.setDate(new Date(1));
final Entity<OriginalSimpleDTO> entity = Entity.entity(dto, mediaType);
Response response = this.root.request().post(entity);
System.out.println("POST Status " + response.getStatus());
OriginalSimpleDTO tmp = response.readEntity(OriginalSimpleDTO.class);
System.out.println("POST tmp-Date [" + tmp.getDate() + "]");
}
私の WebService-Resource
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response testPost(OriginalSimpleDTO dto) {
System.out.println("dto date [" + dto.getDate() + "]");
OriginalSimpleDTO tmp = new OriginalSimpleDTO();
tmp.setDate(new Date(1));
return Response.ok(tmp).build();
}
私のポジョ
@XmlRootElement
@JsonInclude (Include.NON_NULL)
public class OriginalSimpleDTO implements Serializable {
private static final long serialVersionUID = 1L;
private Date datum;
//default Constructor
public OriginalSimpleDTO() {}
@JsonSerialize (using = DateSerializer.class)
public Date getDatum() {
return datum;
}
@JsonDeserialize (using = DateDeserializer.class)
public void setDatum(Date datum) {
this.datum = datum;
}
}