Cosminexus V9 アプリケーションサーバ Webサービス開発ガイド

[目次][用語][索引][前へ][次へ]

25.15.1 HTTPリクエストのエンティティに使用できるJavaの型とMIMEメディアタイプの組み合わせ

HTTPリクエストのエンティティボディに使用できるJava型とMIMEメディアタイプの組み合わせを次の表に示します。なお,これ以外の組み合わせの場合,JAX-RSエンジンの動作は保証されません。

表25-6 エンティティボディに使用できるJavaの型とMIMEメディアタイプの組み合わせ

項番 Javaの型 charset※1 Content-Type HTTPヘッダ Content-Type HTTPヘッダ※2
(JAX-RSエンジン)
1 byte[] × 任意(*/*) application/octet-stream
2 java.lang.String 任意(*/*) text/plain
3 java.io.InputStream × 任意(*/*) application/octet-stream
4 java.io.Reader 任意(*/*) text/plain
5 java.io.File × 任意(*/*) application/octet-stream
6 javax.activation.DataSource × 任意(*/*) application/octet-stream
7 javax.xml.transform.Source※3 × 任意(*/*) application/xml
8 javax.xml.bind.JAXBElement<String>※4 ext/xml,
application/xml,
application/*+xml
application/xml
9 XmlRootElementアノテーションでアノテートされたJAXBクラス※4 text/xml,
application/xml,
application/*+xml
application/xml
10 javax.ws.rs.core.MultivaluedMap<String,String> application/x-www-form-urlencoded application/x-www-form-urlencoded
11 javax.ws.rs.core.StreamingOutput × 任意(*/*) application/octet-stream
12 org.w3c.dom.Document × 任意(*/*) application/xml
13 java.awt.image.RenderedImage × image/jpeg application/octet-stream
14 javax.ws.rs.core.GenericEntity<T>※5 Tに指定した型と同じMIMEメディアタイプです。 Tに指定した型と同じMIMEメディアタイプです。
15 POJO※6 ×※7 application/json application/octet-stream

(凡例)
任意(*/*):すべてのMIMEメディアタイプをサポートしていることを示します。

注※1
Content-Type HTTPヘッダにcharsetパラメタが含まれる場合,HTTPリクエストに変換するときにその情報が考慮されるかどうかを示します。
○:考慮されます。Content-Type HTTPヘッダにcharsetパラメタが含まれない場合は,UTF-8が仮定されます。
△:Tに指定した型に依存します。
×:考慮されません。

注※2
ClientRequestオブジェクトまたはWebリソースオブジェクトで,Content-Type HTTPヘッダが指定されていない場合,エンティティがnull以外のときは,このカラムで指定したContent-Typeを考慮して,HTTPリクエストのContent-Type HTTPヘッダを設定します。
エンティティがnullのときの動作は,HTTPリクエストをする前に,HttpURLConnectionオブジェクトにContent-Type HTTPヘッダを設定しないときの動作と同じです。

注※3
次に示す実装クラスを使用できます。
・javax.xml.transform.stream.StreamSource
・javax.xml.transform.sax.SAXSource
・javax.xml.transform.dom.DOMSource

注※4
MIMEメディアタイプがapplication/fastinfosetまたはapplication/jsonの場合,エラーにならないで正常終了します。

注※5
Tにはこの表の項番1から項番13,および項番15の型を指定できます。

注※6
JSON POJOマッピングを有効にしてください。JSON POJOマッピングが有効でない場合の動作は,サポートされないJava型がエンティティパラメタに指定された場合の動作と同じです。JSON POJOマッピングを有効にする方法については「18. JSON POJOマッピング」を参照してください。

注※7
Content-Type HTTPヘッダにcharsetパラメタを追加しないでください。

指定したJavaの型がサポートされていない型で,値がnullでない場合,エラーとなり(KDJJ10032-EおよびKDJJ18888-E),ClientHandlerExceptionがスローされます。ただし,指定したJavaの型がjavax.mail.internet.MimeMultipartで,MIMEメディアタイプがmultipart/*のときはエラーにならずに正常終了します。

次に示すJavaの型では,HTTPリクエストのエンティティボディが使用できないMIMEメディアタイプの場合,エラーとなり(KDJJ10032-EおよびKDJJ18888-E),ClientHandlerExceptionがスローされます。

  1. javax.xml.bind.JAXBElement<String>
  2. XmlRootElementアノテーションでアノテートされたJAXBクラス
  3. javax.ws.rs.core.MultivaluedMap<String, String>
  4. java.awt.image.RenderedImage
  5. POJO

ただし,1.または2.でHTTPリクエストのエンティティボディのMIMEメディアタイプがapplication/fastinfosetまたはapplication/jsonのときは,エラーにならないで正常終了します。

HTTPリクエストおよびHTTPレスポンスの処理中に例外が発生した場合,エラーとなり(KDJJ18888-E),その例外をラップしたClientHandlerExceptionがスローされます。

また,HTTPメソッドの種類によっては次の注意事項があります。