- 选项 1:您可以尝试部署一个单独的已分解 .war 文件,并将其用于您的静态内容
在您的情况下:.../jboss-7/standalone/deployments/
必须有一个static.war/
.
所以上传到这个目录,内容以正常方式返回。
详情见Is it possible to deploy an exploded war file (unzipped war) in JBoss AS 7
正如 BalusC 所指出的:一旦上传数据,您就不能重新部署/删除此目录。您应该定期备份此目录。
据我所知,这是仅通过配置/设置来实现的唯一可能性。
- 选项 2:使用 name 创建单独的 webapp
static.war
。添加servlet 以流式传输静态内容
这样就不需要将文件上传/存储到下面的文件系统中../deployments/
,它可以是任何目录,但你需要一个额外的 servlet,所以它以编程方式解决。
一个简单的流式 servlet 可能看起来像这样(只是流式传输 - 没有身份验证等):
public class DownloadServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
final File dir = new File("/var/cms/storage/");
final String start = "/static/";
final String relativePath = request.getRequestURI().substring(
request.getRequestURI().indexOf(start) + start.length());
final File file = new File(dir, relativePath);
final String ct = URLConnection.guessContentTypeFromName(file.getName());
response.setContentType(ct);
final InputStream is =
new BufferedInputStream(new FileInputStream(file));
try {
final boolean closeOs = true;
org.apache.commons.fileupload.util.Streams.copy
(is, response.getOutputStream(), closeOs);
} finally {
is.close();
}
}
将所有 URL 映射到此 servlet:
<servlet-mapping>
<servlet-name>DownloadServlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
该名称static.war
提供了/static/
Web 上下文,因此应使其与代码中的 URL 兼容。