配置类的访问路径:
@Path(GlobalConstants.DBPROXY_SERVER_CONTEXT + "/" + Version._1 + "/attachment")
配置方法的访问路径:
获取get请求:
返回给客户端的是json类型
@Path("/get/{ID}")
@GET
@Produces("application/json")
public ServerResponse getAttachment(@PathParam(value = "ID") String ID)
获取post请求
@POST
public ServerResponse getAttachment(@FormParam(value = "ID") String ID)
获取put传输的文件:
@Context
使用@Context可以获取HttpServletRequest,HttpServletResponse。
@Path("/newAttach/{ID}")
@PUT
@Produces("application/json")
public ServerResponse newAttach(@PathParam("ID") String ID,@Context HttpServletRequest request) throws IOException{
Long requestTime = System.currentTimeMillis();
logger.info("@GET " + requestTime + " AttachmentResource.newAttach ID:" + ID );
ServerResponse sr = null;
InputStream in = null;
try {
in = request.getInputStream();
byte[] data = IOUtil.read(in);
AttachmentHelper.newAttach(ID,data);
sr = new ServerResponse("{\"isSuccess\":\"true\"}");
} catch (EOPException e) {
e.printStackTrace();
logger.error("EXCEPTION:" + e.getExceptionCode() + " CODE:" + e.getExceptionCode().getCode() + " MESSAGE:" + e.getMessage(), e);
sr = new ServerResponse(e.getMessage(), e.getExceptionCode());
}catch (Exception e) {
e.printStackTrace();
logger.error(e.getMessage(), e);
sr = new ServerResponse(e.getMessage(), ExceptionCode.DBPROXY_OTHER);
}
logger.info("@GET " + requestTime + " ServerResponse.newAttach sr:" + sr.toString() + " use:" + (requestTime - System.currentTimeMillis()));
return sr;
}
resteasy返回响应文件,在produces里可以写("*/*")可以表示任意文件,使用@context注解获取response。
@Path("/getAttach/{ID}")
@GET
@Produces("*/*")
public ServerResponse getAttach(@PathParam("ID") String ID,@Context HttpServletResponse response){
Long requestTime = System.currentTimeMillis();
logger.info("@GET " + requestTime + " AttachmentResource.getAttach ID:" + ID );
OutputStream outputStream = null;
ServerResponse sr = null;
byte[] data = null;
try {
outputStream = response.getOutputStream();
data = AttachmentHelper.getAttach(ID);
outputStream.write(data);
outputStream.flush();
outputStream.close();
} catch (EOPException e) {
e.printStackTrace();
logger.error("EXCEPTION:" + e.getExceptionCode() + " CODE:" + e.getExceptionCode().getCode() + " MESSAGE:" + e.getMessage(), e);
sr = new ServerResponse(e.getMessage(), e.getExceptionCode());
}catch (Exception e) {
e.printStackTrace();
logger.error(e.getMessage(), e);
sr = new ServerResponse(e.getMessage(), ExceptionCode.DBPROXY_OTHER);
}
logger.info("@GET " + requestTime + " ServerResponse.getAttach sr:" + sr.toString() + " use:" + (requestTime - System.currentTimeMillis()));
return sr;
}