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 |
指定した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であると見なされます。