0

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ますか?

4

1 に答える 1

0

私が話していた/大声で尋ねていた両方のアプローチは...うまくいきました.1つはハックであり、もう1つは私が一緒に暮らすことができるものです. どちらも Jersey を活用してジョブを実行します。

アプローチ A (より良い): https://gist.github.com/pulkitsinghal/5779383#file-approach_a-java

アプローチ B (ハック ~ っぽい ... パフォーマンスが低下する可能性があります): https://gist.github.com/pulkitsinghal/5779383#file-approach_b-java

于 2013-06-14T04:08:02.190 に答える