私が達成しようとしていることをできる限り明確に説明しようとします。
クライアント側でレポートに使用されるデータを抽出するために REST API を使用する Web アプリケーションのバックエンドを作成しています。私が書いているフレームワークは、JSON からデータ オブジェクト (データ Bean) への要求を解析するために Codehaus jackson を使用します。この種の API が 10 ~ 15 あります。それぞれがクライアント側から異なるリクエスト オブジェクトを取得します (ただし、いくつかの継承は存在します)。私がやりたいことは、これらの API ごとに (log4j を使用して) ロギングを追加して、各メソッドに入ったときに要求データ オブジェクトがログに記録されるようにすることです。簡単な解決策は、これらのデータ オブジェクトごとに toString() メソッドを実装することですが、これらすべてのデータ オブジェクトを調べることは避けて、jackson が JSON をオブジェクトに解析する方法と同様の解決策があるかどうかを確認したいと思います。私。
そんな簡単な方法もあると思います。
これは、REST API とそのデータ Bean の例です。
@POST
@Path("/path123/")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public Response getSomeData(@Context HttpServletRequest httpServletRequest, DataBeanExample bean){
DataBeanExample resultBean;
//DO SOME STUFF , for example take the bean, extract parameters from it and call some other api.
return Response.ok(resultBean, MediaType.APPLICATION_JSON).build();
}
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "DataBeanExample")
public class DataBeanExample{
@XmlElement(name = "timeFrame", required = true)
private String timeFrame = "";
@XmlElement(name = "timeFrom",required = true)
private long timeFrom;
@XmlElement(name = "timeTo",required = true)
private long timeTo;
public String getTimeFrame() {
return timeFrame;
}
public void setTimeFrame(String timeFrame) {
this.timeFrame = timeFrame;
}
public long getTimeTo() {
return timeTo;
}
public void setTimeTo(long timeTo) {
this.timeTo = timeTo;
}
public long getTimeFrom() {
return timeFrom;
}
public void setTimeFrom(long timeFrom) {
this.timeFrom = timeFrom;
}
}
この例でやりたいことは、「getSomeData」の先頭でオブジェクト Bean を取得してログに記録することです。