リソースメソッドの戻り値に使用できる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)」を参照してください。