Cosminexus V9 アプリケーションサーバ Webサービス開発ガイド
リソースメソッドの戻り値に使用できるJava型とMIMEメディアタイプの組み合わせを次の表に示します。戻り値はHTTPレスポンスのエンティティボディに変換されます。なお,POJOにJAXB仕様のアノテーションは使用しないでください。使用した場合,説明とは異なる動作になるおそれがあります。
表17-6 リソースメソッドの戻り値に使用できるJavaの型とMIMEメディアタイプの組み合わせ
| 項番 | Javaの型 | charset※1 | MIMEメディアタイプ |
|---|---|---|---|
| 1 | byte[] | × | 任意(*/*) |
| 2 | java.lang.String | ○ | 任意(*/*) |
| 3 | java.io.InputStream | × | 任意(*/*) |
| 4 | java.io.Reader | ○ | 任意(*/*) |
| 5 | java.io.File | × | 任意(*/*) |
| 6 | javax.activation.DataSource | × | 任意(*/*) |
| 7 | javax.xml.transform.Source※2 | × | text/xml, application/xml, application/*+xml |
| 8 | javax.xml.bind.JAXBElement<String>※3 | ○ | text/xml, application/xml, application/*+xml |
| 9 | XmlRootElementアノテーションでアノテートされたJAXBクラス※3 | ○ | text/xml, application/xml, application/*+xml |
| 10 | javax.ws.rs.core.MultivaluedMap<String, String> | ○ | application/x-www-form-urlencoded |
| 11 | javax.ws.rs.core.StreamingOutput | × | 任意(*/*) |
| 12 | org.w3c.dom.Document | × | text/xml, application/xml, application/*+xml |
| 13 | java.util.List<T>※4 | ○ | text/xml, application/xml, application/*+xml |
| 14 | java.awt.image.RenderedImage | × | image/jpeg |
| 15 | void | − | 任意(*/*) |
| 16 | javax.ws.rs.core.Response | ○ | 任意(*/*) |
| 17 | javax.ws.rs.core.GenericEntity<T>※5 | △ | Tに指定した型と同じMIMEメディアタイプです。 |
| 18 | POJO※6 | ×※7 | application/json |
戻り値とHTTPレスポンスの対応を次の表に示します。
表17-7 戻り値とHTTPレスポンスの対応
| 項番 | 戻り値 | HTTPレスポンス | ||
|---|---|---|---|---|
| 型 | 値 | HTTPステータスコード | エンティティボディ | |
| 1 | void | − | 204 | 空のエンティティボディ |
| 2 | Response | nullではないインスタンス | 200 | Responseのエンティティプロパティ |
| 3 | null | 204 | 空のエンティティボディ | |
| 4 | String | nullではないインスタンス | 200 | Stringの値 |
| 5 | null | 204 | 空のエンティティボディ | |
| 6 | void,Response,String以外のサポートしているJavaの型 | nullではないインスタンス | 200 | 戻り値のクラスに応じて変換されたエンティティボディ |
| 7 | null | 204 | 空のエンティティボディ | |
戻り値の型がサポートされないJavaの型の場合,エラーとなり(KDJJ10026-E),HTTPステータスコードに500が設定された,例外マッピングプロバイダで処理できるjavax.ws.rs.WebApplicationExceptionがスローされます。ただし,戻り値の型がjavax.mail.internet.MimeMultipartで,MIMEメディアタイプがmultipart/*のときは,エラーにならないで正常終了します。
HTTPレスポンスのエンティティボディへの変換で例外が発生した場合,エラーとなります。例外の処理については「17.1.8 例外ハンドリング」を参照してください。
戻り値の型が次に示すJavaの型で,HTTPレスポンスのエンティティボディが使用できないMIMEメディアタイプの場合,エラーとなり(KDJJ10026-E),HTTPステータスコードに500が設定された,例外マッピングプロバイダで処理できるjavax.ws.rs.WebApplicationExceptionがスローされます。
ただし,1.または2.でHTTPリクエストのエンティティボディのMIMEメディアタイプがapplication/fastinfosetまたはapplication/jsonのときは,エラーにならないで正常終了します。
次に示す戻り値の場合,警告メッセージまたはエラーメッセージがログに出力されます(KDJJ20003-WまたはKDJJ10006-E)。KDJJ20003-WとKDJJ10006-Eについては,「13.7.1 Webリソース初期化時の構文チェック(KDJJ20003-WとKDJJ10006-E)」を参照してください。
All Rights Reserved. Copyright (C) 2012, 2015, Hitachi, Ltd.