25.15.2 HTTPレスポンスのエンティティに使用できるJavaの型とMIMEメディアタイプの組み合わせ
戻り値に使用できるJava型とMIMEメディアタイプの組み合わせを次の表に示します。
項番 |
Javaの型 |
charset※1 |
MIMEメディアタイプ |
---|---|---|---|
1 |
byte[] |
× |
任意(*/*) |
2 |
java.lang.String |
○ |
任意(*/*) |
3 |
java.io.InputStream |
× |
任意(*/*) |
4 |
java.io.Reader |
○ |
任意(*/*) |
5 |
java.io.File※2 |
× |
任意(*/*) |
6 |
javax.activation.DataSource |
× |
任意(*/*) |
7 |
javax.xml.transform.Source※3 |
× |
任意(*/*) |
8 |
javax.xml.bind.JAXBElement<String>※4,※5 |
× |
text/xml, application/xml, application/*+xml |
9 |
XmlRootElementアノテーションおよび/またはXmlTypeアノテーションでアノテートされたJAXBクラス※5 |
× |
text/xml, application/xml, application/*+xml |
10 |
javax.ws.rs.core.MultivaluedMap<String,String> |
○ |
application/x-www-form-urlencoded |
11 |
org.w3c.dom.Document |
× |
任意(*/*) |
12 |
java.awt.image.RenderedImage |
× |
application/octet-stream, image/jpeg |
13 |
com.cosminexus.jersey.core.provider.EntityHolder<T>※6 |
△ |
Tに指定した型と同じMIMEメディアタイプです。 |
14 |
com.cosminexus.jersey.api.client.GenericType<T>※7 |
△ |
Tに指定した型と同じMIMEメディアタイプです。 |
15 |
POJO※8 |
○ |
application/json |
- (凡例)
-
任意(*/*):すべてのMIMEメディアタイプをサポートしていることを示します。
- 注※1
-
Content-Type HTTPヘッダにcharsetパラメタが含まれる場合,HTTPレスポンスにインジェクトするときにその情報が考慮されるかどうかを示します。
○:考慮されます。Content-Type HTTPヘッダにcharsetパラメタが含まれない場合は,UTF-8が仮定されます。
△:Tに指定した型に依存します。
×:考慮されません。
- 注※2
-
JAX-RSエンジンは,ローカルマシンにtempディレクトリを作成し,一時ファイルを保存します。
- 注※3
-
次に示す実装クラスを使用できます。
・javax.xml.transform.stream.StreamSource
・javax.xml.transform.sax.SAXSource
・javax.xml.transform.dom.DOMSource
なお,javax.xml.transform.stream.StreamSource,またはjavax.xml.transform.sax.SAXSourceを使用する場合は,汎用型(ClientResponse)でHTTPレスポンスを受信し,ClientResponseクラスのgetEntity()メソッドでエンティティのオブジェクトを取得してください。またその際,getEntity()メソッドを呼び出す前に,必ずbufferEntity()メソッドを呼び出してください。汎用型(ClientResponse)でHTTPレスポンスを受信する方法については「11.4.1 Webリソースクライアントのユースケース」を参照してください。
- 注※4
-
この表の項番14のTとして使用します。これ以外の使用は保証されません。
- 注※5
-
MIMEメディアタイプがapplication/fastinfosetまたはapplication/jsonの場合,エラーにならないで正常終了します。
- 注※6
-
この表の項番14のTとして使用します。Tにはこの表の項番2から項番12,および項番15の型を指定できます。これ以外の使用は保証されません。
- 注※7
-
Tにはこの表の項番2から項番13,および項番15の型を指定できます。
- 注※8
-
JSON POJOマッピングを有効にしてください。JSON POJOマッピングが有効でない場合の動作は,サポートされないJava型がエンティティパラメタに指定された場合の動作と同じです。JSON POJOマッピングを有効にする方法については「18. JSON POJOマッピング」を参照してください。
指定したJavaの型がサポートされない型の場合,エラーとなり(KDJJ10031-EおよびKDJJ18888-E),ClientHandlerExceptionがスローされます。
戻り値が次に示すJavaの型で,HTTPレスポンスのエンティティボディが使用できないMIMEメディアタイプの場合,エラーとなり(KDJJ10031-EまたはKDJJ18888-E),ClientHandlerExceptionがスローされます。
-
javax.xml.bind.JAXBElement<String>
-
XmlRootElementアノテーションおよび/またはXmlTypeアノテーションでアノテートされたJAXBクラス
-
javax.ws.rs.core.MultivaluedMap<String,String>
-
java.awt.image.RenderedImage
-
POJO
HTTPレスポンスのエンティティボディからの変換でIOExceptionが発生した場合,エラーとなり(KDJJ18888-E),ClientHandlerExceptionがスローされます。
HTTPレスポンスのエンティティボディからの変換でIOException以外の例外がスローされた場合は,対応する例外がスローされます。なお,ログを確認するときは,JAX-RS機能のログファイルではなくJ2EEサーバのログファイルを確認してください
java.awt.image.RenderedImageのエンティティパラメタでは,Content-Type HTTPヘッダがimage/*の場合,エラーとなり(KDJJ18888-E),java.io.IOExceptionをラップしたClientHandlerExceptionがスローされます。
com.cosminexus.jersey.api.client.GenericType<T>のエンティティパラメタでは,HTTPレスポンスにエンティティボディがある場合,Tが表の項番1のとき,エラーとなり(KDJJ10031-EおよびKDJJ18888-E),ClientHandlerExceptionがスローされます。
com.cosminexus.jersey.core.provider.EntityHolder<T>のエンティティパラメタでは,HTTPレスポンスにエンティティボディがある場合,次に示すどちらかのときにエラーとなり(KDJJ10003-E),javax.ws.rs.WebApplicationExceptionがスローされます。
-
Tがサポートされない型(表の項番1,項番13,および項番14)のとき
-
Tがサポートされる型(表の項番2から項番12,および項番15)だが,HTTPレスポンスのエンティティボディが使用できないMIMEメディアタイプのとき
クライアントAPIがJ2EEサーバ上で動作する場合,エンティティボディに含まれるフォームパラメタ数の上限値のデフォルトは10,000です。エンティティパラメタの型がjavax.ws.rs.core.MultivaluedMap<String,String>,またはcom.cosminexus.jersey.core.provider.GenericType<EntityHolder<javax.ws.rs.core.MultivaluedMap<String,String>>>のとき,レスポンスのパラメタ数が指定した値を超えたときは,RuntimeExceptionがスローされます。必要に応じてJ2EEサーバ用ユーザプロパティファイル(usrconf.properties)のwebserver.connector.limit.max_parameter_countプロパティで変更してください。なお,ログを確認するときは,JAX-RS機能のログファイルではなくJ2EEサーバのログファイルを確認してください。
HTTPレスポンスにContent-Type HTTPヘッダが存在しない場合,MIMEメディアタイプはapplication/octet-streamであると見なされます。