37.2. クライアントとサーバー間でインターフェースを共有する


通常、 クライアントとサーバー間でインターフェースを共有することは可能です。 前述の例では、 JAX-RS サービスはアノテーションが付けられたインターフェースを実装し、 クライアント側で呼び出しを行うため同じインターフェースを再使用してクライアントプロキシを作成しなければなりませんでした。ただし、 JAX-RS メソッドが応答オブジェクトを返す時は制限されます。 raw 応答の戻しタイプ宣言ではクライアントにタイプ情報がないため問題が発生します。 この問題を回避する方法は 2 つあります。 1 つ目の方法は、 @ClientResponseType アノテーションを使用することです。
import org.jboss.resteasy.annotations.ClientResponseType;
import javax.ws.rs.core.Response;

@Path("/")
public interface MyInterface {

   @GET
   @ClientResponseType(String.class)
   @Produces("text/plain")
   public Response get();
}
Copy to Clipboard Toggle word wrap
しかし、この方法では一部の MessageBodyReaderMessageBodyWriter は要求の一致や対応にジェネリックタイプの情報が必要なため、動作しないことがあります。
@Path("/")
public interface MyInterface {

   @GET
   @Produces("application/xml")
   public Response getMyListOfJAXBObjects();
}
Copy to Clipboard Toggle word wrap
この場合、 クライアントコードは返された応答オブジェクトを ClientResponse へキャストし、 タイプされた getEntity() メソッドのうち 1 つを使用することができます。
MyInterface proxy = ProxyFactory.create(MyInterface.class, "http://localhost:8081");
ClientResponse response = (ClientResponse)proxy.getMyListOfJAXBObjects();
List<MyJaxbClass> list = response.getEntity(new GenericType<List<MyJaxbClass>>());
Copy to Clipboard Toggle word wrap
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2026 Red Hat