У меня есть таблица с полем CLOB (MySQL MediumText).
Я хочу вернуть поток ввода в этот CLOB.
Мой код ресурса выглядит так:
@GET
public StreamingOutput getAsStream(int id) {
try {
// prepare the statement object
ResultSet rs = stmt.executeQuery();
if (rs.next()) return new StreamingOutput() {
public void write(OutputStream outputStream) throws ... {
copy(rs.getBinaryStream(1), outputStream);
}
}
}
finally {
rs.close();
stmt.close();
connection.close();
}
}
Что выглядит не так. Код закрывает ресурсы базы данных (набор результатов, оператор и соединение), прежде чем Джерси сможет записать поток в ответ.
Я могу закрыть ресурсы БД в методе StreamingOutput.write
. Но это также не правильно - я позволяю некоторому внешнему контейнеру закрыть мои ресурсы.
Последняя идея, которую я могу придумать, - это прочитать весь поток в память и затем отправить его. Я не хочу делать это, конечно.
Так, у кого-нибудь есть идеи получше?
Я проверил Вернуть файл, используя Java-Джерси , который не сильно помог.
Спасибо,
Дорон