Jersey で POJO に注釈を付けました。次のようなテスト メソッドがあります。
@POST
@Path("/test/pojo/transformation")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_XML)
public MyPojo testSerializationForLineItemRequestPojo(MyPojo myPojo)
{
return myPojo;
}
Webrequest を介して POJO の JSON フレーバーを受け入れ、同じ pojo の XML バージョンを返します。通常、これを行うのは、予想される xml 形式と json 形式の間を行き来するために、すべてのオブジェクトに適切に注釈が付けられているかどうかを確認するためです。
しかし今、Web サービス メソッドの 1 つの内部でこのような変換をローカルで実行する必要があります。
Q) 上記のオブジェクト変換インフラストラクチャをどのように活用できますか?
私はハックに頼りたくありません... localhost への Web サービス呼び出しを行い、オブジェクトを変換して返すことができるように公開されているメソッドを通過するようなものです。
アップデート#1
頭に浮かぶ1つのアイデアは、次のような方法です。
@Produces(MediaType.APPLICATION_JSON)
private MyPojo convert(String data)
{
new InBoundHeaders().add("Content-Type", MediaType.APPLICATION_XML);
ClientResponse cr = new ClientResponse(
Response.Status.OK,
new InBoundHeaders().add("Content-Type", MediaType.APPLICATION_XML),
null,
messageBodyWorkers_singleton);
return cr.getEntity(MyPojo.class);
}
偽物ClientResponse
を使用して、既存の jersey インフラストラクチャをすばやく利用し、xml を POJO に変換してから、再び json に変換できます。このため、メソッドを Web サービスとして公開する必要はありません。しかし、ジャージーサーバーの起動時に無料で提供されたジャージーの既存/事前構成済みのMessageBodyWorkers
実装をどのように正確に活用できるかはわかりません (私はそれを messageBodyWorkers_singleton と呼んでいます)。参照を自動配線する方法についてのアイデアはありMessageBodyWorkers
ますか?