如何使用CXF RSET service return图片

我前两天遇到一个棘手的问题,需求是要求在浏览器上面直接用GET方法调用我的service程序可以看到图片。如http://xxxx.xxx/read/image/4_pic.jpg
所以这就要求我在service的返回值上面要做成一个return InputStream..于是我上网搜索,看到http://www.romanlogic.com/rest-service-for-images-using-apache-cxf/ 这篇文章是讲如何返回image的,所以写下了如下的代码
@GET
@Path("/{name}")
@Produces("image/jpg")
public InputStream readImage(@PathParam("name") String name ){
log.debug("Try to load image [name:"+name+" ]from DB");
log.debug("begin transaction");
imageDAO.beginTransaction();
byte[] b;
InputStream is = null;
try {
b = imageProcessService.loadImage(name);
log.debug("commit transaction");
imageDAO.commitTransaction();
is = new ByteArrayInputStream(b);
return is;
} catch (Throwable e) {
log.warn(e);
log.debug("rollback transaction");
imageDAO.rollbackTransaction();
return null;
}

}


但问题是,每当我调用这个API的时候,机器一直发出很奇怪的叫声,估计是内存在那里叫。
于是我怀疑了其中各个环节,最后才发现原来System.out.println("\007");可以让机器发出蜂鸣般的叫声。而CXF自身的LOG会把response 的payload内容log下来,所以我猜测图片的二进制信息中时不时的会有'\007',而log的同时,机器也不停的发出蜂鸣般的叫声,而机器不死机,叫完就没事了。。。
于是我最后把cxf 的那段log关了,于是,一切安好。。。问题解决。。。可喜可贺。。。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值