17.1.3 戻り値
リソースメソッドの戻り値に使用できるJava型とMIMEメディアタイプの組み合わせを次の表に示します。戻り値はHTTPレスポンスのエンティティボディに変換されます。なお,POJOにJAXB仕様のアノテーションは使用しないでください。使用した場合,説明とは異なる動作になるおそれがあります。
項番 |
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レスポンスの対応を次の表に示します。
項番 |
戻り値 |
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がスローされます。
-
javax.xml.bind.JAXBElement<String>
-
XmlRootElementアノテーションでアノテートされたJAXBクラス
-
javax.ws.rs.core.MultivaluedMap<String, String>
-
java.util.List<T>
-
java.awt.image.RenderedImage
ただし,1.または2.でHTTPリクエストのエンティティボディのMIMEメディアタイプがapplication/fastinfosetまたはapplication/jsonのときは,エラーにならないで正常終了します。
次に示す戻り値の場合,警告メッセージまたはエラーメッセージがログに出力されます(KDJJ20003-WまたはKDJJ10006-E)。KDJJ20003-WとKDJJ10006-Eについては,「13.7.1 Webリソース初期化時の構文チェック(KDJJ20003-WとKDJJ10006-E)」を参照してください。
-
GET要求メソッド識別子を持つリソースメソッドの戻り値の型がvoidの場合
-
戻り値の型パラメタが解決できない場合