使用Java Jersey返回现有文件

时间:2014-01-21 15:46:40

标签: java-ee jersey-2.0

我目前正在使用绝对路径返回Java jersey的文件,如下所示

@Path("/database")
@Stateful
public class DBResource
{
        @GET
        @Path("/get/7zip")
        @Produces("application/7z")
        public StreamingOutput getDatabase()
        {
            java.io.File file = new java.io.File("/home/jack.jude/myfile.7z");
            return new FileStreamingOutput(file);
        }
}

我想知道如何在考虑到

的情况下从应用程序中返回资源
Thread.currentThread().getContextClassLoader().getResource("");

不返回有意义的路径和

   String rootPath = getServletConfig().getServletContext().getRealPath("/");

无法使用,因为我不是在servlet中,而是在Resource中。

1 个答案:

答案 0 :(得分:0)

可以在资源中注入ServletContext

@Path("/database")
@Stateful
public class DBResource {

    @Context
    private ServletContext servletContext;

    @GET
    @Path("/get/7zip")
    @Produces("application/7z")
    public StreamingOutput getDatabase() {
        servletContext.getRealPath(...);

        ...
    }
}