StreamingOutput.java
импорт java.io.IOException; импорт java.io.OutputStream; импорт javax.ws.rs.WebApplicationException; / ** * Тип , который может быть использован в качестве возвращаемого значения методы ресурса или в качестве объекта * в { @link Response} , когда приложение Желающие потока на выходе. * Это легкий альтернатива * { @link javax.ws.rs.ext.MessageBodyWriter}. * * @Author Paul Sandoz * @author Марк Хэдли * @see javax.ws.rs.ext.MessageBodyWriter * @see javax.ws.rs.core.Response *@since 1,0 * / публичный интерфейс StreamingOutput { / ** * Вызывается , чтобы написать тело сообщения. * * @Param выводить OutputStream для записи. * @Throws java.io.IOException если обнаружена ошибка IO * @throws javax.ws.rs.WebApplicationException * если конкретный * ошибочный ответ HTTP должен быть произведен. Действует только если брошено до * на любые байты записываются в выходной. * / Недействительные записи (выход OutputStream) бросаетIOException, WebApplicationException; }
процесс преобразования
// по информации пациента запрос Фото ID @Override общественного StreamingOutput getPatientPhotoByPatientId (String patientId) { // получить информацию о пациенте внутри фотографий и информации по отпечаткам пальцев содержащегося типа сгустка PatInfoNote patInfoNote = strictFindByPrimaryKey (PatInfoNote. Класс , patientId, «неопределенный найти информацию о пациенте patientId " ); IF (patInfoNote.getPatientPhotograph () == NULL ) { вбрасывание новый новый NotFoundException (string.Format (" информация о снимке пациента существует patientId [% S] " , patientId)); } streamingOutput streamingOutput = нуль ; попробовать { / / процесс преобразования streamingOutput =StringUtils.getStreamingOutputByBlob (patInfoNote.getPatientPhotograph ()); } Задвижка (SystemException е) { бросить новый SystemException ( "读取患者照片失败" ); } Вернуть streamingOutput; } // ------- общественности статический StreamingOutput getStreamingOutput ( окончательный InputStream в) броски IOException { StreamingOutput поток = новый StreamingOutput () { общественного недействительными записи (OutputStream уходит) бросает IOException, WebApplicationException { попробовать{ Int чтения = ложь ; байт [] байт = новый байт [1024 ]; INT readx; в то время как ((readx = in.read (байт)) = -1! ) { out.write (байт, 0 , readx); } } Улов (Исключение var4) { бросить новый IOException ( "文件流读取失败:" + var4.getMessage (), var4); } } }; возврат потока; } Общественности статическойStreamingOutput getStreamingOutputByBlob (Blob блоб) бросает RuntimeException { StreamingOutput streamingOutput = NULL ; попробуйте { streamingOutput = getStreamingOutput (blob.getBinaryStream ()); вернуться streamingOutput; } Задвижка (Исключение var3) { бросить новый RuntimeException ( "读取数据流失败" , var3); } }