JBoss AS 7.1 を使用する JAX-RS アプリケーションがあり、日付 (java.util.Date) を含む JSON および XML オブジェクトを POST/GET します。
@XmlRootElement
@XmlAccessorType(XmlAccessField.FIELD)
public class MyObject implements Serializable
{
@XmlSchemaType(name = "dateTime")
private Date date;
...
}
get メソッドで @Produce("application/xml") を使用すると、オブジェクトが XML としてシリアル化され、日付が ISO-8601 文字列 (例: "2012-12-10T14:50:12.123+02:00") に変換されます。 )。
ただし、get メソッドで @Produce("application/json") を使用すると、JSON オブジェクトの日付は ISO-8601 文字列ではなくタイムスタンプ (例: "1355147452530") になります。
JSON 形式の日付をタイムスタンプではなく ISO-8601 文字列としてシリアル化するように JAX-RS 実装 (RESTEasy) を構成するにはどうすればよいですか?
回答ありがとうございます。
注: カスタム JAX-RS プロバイダーを使用して、日付の JSON シリアル化も試みました。
@Provider
@Produces(MediaType.APPLICATION_JSON)
public class CustomJsonDateProvider implements MessageBodyWriter<Date>
{
...
}
このプロバイダーは、JBoss の起動時に RESTeasy によって登録されているようです。
[org.jboss.jaxrs] Adding JAX-RS provider classes: package.CustomJsonDateProvider
...
[org.jboss.resteasy.cdi.CdiInjectorFactory] No CDI beans found for class package.CustomJsonDateProvider. Using default ConstructorInjector.
しかし、それは決して使用されません!