如何从ear / war / jar读取文件?

时间:2012-12-21 12:38:04

标签: java file jax-rs war ear

我有EAR,其中包含另一个WAR。项目结构如下所示:

project.ear
 |-- lib
 |-- META-INF
 |-- project-web.war
 |    |-- META-INF
 |    |-- WEB-INF
 |    |    |-- classes
 |    |    |    `-- com
 |    |    |         `-- example
 |    |    |              `-- services
 |    |    |                   `-- ListPageService.class
 |    |    |-- lib
 |    |    |-- web.xml
 |    |    `-- weblogic.xml
 |    `-- content.html
 `-- project-services.jar

在WAR中,有一个JAX-RS类ListPageService需要读取content.html文件。我如何访问该文件?

2 个答案:

答案 0 :(得分:2)

编辑:此答案不再适用于现在制定的问题。建议的方法仅用于从类路径获取资源。

查看Class.getResourceAsStream方法。它允许您访问类路径中找到的文件。

答案 1 :(得分:2)

获取WAR文件中资源的常用方法是ServletContext.getResourcegetResourceAsStream。您应该能够通过声明使用ServletContext

注释的字段来访问JAX-RS类中的javax.ws.rs.core.Context
@Context ServletContext servletContext;

然后在请求处理方法中你可以说

URL content = servletContext.getResource("/content.html");
// alternatively
// InputStream content = servletContext.getResourceAsStream("/content.html");